Flash AS3教程:Level2D类

2019-10-08 16:35:48王冬梅

l2.isTime = true;

function levelResetFun(e:Level2DEvent){
trace(l2.getDisplay("x"));//获取当前所有对象的x属性
trace(l2.getDisplay({y:0,x:0}));//获取当前所有对象,xy属性都等于0的对象
/**
*输出:
*137,0,229
*[object MovieClip]
*/
}

mc1.addEventListener(MouseEvent.MOUSE_DOWN,funa);
mc2.addEventListener(MouseEvent.MOUSE_DOWN,funa);
mc3.addEventListener(MouseEvent.MOUSE_DOWN,funa);

mc1.addEventListener(MouseEvent.MOUSE_UP,funb);
mc2.addEventListener(MouseEvent.MOUSE_UP,funb);
mc3.addEventListener(MouseEvent.MOUSE_UP,funb);

function funa(e:MouseEvent):void{
e.target.startDrag();
}
function funb(e:MouseEvent):void{
e.target.stopDrag();
}Level2D源代码:

CODE:
package index.com.truss{

import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.events.Event;
import flash.display.DisplayObjectContainer;
import flash.display.DisplayObject;

import index.com.events.Level2DEvent;

public class Level2D implements IEventDispatcher{

private var dispatcher:EventDispatcher;
private var _range:DisplayObjectContainer;

public function Level2D(range_:DisplayObjectContainer){
dispatcher = new EventDispatcher(this);
_range = range_;
}

//重排
public function reset():Array{
var tmpAr:Array = getDisplay();
var getYAr:Array = getDisplay("y");
var addYAr:Array = getYAr.concat().sort(16);

if(getYAr.toString() != addYAr.toString()){
inOrder(tmpAr.sortOn("y",16));

//发布层级改变事件
dispatcher.dispatchEvent(new Level2DEvent(Level2DEvent.LEVEL_RESET));
}

getYAr = addYAr = null;
return tmpAr;
}

//返回当前范围所有对象
public function getDisplay(arg:Object = null):Array{
var i:int;
var tmpAr:Array = new Array;
var num:int = _range.numChildren;
if(arg == null){
for(i = 0; i < num; i ) tmpAr.push(_range.getChildAt(i));
}else if(arg is String){
for(i = 0; i < num; i ) tmpAr.push(_range.getChildAt(i)[arg]);