AS3类:鼠标拖拽选中场景中的元件

RichBox交互设计 发布于2008-03-21 17:44:58 | 187次阅读 | 字体: 打印预览


效果有点类似于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 checkObject(parent.getChildByName(listenerObjects[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 clearObject(parent.getChildByName(listenerObjects[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″];


本文出处 : http://www.richbox.net/blog/?p=294 end

上一篇:Eclipse e4 SWT Flex:将Swt UI编译为Flex swf

下一篇:收到CSDN寄来的软件2.0大会的光盘

现在评论本文

authnum

0 条评论