ActionScript 3.0 學習(十二) AS3 模擬打地鼠小遊戲

        有問題請聯繫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);
		}
	}
}

以下爲運行結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章