目前共有6篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
508 5
【作品】AS3選擇框
高級弟子 五級
1樓 發表于:2011-2-16 15:34
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);
  }
 }
}
高級弟子 五級
2樓 發表于:2011-2-16 15:36

最終效果:

 
高級弟子 五級
3樓 發表于:2011-2-16 15:40

一樓的代碼有個問題:就是向右下角拉的時候滑鼠會在矩形框右下角的頂點上。下面的代碼可以解決此問題:

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);
  }
 }
}

 
高級弟子 五級
4樓 發表于:2011-2-16 15:40

SelectSprite.graphics.drawRect(ax-1,ay-1,aw,ah);
這樣就和win7系統下基本上一樣了

 
高級弟子 五級
5樓 發表于:2011-2-16 15:42
貌似這個代碼在有一個圖層以上的fla文件中就杯具了
 
高級弟子 五級
6樓 發表于:2011-2-16 15:42

回覆:5樓

應該可以通過改繼承的方法實現

 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:508 回複數:5
評論數: ?
作者:蓝晶の骑士
最後回復:蓝晶の骑士
最後回復時間:2011-2-16 15:42
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。