solts--flash builder

代码没有进行任何整合和优化。算法比较重要;

package move
{
	import flash.display.BitmapData;
	import flash.display.Sprite;

	public class Tile extends Sprite
	{
		/**
		 * 单元实体类
		 * */
		/**
		 * 位图数据
		 * */
		private var _bit:BitmapData;
		/**
		 * 名称
		 * */
		private var _m_type:String="";
		
		public function Tile(_bit:BitmapData)
		{
			_bit=_bit;
			this.graphics.beginBitmapFill(_bit);
			this.graphics.drawRect(0,0,32,32);
			this.graphics.endFill();			
		}
		
		public function get m_type():String
		{
			return _m_type;
		}

		public function set m_type(value:String):void
		{
			_m_type = value;
		}

		public function get bit():BitmapData
		{
			return _bit;
		}

		public function set bit(value:BitmapData):void
		{
			_bit = value;
		}

	}
}
package move
{
	import com.greensock.TweenMax;
	import com.greensock.easing.Back;
	import com.greensock.easing.Bounce;
	
	import flash.display.Sprite;
	import flash.events.Event;
	
	import mx.controls.Alert;
	import mx.core.UIComponent;

	public class View extends UIComponent
	{
		public var MoveBol:Boolean=false;
		private var maskSprite:Sprite;
		public var sourceArr:Array=[];
		private var line:Sprite;
		private var TypeArr:Array=[];
		
		private var solt_index:int=0;
		
		public function View()
		{
			SetView();
			
			this.addEventListener(SoltsEvent.STOP_MOVE,ViewStopMoveHandler);
		}
		/**
		 * 初始化设置 位置
		 * */
		private function SetView():void
		{
			for(var i:int=0;i<5;i++)
			{
				var vs:ViewSource=new ViewSource();			
				vs.x=200+i*50;
				vs.y=300;
				vs.index=i;
				vs.interSpeed = 0.1 + Math.random() * 0.4;
				sourceArr.push(vs);
				this.addChild(vs);
			}
			CreatMask();
			SetLine();
		}
		public function setMoveType():void
		{
			
			if(MoveBol)
			{
				setType(1);
				TypeArr=[];
			}
			else
			{
				setType(2);
			}
		}
		/**
		 * 设置不同状态 加速或者减速
		 * */
		private function setType(ii:uint=0):void
		{
			for(var i:uint=0;i<sourceArr.length;i++)
			{
				var vs:ViewSource=sourceArr[i] as ViewSource;
				vs.type=ii;
				vs.Start();
			}
		}
		/**
		 * 设置遮罩
		 * */
		private function CreatMask():void
		{
			maskSprite=new Sprite();
			maskSprite.graphics.beginFill(0x000000);
			maskSprite.graphics.drawRect(100,300,400,332);
			maskSprite.graphics.endFill();
			this.mask=maskSprite;
		}
		/**
		 * 画两条线
		 * */
		private function SetLine():void
		{
			line=new Sprite();
			line.graphics.lineStyle(2);
			line.graphics.beginFill(0,0);
			line.graphics.drawRect(100,445,400,40);
			
			line.graphics.endFill();
			this.addChild(line);
		}
		private function ViewStopMoveHandler(event:SoltsEvent):void
		{
			
			var arr:Array=event.info as Array;
			var type:String=arr[0];
			

		}

	}
}
package move
{
	import com.greensock.TweenMax;
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	
	/**
	 * 一列的数组实体类
	 * */
	public class ViewSource extends Sprite
	{
		public var BitSourceArr:Array=[];
		public var speed:Number=6;
		public var interSpeed:Number=0.3;
		/**
		 * 开关?控制加速或者减速
		 * */
		public var type:uint=0;
		/**
		 * 最大最小高度
		 * */
		private var maxHeight:Number;
		private var minHeight:Number;
		/**
		 * 在第几列?
		 * */
		public var index:int=0;
		public function ViewSource()
		{
			setViewTile();
		}
		/**
		 * 设置type状态
		 * */
		public function setViewTile():void
		{
			for(var i:int=0;i<8;i++)
			{
				var how:int=Math.floor(i/4);
				var sow:int=i%4;
				var tile:Tile=new Tile(GetBitmapDataClass.GetBitmapData(sow*3,how*4));
				switch(i)
				{
					case 0:
						tile.m_type="小船";
						break;
					case 1:
						tile.m_type="帆船";
						break;
					case 2:
						tile.m_type="气球";
						break;
					case 3:
						tile.m_type="飞艇";
						break;
					case 4:
						tile.m_type="车马";
						break;
					case 5:
						tile.m_type="帐篷";
						break;
					case 6:
						tile.m_type="空车";
						break;
					case 7:
						tile.m_type="满车";
						break;
				}
				BitSourceArr.push(tile);
			}
			BitSourceArr=this.setBitArray(BitSourceArr);
			
			setLocation();
			
			this.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler);
		}
		/**
		 * 打乱数组排序
		 * */
		private function setBitArray(_ba:Array):Array
		{
			var length:uint=_ba.length;
			var temp1:Array=[];
			for(var i:int=0;i<length;i++)
			{
				temp1.push(i);
			}
			var temp2:Array=[];
			for(var ii:int=0;ii<length;ii++)
			{
				temp2[ii]=temp1.splice(Math.random()*temp1.length,1);
			}
			var temp3:Array=[];
			for(var iii:int=0;iii<length;iii++)
			{
				temp3[iii]=_ba[temp2[iii]];
			}
			return temp3;
		}
		/**
		 * 设置一列的各个位置
		 * */
		private function setLocation():void
		{
			for(var i:int=0;i<BitSourceArr.length;i++)
			{
				var tile:Tile=BitSourceArr[i] as Tile;
				tile.y=i*50;
				this.addChild(tile);
			}
			maxHeight=300;
			minHeight=0;
		}
		/**
		 * 开始加速
		 * */
		public function StartMove():void
		{
			speed+=interSpeed;
			if(speed>=20)
			{
				speed=20;
			}
			
		}
		/**
		 * 开始减速
		 * */
		public function StopMove():void
		{
			
			if(speed>1)
			{
				speed-=interSpeed;
			}
			else
			{
				/**
				 * 算法
				 * */
				if( BitSourceArr[1].y > 0 ){
					speed = 1;
				}else{
					speed=0;
					this.removeEventListener(Event.ENTER_FRAME,OnEnterFrameHandler);
					this.parent.dispatchEvent(new SoltsEvent([Tile(BitSourceArr[4]).m_type,this.index],SoltsEvent.STOP_MOVE));
					
					trace("发送:  "+Tile(BitSourceArr[4]).m_type);
				}
			}
		}
		public function Start():void
		{
			this.addEventListener(Event.ENTER_FRAME,OnEnterFrameHandler);
		}
		private function OnEnterFrameHandler(event:Event):void
		{
			for(var i:int=0;i<BitSourceArr.length;i++)
			{
				var tile:Tile=BitSourceArr[i] as Tile;
				tile.y-=speed;
			}
			if(type==1)
			{
				this.StartMove();
			}
			else if(type==2)
			{
				StopMove();
				
			}
			if(Tile(BitSourceArr[0]).y<=-50)
			{
				var firstOne:Tile = BitSourceArr.shift();
				var lastOne:Tile = BitSourceArr[BitSourceArr.length-1];
				firstOne.y = lastOne.y + 50;
				BitSourceArr.push( firstOne );
			}
		}
		private function MouseDownHandler(event:MouseEvent):void
		{
			if(event.target is Tile)
			{
				trace(BitSourceArr.indexOf(event.target)+"---"+Tile(event.target).m_type);
			}
		}
	}
}
package move
{
	import flash.events.Event;

	public class SoltsEvent extends Event
	{
		public var info:*;
		public static const STOP_MOVE:String="stop_move";
		public function SoltsEvent(_info:*,eventname:String)
		{
			super(eventname);
			this.info=_info;
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import move.GetBitmapDataClass;
			import move.Tile;
			import move.View;
			import move.ViewSource;
			
			import mx.core.UIComponent;
			private var view:View;
			private function init():void
			{
				view=new View();
				addElement(view);
			}
			private function MoveHandler():void
			{
				
				view.MoveBol=!view.MoveBol;
				view.setMoveType();
			}

		]]>
	</fx:Script>
	<s:Button x="596" y="170" label="按钮"  click="MoveHandler()"/>
</s:Application>

图形:

posted @ 2011-07-28 10:16  懵懵懂懂的it人生  阅读(276)  评论(0编辑  收藏  举报