效果有点类似于Windows操作系统下对文件的选取操作。
类代码:
package neo {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class NeoSelecter extends Sprite {
private var author:String=”Neo”;
private var listenerObjects:Array=new Array();
private var dot:Object={x:0,y:0};
public function NeoSelecter(w:uint,h:uint):void {
trace(author);
}
/*Get or Set listenerObjects*/
public function get registerObject():Array {
return listenerObjects;
}
public function set registerObject(a:Array):void {
listenerObjects=a;
parent.parent.addEventListener(MouseEvent.MOUSE_DOWN,startDrawArea);
parent.parent.addEventListener(MouseEvent.MOUSE_UP,clearArea);
}
/*Handles*/
private function startDrawArea(event:MouseEvent):void {
if(event.target==parent.parent) {
dot.x=mouseX;
dot.y=mouseY;
clearObjects();
parent.parent.addEventListener(MouseEvent.MOUSE_MOVE,drawArea);
}
}
private function drawArea(event:MouseEvent):void {
this.graphics.clear();
this.graphics.lineStyle(0×000000,1,0.1);
this.graphics.beginFill(0×0000FF,0.1);
this.graphics.drawRect(dot.x,dot.y,mouseX-dot.x,mouseY-dot.y);
this.graphics.endFill();
startSelect();
}
private function clearArea(event:MouseEvent):void {
parent.parent.removeEventListener(MouseEvent.MOUSE_MOVE,drawArea);
this.graphics.clear();
}
private function startSelect():void {
for(var i:uint=0;i
}
}
private function checkObject(o:Object):void {
if(o.hitTestObject(this)) {
o.graphics.clear();
o.graphics.lineStyle(3,0×000000,0.4);
o.graphics.drawRect(0,0,o.width,o.height);
o.graphics.endFill();
}
}
private function clearObjects():void {
for(var i:uint=0;i
}
}
private function clearObject(o:Object):void {
o.graphics.clear();
}
}
}
使用方法:
在主场景中放入若干个元件,命名赋予ID,然后在关键桢中敲入以下代码:
import flash.events.MouseEvent;
import neo.NeoSelecter;
var n:NeoSelecter=new NeoSelecter(550,400);
n.x=n.y=0;
addChild(n);
n.registerObject=[”mc1″,”mc2″,”mc3″,”mc4″,”mc5″,”mc6″,”mc7″,”mc8″];