ActionScript 3.0 學習(四) AS3顯示對象的幾個基本屬性,ButtonMode,DropTarget,hitArea以及ScaleX,ScaleY,ScrollRect

       這節課來簡單介紹顯示對象的幾個基本屬性,ButtonMode,DropTarget,hitArea以及ScaleX,ScaleY,ScrollRect。首先,介紹一下顯示對象的繼承關係Sprite  DisplayObjectContainer  InteractiveObject  DisplayObject  EventDispatcher  Object。以上從左至右依次爲子類父類繼承關係,因此可知,Sprite顯示對象既可作爲事件分發器,也可以作爲顯示對象容器,還可以相應各種交互事件。以下先介紹基本屬性ButtonMode,DropTarget,hitArea。
         
package
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	
	public class InteracObj extends Sprite
	{
		private var _circle1:Sprite = new Sprite();
		private var _circle2:Sprite = new Sprite();
		
		public function InteracObj()
		{
			//繪製兩個圓
			draw(_circle1, 0xFFCC00, 150, 40, 40);
			draw(_circle2, 0xCCFF00, 150, 40, 10);
			//設定圓的屬性,將_circle2設爲_circle1的hitArea屬性。同時_circle1的buttonMode屬性爲true。
			_circle1.hitArea = _circle2;
			_circle1.alpha = 0.5;
			_circle1.buttonMode = true;
			_circle1.useHandCursor = true;
			_circle2.mouseEnabled = false;
			//將顯示對象添加到舞臺
			addChild(_circle1);
			addChild(_circle2);
			//對_circle1添加偵聽
			_circle1.addEventListener(MouseEvent.MOUSE_DOWN, mousedownh);
			_circle1.addEventListener(MouseEvent.MOUSE_UP, mouseuph);
			_circle1.addEventListener(MouseEvent.CLICK, onClick);
		}
		
		private function draw(obj:Sprite, color:int, x:int, y:int, radius:int):void
		{
			obj.graphics.beginFill(color);
			obj.graphics.drawCircle(x, y, radius);
			obj.graphics.endFill();
		}
		
		private function mousedownh(event:MouseEvent):void{
			_circle1.graphics.clear();
			draw(_circle1, 0xCCFF00, 40, 40, 40);
			
			_circle2.startDrag();
		}
		
		private function mouseuph(event:MouseEvent):void
		{
			_circle1.graphics.clear();
			draw(_circle1, 0xFFCC00, 40, 40, 40);
			
			_circle2.stopDrag();
		}
		
		private function onClick(event:MouseEvent):void
		{
			_circle1.scaleX *= 1.10;
		}
	}
}
          運行結果如圖所示,可以看到,此時_circle1相應鼠標事件,但是其相應鼠標事件的區域爲_circle2,即使_circle2已經移出了_circle1,不在_circle1的上面。同時,ScaleX屬性可以控制圖形的縮放。由於gif圖片錄製軟件的影響,看不到ButtonMode屬性的效果,讀者可自行編譯運行看看實際效果。

           以下程序研究了顯示對象的ScrollRect屬性,可以看見顯示對象在一個矩形區域內部,當鼠標點擊的時候,其不斷往下移動,直至移除矩形區域。
package
{
	import flash.display.Sprite;
	import flash.geom.Rectangle;
	import flash.events.MouseEvent;
	
	public class InteracObj extends Sprite
	{
		public function InteracObj()
		{
			var circle:Sprite = new Sprite();
			circle.graphics.beginFill(0xFFCC00);
			circle.graphics.drawCircle(200, 200, 200);
			circle.scrollRect = new Rectangle(0, 0, 200, 200);
			addChild(circle);
			
			circle.addEventListener(MouseEvent.CLICK, clicked);
			
			function clicked(event:MouseEvent):void {
				var rect:Rectangle = event.target.scrollRect;
				rect.y -= 5;
				event.target.scrollRect = rect;
			}
			
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章