 |
package { import flash.display.Sprite; import flash.events.MouseEvent; public class select extends Sprite { public var MouseStart:Array; public var SelectSprite:Sprite; public var FirstSelect:Boolean; public function select():void { stage.addEventListener(MouseEvent.MOUSE_DOWN,selectstart); } public function selectstart(event:MouseEvent):void { FirstSelect=true; MouseStart=[event.stageX,event.stageY]; stage.addEventListener(MouseEvent.MOUSE_MOVE,selecting); stage.addEventListener(MouseEvent.MOUSE_UP,selectend); } public function selecting(event:MouseEvent):void { if (!FirstSelect) this.removeChild(SelectSprite); //清除以前的選擇框 FirstSelect=false; var ax:int=MouseStart[0]; var ay:int=MouseStart[1]; var aw:int=event.stageX-ax; var ah:int=event.stageY-ay; SelectSprite=new Sprite(); SelectSprite.graphics.beginFill(0x3399ff,0.4); SelectSprite.graphics.lineStyle(1,0x3399ff); SelectSprite.graphics.drawRect(ax,ay,aw,ah); SelectSprite.graphics.endFill(); this.addChild(SelectSprite); } public function selectend(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE,selecting); stage.removeEventListener(MouseEvent.MOUSE_UP,selectend); if (!FirstSelect) this.removeChild(SelectSprite); } } }
|
 |
最終效果:

|
 |
一樓的代碼有個問題:就是向右下角拉的時候鼠標會在矩形框右下角的頂點上。下面的代碼可以解決此問題:
package { import flash.display.Sprite; import flash.events.MouseEvent; public class select extends Sprite { public var MouseStart:Array; public var SelectSprite:Sprite; public var FirstSelect:Boolean; public function select():void { stage.addEventListener(MouseEvent.MOUSE_DOWN,selectstart); } public function selectstart(event:MouseEvent):void { FirstSelect=true; MouseStart=[event.stageX,event.stageY]; stage.addEventListener(MouseEvent.MOUSE_MOVE,selecting); stage.addEventListener(MouseEvent.MOUSE_UP,selectend); } public function selecting(event:MouseEvent):void { if (!FirstSelect) this.removeChild(SelectSprite); //清除以前的選擇框 FirstSelect=false; var ax:int=MouseStart[0]; var ay:int=MouseStart[1]; var aw:int=event.stageX-ax; var ah:int=event.stageY-ay; SelectSprite=new Sprite(); SelectSprite.graphics.beginFill(0x3399ff,0.4); SelectSprite.graphics.lineStyle(1,0x3399ff); SelectSprite.graphics.drawRect(ax-1,ay-1,aw,ah); SelectSprite.graphics.endFill(); this.addChild(SelectSprite); } public function selectend(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE,selecting); stage.removeEventListener(MouseEvent.MOUSE_UP,selectend); if (!FirstSelect) this.removeChild(SelectSprite); } } }
|
 |
SelectSprite.graphics.drawRect(ax-1,ay-1,aw,ah); 這樣就和win7系統下基本上一樣了
|
 |
貌似這個代碼在有一個圖層以上的fla文件中就杯具了
|
 |
|