ActionScript 3.0 学习(十二) AS3 模拟打地鼠小游戏

来源:互联网 发布:mysql update limit 编辑:程序博客网 时间:2024/06/15 05:11

        有问题请联系qq:1031885567,注明csdn加好友。 

        本节做了一个模拟打地鼠小游戏,可以学习其中将各个方格用统一的类来管理,同时需要注意的是在将子原件移除掉时,也相应需要将其在数组中splice掉。以下为对应程序:

        

package{import flash.display.MovieClip;import flash.display.Sprite;import flash.events.MouseEvent;public class ItemManage extends Sprite{private var _container:MovieClip;private var _circleEffect:MovieClip;private var _rightMark:MovieClip;private var _itemIcons:Vector.<ItemIcon>;private var _nameArray:Array = ["item_0", "item_2", "item_5", "item_4", "item_6","item_10", "item_8", "item_7", "item_3", "item_11", "item_12", "item_9", "item_14", "item_16", "item_17","item_13", "item_23", "item_24", "item_18", "item_19","item_22", "item_20", "item_15", "item_21", "item_1"];public function ItemManage(){_container = new ItemContainerUI();_circleEffect = new circleUI();_rightMark = new DuiGouUI();_itemIcons = new Vector.<ItemIcon>;var length:int = _container.numChildren;for(var i:int = 0; i < length; i++){var itemIconMC:MovieClip = _container.getChildByName(_nameArray[i]) as MovieClip;_itemIcons[i] = new ItemIcon(itemIconMC);_itemIcons[i].addEventListener(MouseEvent.CLICK, onClickIcon);}_itemIcons[3].selected = true;_itemIcons[10].addChildItem(new circleUI(), 33, 33);_itemIcons[10].enableMouse(true);addChild(_container);}private function onClickIcon(e:MouseEvent):void{var index:int = _nameArray.indexOf(e.currentTarget.skin.name);_itemIcons[index].removeChildItem();_itemIcons[index].enableMouse(false);_itemIcons[index].selected = true;var num:int = Math.floor(Math.random() * 25);_itemIcons[num].addChildItem(new circleUI(), 33, 33);_itemIcons[num].enableMouse(true);}}}import flash.display.MovieClip;import flash.events.EventDispatcher;import flash.events.MouseEvent;class ItemIcon extends EventDispatcher{private var _skin:MovieClip;private var _selected:Boolean;private var _selectedMC:MovieClip;private var _selectedMCName:String;private var _addedChild:Vector.<MovieClip>;public function ItemIcon(skin:MovieClip){_skin = skin;_skin.mouseEnabled = false;_skin.buttonMode = false;_addedChild = new Vector.<MovieClip>;}public function get skin():MovieClip{return _skin;}public function set selected(value:Boolean):void{_selected = value;if(value){if(_selectedMC == null){_selectedMC = new DuiGouUI();_selectedMCName = _selectedMC.name;_selectedMC.x = _skin.width / 2;_selectedMC.y = _skin.height /2;_skin.addChild(_selectedMC);}}else{if(_selectedMC){_skin.removeChild(_selectedMC);_selectedMC = null;}}}public function enableMouse(value:Boolean):void{if(value){_skin.buttonMode = true;_skin.mouseEnabled = true;_skin.addEventListener(MouseEvent.CLICK, onClick);}else{_skin.mouseEnabled = false;_skin.buttonMode = false;if(_skin.hasEventListener(MouseEvent.CLICK)){_skin.removeEventListener(MouseEvent.CLICK, onClick);}}}public function addChildItem(mc:MovieClip, x:int ,y:int):void{mc.x = x;mc.y = y;_skin.addChild(mc);_addedChild.push(mc);}public function removeChildItem():void{for(var i:int = 0; i < _addedChild.length; i++){if(_addedChild[i].name != _selectedMCName){_skin.removeChild(_addedChild[i]);_addedChild.splice(i,1);i--;}}}private function onClick(event:MouseEvent):void{dispatchEvent(new MouseEvent(MouseEvent.CLICK));}public function dispose():void{_skin = null;_selectedMC = null;_addedChild = null;if(_skin.hasEventListener(MouseEvent.CLICK)){_skin.removeEventListener(MouseEvent.CLICK, onClick);}}}

以下为运行结果:


0 0
原创粉丝点击