Demo 背包结构

主类:
package
{
import com.ItemManage;
import flash.display.Sprite;
public class PackTest extends Sprite
{
private var idList1:Array;
private var idList2:Array;
public function PackTest()
{
init();
}
/**
* 初始化
*/
public function init():void
{
idList1 = new Array();
idList2 = new Array();
var box:DragItemBlock;
// 初始16个防止道具的位置
for (var i:int = 0; i < 16; i++)
{
box = new DragItemBlock();
box.location = i;
box.type = 0;
box.x = int(i % 4) * 60 + 20;
box.y = int(i / 4) * 60 + 20;
addChild( box );
idList1.push( box );
box = new DragItemBlock();
box.location = i;
box.type = 1;
box.x = int(i % 4) * 60 + 300;
box.y = int(i / 4) * 60 + 20;
addChild( box );
idList2.push( box );
}
var item:ItemManage;
var mc:Class;
// swc 内的20个 图像
var arr:Array = [lol0,lol1,lol2,lol3,lol4,lol5,lol6,lol7,lol8,lol9,lol10,lol11,lol12,lol13,lol14,lol15,lol16,lol17,lol18,lol19];
for (var j:int = 0; j < 10; j++)
{
mc = arr[j] as Class;
item = new ItemManage(1000 + j,int(Math.random() * 20) + 1, 0, new mc());
idList1[j]._itemEntity = item;
mc = arr[j] as Class;
item = new ItemManage(1050 + j, int(Math.random() * 20) + 1,1,new mc());
idList2[j]._itemEntity = item;
}
}
}
}
DragItemBlock :↓
package
{
import com.ItemManage;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;
public class DragItemBlock extends Sprite
{
public static var itemBlockSrc:DragItemBlock;
public static var itemBlockDis:DragItemBlock;
public static var pointSrc:Point;
public static var pointDis:Point;
public static var sprite:Sprite;
public static var sBmp:Bitmap;
public static var sPoint:Point;
public static var isDrag:Boolean;
private var itemEntity:ItemManage;
public var bmp:Bitmap = new Bitmap();
public var location:int;
public var type:int;
public function DragItemBlock()
{
bmp.x = bmp.y = 2;
var bmpContainer:BmpContainers = new BmpContainers();
bmpContainer.addChild( bmp );
addChild( bmpContainer );
addEventListener(MouseEvent.MOUSE_DOWN,toDown);
addEventListener(MouseEvent.MOUSE_UP,toUp);
}
/**
* 开始拖拽
*
*/
private function beginDrag():void
{
if(!sprite){
sprite = new Sprite();
sBmp = new Bitmap();
sprite.addChild( sBmp );
sprite.cacheAsBitmap = true;
sprite.mouseEnabled = false;
stage.addChild( sprite );
}
sPoint = localToGlobal( new Point(mouseX,mouseY));
sprite.x = sPoint.x - pointSrc.x + 3;
sprite.y = sPoint.y - pointSrc.y + 3;
sBmp.bitmapData = itemBlockSrc._itemEntity.bmpd;
itemBlockSrc.bmp.bitmapData = null;
isDrag = true;
sprite.startDrag();
sprite.visible = true;
stage.addEventListener(MouseEvent.MOUSE_UP,toStageUp);
}
/**
* 结束 舞台 抬起鼠标
* @param event
*
*/
private function toStageUp(event:MouseEvent):void
{
if(isDrag){
itemBlockSrc.update();
endDrag();
}
}
/**
* 结束拖拽
*
*/
private function endDrag():void
{
sprite.stopDrag();
itemBlockDis = null;
itemBlockSrc = null;
pointSrc = null;
pointDis = null;
isDrag = false;
sprite.visible = false;
}
/**
* 鼠标按下
* @param event
*
*/
private function toDown(event:MouseEvent):void
{
itemBlockSrc = this;
if(itemBlockSrc._itemEntity == null)return;
pointSrc = new Point(event.localX,event.localY);
// start Drag
beginDrag();
}
/**
* 鼠标抬起
* @param event
*
*/
private function toUp(event:MouseEvent):void
{
if(isDrag){
pointDis = new Point(event.localX,event.localY);
itemBlockDis = this;
var itemSrc:ItemManage;
var itemDis:ItemManage;
trace(itemBlockSrc != itemBlockDis);
if((itemBlockSrc != itemBlockDis) && (itemBlockSrc.type == itemBlockDis.type)){
itemSrc = itemBlockSrc._itemEntity;
itemDis = itemBlockDis._itemEntity;
itemBlockSrc._itemEntity = itemDis;
itemBlockDis._itemEntity = itemSrc;
}else itemBlockSrc.update();
sprite.visible = false;
itemBlockDis.removeListener();
itemBlockSrc.removeListener();
}
}
public function update():void
{
if(itemEntity == null)return;
bmp.bitmapData = itemEntity.bmpd;
}
public function get _itemEntity():ItemManage
{
return itemEntity;
}
public function set _itemEntity(value:ItemManage):void
{
itemEntity = value;
if(value == null){
bmp.bitmapData = null;
}else{
bmp.bitmapData = value.bmpd;
}
}
/**
* 删掉舞台侦听器
*
*/
public function removeListener():void
{
stage.removeEventListener(MouseEvent.MOUSE_UP,toStageUp);
}
}
}
ItemManage:↓
package com
{
import flash.display.BitmapData;
public class ItemManage
{
public var id:int;
public var count:int;
public var location:int;
public var bmpd:BitmapData;
public function ItemManage(_id:int, _count:int, _location:int, _bmpd:BitmapData)
{
id = _id;
count = _count;
location = _location;
bmpd = _bmpd;
}
}
}

3856

被折叠的 条评论
为什么被折叠?



