自定义PickerList

本文介绍了一个使用ActionScript实现的游戏分类选择器。该选择器包括一个可滚动的容器,用于展示不同类别的游戏选项,并通过按钮点击触发类别切换。文章详细展示了如何创建分类按钮、文本字段及滚动容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

block文件:
package test.contributionlist
{
   

    public class CustomerPickerListBlock extends Sprite
    {
        public function CustomerPickerListBlock(title:String,index:int)
        {
            super();
//			import com.demonsters.debugger.MonsterDebugger;
//			MonsterDebugger.initialize(this);
			
            this.titleStr = title;
            this.index = index;
            createPlayerBlock();
        }
        public var title:TextField;
        public var subjectBg:Image;
        public var categoryBtn:Button;
		
		private var index:int;
        public var titleStr:String;
 
		public static const textureName:String="QuestionBankView";
		
        public function createPlayerBlock():void
        {
            title = new TextField(320,36,Util.sliceToMax(titleStr,10),'jt_XML',18,0xffffffff,true);
            title.hAlign = HAlign.LEFT;
			title.vAlign=VAlign.TOP;
			title.x=100;
			title.y=27;
			title.touchable=false;

			categoryBtn=new Button();
			categoryBtn.defaultSkin=new Image(Assets.getTextureAtlas(textureName).getTexture("类别"+(index+1)));
			categoryBtn.addEventListener(Event.TRIGGERED, btnClickedHandler);
			
			this.addChild(categoryBtn);
			this.addChild(title);
        }
		
		private function btnClickedHandler(event:Event):void
		{
			SoundController.getInstance().playBtnDown();
			var obj:Object={};
			obj.index=this.index;
			obj.title=this.titleStr;
			trace("clicked index is:"+index+"obj.title is :"+obj.title);
			this.dispatchEventWith("buttonClicked",true,obj);
		}
		
		//关闭鼠标事件监听
		public function removeListeners():void
		{
			subjectBg.removeEventListener(Event.TRIGGERED, btnClickedHandler);
		}
	
		public override function dispose():void
		{
			super.dispose();
			removeListeners();
			//if(ContributionImg)ContributionImg.dispose();
		}
    }
}

CustomerPickerList文件:

package test.component
{

	public class CustomerPickerList extends Sprite
	{
		[Dispatcher]
		public var dispatcher:EventDispatcher;
		
		[Inject]
		
		public var listSprite:Sprite;
		public static const textureName:String="QuestionBankView";
		public var categoryBtn:Button;//请设置分类 按钮
		public var title:TextField;//请设置分类 文字
		public var titleStr:String;
		public var isfirst:Boolean;
		public function CustomerPickerList()
		{
			super();
			  import com.demonsters.debugger.MonsterDebugger;
			  MonsterDebugger.initialize(this);
			//var image:Image = new Image( Assets.getTexture("changjing1"));
			//this.addChildAt(image,0)
			this.addEventListener("buttonClicked", btnClickedHandler2);
			init();
		}
		public function init():void
		{
			isfirst=true;
			categoryBtn=new Button();
			categoryBtn.defaultSkin=new Image(Assets.getTextureAtlas(textureName).getTexture("类别1"));
			categoryBtn.addEventListener(Event.TRIGGERED, btnClickedHandler);
			this.addChild(categoryBtn);

			titleStr="请设置分类";
			title = new TextField(320,36,Util.sliceToMax(titleStr,10),'jt_XML',18,0xffffffff,true);
			title.hAlign = HAlign.LEFT;
			title.vAlign=VAlign.TOP;
			title.x=100;
			title.y=27;
			title.touchable=false;
			this.addChild(title);
		}
		override public function dispose():void
		{
			super.dispose();
		}
		
		private function btnClickedHandler(event:Event):void
		{
			if(isfirst){
				createContainer();
				var obj1:Object = {"title":"类1","index":0};
				var obj2:Object = {"title":"类2","index":1};
				var obj3:Object = {"title":"类3","index":2};
				var obj4:Object = {"title":"类4","index":3};
				var array:Array=new Array(obj1,obj2,obj3,obj4);
				for(var i:int=0; i<array.length; i++)
				{
					var obj:Object = array[i];
					var tmpRank:CustomerPickerListBlock = new CustomerPickerListBlock(obj.title,obj.index);
					ListContainer.addChild(tmpRank);
				}
				this.addChild(ListContainer);
				isfirst=false;
			}
		}
		private function btnClickedHandler2(event:Event):void
		{
			//SoundController.getInstance().playBtnDown();
			var obj:Object = event.data;
			var index:int = obj.index;
			trace("clicked catebtn and is :"+index);
			categoryBtn.defaultSkin=new Image(Assets.getTextureAtlas(textureName).getTexture("类别"+(index+1)));
			trace("titlestr :"+obj.title);
			title.text=obj.title;
			ListContainer.removeChildren(0,-1);
			this.removeChild(ListContainer);
			isfirst=true;
		}
		public var ListContainer:ScrollContainer;
		
		public function createContainer():void
		{
			const layout:VerticalLayout = new VerticalLayout();
			layout.gap = -2;
			layout.paddingTop = 5;
			layout.paddingRight = 0;
			layout.paddingBottom = 0;
			layout.paddingLeft = 0;
			layout.horizontalAlign = VerticalLayout.HORIZONTAL_ALIGN_LEFT;
			layout.verticalAlign = VerticalLayout.VERTICAL_ALIGN_TOP;
			
			ListContainer = new ScrollContainer();
			ListContainer.x = 0;
			ListContainer.y = 60;
			ListContainer.width  = 304;
			ListContainer.height = 350;
			ListContainer.layout = layout;
			//when the scroll policy is set to on, the "elastic" edges will be
			//active even when the max scroll position is zero
			ListContainer.scrollerProperties.verticalScrollPolicy = Scroller.SCROLL_POLICY_ON;
			ListContainer.scrollerProperties.horizontalScrollPolicy = Scroller.SCROLL_POLICY_OFF;
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值