語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Sprite 物件與影片片段相似,但卻沒有時間軸。 針對不需要時間軸的物件而言,Sprite 是一個適當的基底類別。 例如,Sprite 可提供使用者介面 (UI) 組件一個邏輯基底類別,而此組件通常不會用到時間軸。
Sprite 類別是 ActionScript 3.0 所提供的新類別。 它可替代 MovieClip 類別並提供相同功能,同時保留此類別在舊版 ActionScript 中的所有功能以提供舊版相容性。
更多範例
屬性 | 定義自 | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
對此 InteractiveObject 實體目前的輔助功能實作 (AccessibilityImplementation)。 | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
此顯示物件的目前輔助功能選項。 | DisplayObject | ||
alpha : Number
指出所指定物件的 Alpha 透明度值。 | DisplayObject | ||
blendMode : String
來自 BlendMode 類別的值,會指定要使用何種混合模式。 | DisplayObject | ||
blendShader : Shader [唯寫]
設定用來混合前景和背景的著色器。 | DisplayObject | ||
buttonMode : Boolean
可指定此 sprite 的按鈕模式。 | Sprite | ||
cacheAsBitmap : Boolean
如果設定為 true,Flash 執行階段會快取顯示物件的內部點陣圖表示法。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果為非 null,當 cacheAsBitmap 設定為 true 時,這個 Matrix 物件會定義顯示物件的顯示方法。 | DisplayObject | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
contextMenu : NativeMenu
指定與此物件有關聯的快顯選單。 | InteractiveObject | ||
doubleClickEnabled : Boolean
會指定物件是否會收到 doubleClick 事件。 | InteractiveObject | ||
dropTarget : DisplayObject [唯讀]
指定要將 sprite 拖曳至或丟棄至哪個顯示物件上。 | Sprite | ||
filters : Array
索引的陣列,其中包含目前和顯示物件相關的每個濾鏡物件。 | DisplayObject | ||
focusRect : Object
會指定這個物件是否會顯示焦點矩形。 | InteractiveObject | ||
graphics : Graphics [唯讀]
指定屬於此 sprite 物件的 Graphics 物件,其中可能會產生向量繪圖命令。 | Sprite | ||
height : Number
會指出顯示物件的高度,以像素為單位。 | DisplayObject | ||
hitArea : Sprite
指定用來當作 sprite 作用區域的另一個 sprite。 | Sprite | ||
loaderInfo : LoaderInfo [唯讀]
會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。 | DisplayObject | ||
mask : DisplayObject
呼叫之顯示物件會以指定的 mask 物件遮蓋。 | DisplayObject | ||
metaData : Object
如果中繼資料是透過 PlaceObject4 標籤與 SWF 檔案中的這個 DisplayObject 實體一同儲存,則會取得 DisplayObject 實體的中繼資料物件。 | DisplayObject | ||
mouseChildren : Boolean
判斷物件的子系是否支援啟用滑鼠或使用者輸入裝置。 | DisplayObjectContainer | ||
mouseEnabled : Boolean
指定此物件是否接收滑鼠或其他使用者輸入及訊息。 | InteractiveObject | ||
mouseX : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 x 座標,以像素為單位。 | DisplayObject | ||
mouseY : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 y 座標,以像素為單位。 | DisplayObject | ||
name : String
指出 DisplayObject 的實體名稱。 | DisplayObject | ||
needsSoftKeyboard : Boolean
指定虛擬鍵盤 (螢幕上的軟體鍵盤) 是否應在此 InteractiveObject 實體接收到焦點時顯示。 | InteractiveObject | ||
numChildren : int [唯讀]
傳回此物件的子系數量。 | DisplayObjectContainer | ||
opaqueBackground : Object
會指定顯示物件是否不透明,並具有特定背景顏色。 | DisplayObject | ||
parent : DisplayObjectContainer [唯讀]
指出包含此顯示物件的 DisplayObjectContainer 物件。 | DisplayObject | ||
root : DisplayObject [唯讀]
對載入之 SWF 檔案的顯示物件而言,root 屬性就是該 SWF 檔案所呈現之顯示清單樹狀結構部分的最上層顯示物件。 | DisplayObject | ||
rotation : Number
指出 DisplayObject 實體的旋轉度數 (從該物件原本方向算起)。 | DisplayObject | ||
rotationX : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 x 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationY : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 y 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationZ : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 z 軸旋轉 (以度數為單位)。 | DisplayObject | ||
scale9Grid : Rectangle
目前產生效用的縮放格線。 | DisplayObject | ||
scaleX : Number
指出從註冊點套用的物件水平縮放 (百分比)。 | DisplayObject | ||
scaleY : Number
指出從物件註冊點套用的物件垂直縮放 (百分比)。 | DisplayObject | ||
scaleZ : Number
指出從物件註冊點套用的物件深度縮放 (百分比)。 | DisplayObject | ||
scrollRect : Rectangle
顯示物件的捲動矩形範圍。 | DisplayObject | ||
softKeyboard : String
控制軟體鍵盤的外觀。 | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
定義顯示軟體鍵盤時,應保留於螢幕上的區域 (iOS 未提供)。 | InteractiveObject | ||
soundTransform : flash.media:SoundTransform
控制此 Sprite 的聲音。 | Sprite | ||
stage : Stage [唯讀]
顯示物件的「舞台」。 | DisplayObject | ||
tabChildren : Boolean
判斷物件的子系是否支援啟用定位鍵。 | DisplayObjectContainer | ||
tabEnabled : Boolean
會指定這個物件是否在停駐點順序中。 | InteractiveObject | ||
tabIndex : int
會指定 SWF 檔中的物件停駐點順序。 | InteractiveObject | ||
textSnapshot : flash.text:TextSnapshot [唯讀]
傳回此 DisplayObjectContainer 實體的 TextSnapshot 物件。 | DisplayObjectContainer | ||
transform : flash.geom:Transform
這是一個物件,具有和顯示物件的矩陣、顏色轉換和像素邊界有關的屬性。 | DisplayObject | ||
useHandCursor : Boolean
指示當指標滑入 Sprite,且其 buttonMode 屬性設為 true 時,是否要出現指示手掌 (手掌游標) 的 Boolean 值。 | Sprite | ||
visible : Boolean
不管是否看得見顯示物件。 | DisplayObject | ||
width : Number
會指出顯示物件的寬度,以像素為單位。 | DisplayObject | ||
x : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 x 座標。 | DisplayObject | ||
y : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 y 座標。 | DisplayObject | ||
z : Number
表示 DisplayObject 實體相對於 3D 父輩容器的 z 座標位置 (沿著 z 軸)。 | DisplayObject |
方法 | 定義自 | ||
---|---|---|---|
Sprite()
建立新的 Sprite 實體。 | Sprite | ||
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
指出安全性限制是否會造成傳回的清單 (可用指定的 point 點呼叫 DisplayObjectContainer.getObjectsUnderPoint() 方法來取得) 省略任何顯示物件。 | DisplayObjectContainer | ||
判斷指定的顯示物件是否為 DisplayObjectContainer 實體的子系,或為實體本身。 | DisplayObjectContainer | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
傳回可定義顯示物件區域 (相對於 targetCoordinateSpace 物件的座標系統) 的矩形。 | DisplayObject | ||
傳回存在於指定索引位置的子顯示物件實體。 | DisplayObjectContainer | ||
傳回具有指定名稱的子顯示物件。 | DisplayObjectContainer | ||
傳回 child DisplayObject 實體的索引位置。 | DisplayObjectContainer | ||
傳回位於指定點底下,且屬於此 DisplayObjectContainer 實體之子系 (或孫系,以下類推) 的物件陣列。 | DisplayObjectContainer | ||
根據 targetCoordinateSpace 參數所定義的座標系統,並排除形狀上的任何筆畫,傳回可定義顯示物件邊界的矩形。 | DisplayObject | ||
將 point 物件從「舞台」(全域) 座標轉換成顯示物件的 (區域) 座標。 | DisplayObject | ||
將二維點從「舞台」(全域) 座標轉換為三維顯示物件的 (區域) 座標。 | DisplayObject | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
評估顯示物件的範圍框,看它是否與 obj 顯示物件的範圍框重疊或相交。 | DisplayObject | ||
評估顯示物件,看它是否與 x 和 y 參數所指定的點重疊或相交。 | DisplayObject | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
將三維顯示物件的 (區域) 座標的三維點轉換為「舞台」(全域) 座標中的二維點。 | DisplayObject | ||
將 point 物件從顯示物件的 (區域) 座標轉換成「舞台」(全域) 座標。 | DisplayObject | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
將指定的 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
從 DisplayObjectContainer 子清單中的指定索引位置移除子 DisplayObject。 | DisplayObjectContainer | ||
將所有 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
升起顯示虛擬鍵盤。 | InteractiveObject | ||
變更顯示物件容器中現有子系的位置。 | DisplayObjectContainer | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
讓使用者拖曳指定的 sprite。 | Sprite | ||
讓使用者將指定的 Sprite 拖曳至觸控裝置上。 | Sprite | ||
遞迴停止執行所有 MovieClips 的時間軸根源於此物件。 | DisplayObjectContainer | ||
結束 startDrag() 方法。 | Sprite | ||
結束觸控裝置使用的 startTouchDrag() 方法。 | Sprite | ||
替換兩個指定子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
在子清單的兩個指定索引位置,替換子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
buttonMode | 屬性 |
buttonMode:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
可指定此 sprite 的按鈕模式。 若為 true
,則此 Sprite 將執行按鈕般的行為,也就是說,它會在指標通過 Sprite 上方時觸發顯示手掌游標,而且如果 Enter 或空格鍵在 Sprite 成為焦點時按下,還可以接收 click
事件。您可以先將 useHandCursor
屬性設為 false
,這樣一來,指標就會顯示出來,同時抑制手掌游標不讓它顯示出來。
雖然使用 SimpleButton 類別來建立按鈕是比較好的作法,您還是可以使用 buttonMode
屬性,賦予 Sprite 一些按鈕般的功能。 若要將 Sprite 包含在定位停駐點順序中,請將 tabEnabled
屬性 (從 InteractiveObject 類別繼承而來,而且預設為 false
) 設為 true
。 此外,是否讓您的 Sprite 子系支援啟用使用者輸入動作,也需要納入考量。大部分按鈕都無法針對其子物件支援啟用使用者輸入互動,因為這樣會讓事件流程混淆。若要針對所有子物件停用使用者輸入互動,您必須將 mouseChildren
屬性 (繼承自 DisplayObjectContainer 類別) 設為 false
。
如果您使用 MovieClip 類別 (Sprite 類別的子類別) 的 buttonMode
屬性,您的按鈕可能會帶有其它附加的功能。 如果您納入 labeled _up、labeled_over,以及 labeled_down 的影格,則 Flash Player 會提供自動狀態變更 (與舊版 ActionScript 中提供給影片片段做為按鈕使用的功能相似)。 這些自動狀態變更無法提供 sprite 使用,因為它們沒有時間軸,因此也沒有可以加上標籤的影格。
實作
public function get buttonMode():Boolean
public function set buttonMode(value:Boolean):void
相關 API 元素
範例 ( 如何使用本範例 )
buttonMode
屬性設為 true
供其中一個 Sprite 使用,以及設為 false
供另一個 Sprite 使用。 當您編譯與執行應用程式時,這兩個 Sprite 都會回應滑鼠事件,但是只有 buttonMode
設定為 true
的 Sprite 會使用手掌游標,並且包含於定位停駐點順序中:
import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
dropTarget | 屬性 |
dropTarget:DisplayObject
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定要將 sprite 拖曳至或丟棄至哪個顯示物件上。
實作
public function get dropTarget():DisplayObject
相關 API 元素
範例 ( 如何使用本範例 )
circle
sprite 與兩個 target
sprite。 此 startDrag()
方法會在使用者將滑鼠指標放在 circle
Sprite 上方並按一下滑鼠按鈕時被呼叫,並且當使用者放開滑鼠按鈕時,便會呼叫 stopDrag()
方法。 這樣做可讓使用者拖曳 sprite。 放開滑鼠按鈕時,會呼叫 mouseRelease()
方法,該方法接著會追蹤 dropTarget
物件的 name
,該物件是使用者拖曳 circle
Sprite 到其中的目標物件:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
graphics | 屬性 |
graphics:Graphics
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定屬於此 sprite 物件的 Graphics 物件,其中可能會產生向量繪圖命令。
實作
public function get graphics():Graphics
範例 ( 如何使用本範例 )
circle
sprite,並使用它的 graphics
屬性來繪製帶有黃色 (0xFFCC00) 填色的圓形:
import flash.display.Sprite; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(40, 40, 40); addChild(circle);
hitArea | 屬性 |
hitArea:Sprite
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定用來當作 sprite 作用區域的另一個 sprite。 如果 hitArea
屬性不存在,或者其值為 null
或 undefined
,會將 Sprite 本身當作作用區域。 hitArea
屬性的值可以是 Sprite 物件的參照。
您可以隨時更改 hitArea
屬性;修改後的 Sprite 會立即採用新的作用區域行為指令。 被指定當成感應區的 Sprite 不一定要看得見;即使看不見它的圖像形狀,仍然會偵測為感應區。
注意: 您必須將指定為作用區域的 Sprite 之 mouseEnabled
屬性設為 false
, 否則,您的 Sprite 按鈕可能無法運作,因為指定為感應區的 Sprite 會接收使用者輸入事件,而不是您的 Sprite 按鈕。
實作
public function get hitArea():Sprite
public function set hitArea(value:Sprite):void
範例 ( 如何使用本範例 )
circle
sprite 與兩個 square
sprite。 square
Sprite 就是 circle
Sprite 的 hitArea
。 因此,當使用者按下 square
Sprite,circle
Sprite 會傳送 click
事件:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var square:Sprite = new Sprite(); square.graphics.beginFill(0xCCFF00); square.graphics.drawRect(200, 0, 100, 100); circle.hitArea = square; square.mouseEnabled = false; circle.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void{ trace(event.target == circle); // true trace(event.target == square); // false } addChild(circle); addChild(square);
soundTransform | 屬性 |
soundTransform:flash.media:SoundTransform
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
控制此 Sprite 的聲音。
注意:此屬性不會影響 HTMLControl 物件中的 HTML 內容 (在 Adobe AIR 中)。
實作
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
相關 API 元素
範例 ( 如何使用本範例 )
container
的 Sprite,並將 Loader 物件加入至其子清單中。 這個 Loader 物件會載入 SWF 檔案。 當使用者按下 tf
文字欄位中的連結 true
,mute()
方法會設定 container
Sprite soundTransform
屬性的 volume
屬性:
import flash.display.Sprite; import flash.display.Loader; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.text.TextField; import flash.media.SoundTransform; var container:Sprite = new Sprite(); addChild(container); var ldr:Loader = new Loader; var urlReq:URLRequest = new URLRequest("SoundPlayer.swf"); ldr.load(urlReq); container.addChild(ldr); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound); var tf:TextField = new TextField(); tf.htmlText = "<a href = 'event:Mute'>Mute / Unmute</a>"; addChild(tf); var mySoundTransform:SoundTransform = new SoundTransform(); mySoundTransform.volume = 1; tf.addEventListener(MouseEvent.CLICK, mute); function mute(event:MouseEvent):void { if (mySoundTransform.volume == 0) { mySoundTransform.volume = 1; } else { mySoundTransform.volume = 0; } container.soundTransform = mySoundTransform; } function urlNotFound(event:IOErrorEvent):void { trace("The URL was not found."); }
useHandCursor | 屬性 |
useHandCursor:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0 |
指示當指標滑入 Sprite,且其 buttonMode 屬性設為 true 時,是否要出現指示手掌 (手掌游標) 的 Boolean 值。
useHandCursor
屬性的預設值是 true
。如果 useHandCursor
設為 true
,當指標滑入按鈕 Sprite 上方時,便會顯示按鈕所作用的指示手掌。如果 useHandCursor
為 false
,則會改用箭頭游標。
您可以隨時更改 useHandCursor
屬性;修改後的 Sprite 會立即採用新的游標行為指令。
注意:在 Flex 或 Flash Builder 中,如果您的 Sprite 具有子 Sprite,便可以將 mouseChildren
屬性設定為 false
。例如,您要在 Flex <mx:Label> 控制項上方顯示手掌游標,請將 useHandCursor
和 buttonMode
屬性設定為 true
,以及將 mouseChildren
屬性設定為 false
。
實作
public function get useHandCursor():Boolean
public function set useHandCursor(value:Boolean):void
相關 API 元素
範例 ( 如何使用本範例 )
buttonMode
屬性設定為 true
供兩者使用,然而,會將 useHandCursor
屬性設定為 true
供其中一個 Sprite 使用,以及設為 false
供另一個 Sprite 使用。 當您編譯並執行此應用程式時,這兩個 Sprite 都會回應為按鈕 (並且都會包含在定位停駐點順序中),但是只有 useHandCursor
設為 true
的 Sprite 會使用手掌游標:
import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.useHandCursor = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = true; circle2.useHandCursor = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
Sprite | () | 建構函式 |
public function Sprite()
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
建立新的 Sprite 實體。 在您建立 Sprite 實體之後,請呼叫 DisplayObjectContainer.addChild()
或 DisplayObjectContainer.addChildAt()
方法,將 Sprite 加入至上層 DisplayObjectContainer。
startDrag | () | 方法 |
public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
讓使用者拖曳指定的 sprite。 某個 Sprite 會在您呼叫 Sprite.stopDrag()
方法來明確停止拖曳它之前,或者在您啟用拖曳另一個 Sprite 之前,維持可拖曳的狀態。 您一次只能拖曳一個 sprite。
三維顯示物件會隨著指標移動,而且 Sprite.startDrag()
會將物件在顯示物件所定義的三維平面內移動。或者,如果顯示物件是二維物件,而且是三維物件的子物件,則二維物件會在三維父物件所定義的三維平面內移動。
參數
lockCenter:Boolean (default = false ) — 指定是否將可拖曳的 Sprite 鎖定在指標位置中心 (true ),或者鎖定在使用者第一次按下 Sprite 的位置點 (false )。
| |
bounds:Rectangle (default = null ) — 相對於 Sprite 父輩座標,且指定 Sprite 限制矩形的數值。
|
相關 API 元素
範例 ( 如何使用本範例 )
circle
sprite 與兩個 target
sprite。 此 startDrag()
方法會在使用者將滑鼠指標放在 circle
Sprite 上方並按一下滑鼠按鈕時被呼叫,並且當使用者放開滑鼠按鈕時,便會呼叫 stopDrag()
方法。 這樣做可讓使用者拖曳 sprite。 放開滑鼠按鈕時,會呼叫 mouseRelease()
方法,該方法接著會追蹤 dropTarget
物件的 name
,該物件是使用者拖曳 circle
Sprite 到其中的目標物件:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
startTouchDrag | () | 方法 |
public function startTouchDrag(touchPointID:int, lockCenter:Boolean = false, bounds:Rectangle = null):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2, Flash Lite 4 |
讓使用者將指定的 Sprite 拖曳至觸控裝置上。某個 Sprite 會在您呼叫 Sprite.stopTouchDrag()
方法來明確停止拖曳它之前,或者在您啟用拖曳另一個 Sprite 之前,維持可拖曳的狀態。 您一次只能拖曳一個 sprite。
三維顯示物件會隨著指標移動,而且 Sprite.startTouchDrag()
會在顯示物件所定義的三維平面內移動物件。或者,如果顯示物件是二維物件,而且是三維物件的子物件,則二維物件會在三維父物件所定義的三維平面內移動。
參數
touchPointID:int — 要指定給觸控點的整數。
| |
lockCenter:Boolean (default = false ) — 指定是否將可拖曳的 Sprite 鎖定在指標位置中心 (true ),或者鎖定在使用者第一次按下 Sprite 的位置點 (false )。
| |
bounds:Rectangle (default = null ) — 相對於 Sprite 父輩座標,且指定 Sprite 限制矩形的數值。
|
相關 API 元素
範例 ( 如何使用本範例 )
MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); }
stopDrag | () | 方法 |
public function stopDrag():void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
結束 startDrag()
方法。 某個 Sprite 若是因為 startDrag()
方法成為可拖曳,則該 sprtie 將會維持可拖曳的狀態,直到加入 stopDrag()
方法、或是有另一個 sprtie 成為可拖曳為止。 您一次只能拖曳一個 sprite。
相關 API 元素
範例 ( 如何使用本範例 )
circle
sprite 與兩個 target
sprite。 此 startDrag()
方法會在使用者將滑鼠指標放在 circle
Sprite 上方並按一下滑鼠按鈕時被呼叫,並且當使用者放開滑鼠按鈕時,便會呼叫 stopDrag()
方法。 這樣做可讓使用者拖曳 sprite。 放開滑鼠按鈕時,會呼叫 mouseRelease()
方法,該方法接著會追蹤 dropTarget
物件的 name
,該物件是使用者拖曳 circle
Sprite 到其中的目標物件:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
stopTouchDrag | () | 方法 |
public function stopTouchDrag(touchPointID:int):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2, Flash Lite 4 |
結束觸控裝置使用的 startTouchDrag()
方法。某個 Sprite 若是因為 startTouchDrag()
方法成為可拖曳,則該 sprtie 將會維持可拖曳的狀態,直到加入 stopTouchDrag()
方法或是有另一個 sprtie 成為可拖曳為止。 您一次只能拖曳一個 sprite。
參數
touchPointID:int — 指定給 startTouchDrag 方法之觸控點的整數。
|
相關 API 元素
範例 ( 如何使用本範例 )
MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); }
- 宣告
size
屬性 (100 x 100 像素) 以及背景顏色 (橘色),以供稍後繪製正方形時使用。 - 然後此建構函式會建立新的
child
Sprite 物件,並使用此物件加入兩個事件偵聽程式,以及與這兩個偵聽程式相關的方法:mouseDownHandler()
和mouseUpHandler()
。 child
Sprite 物件會接著傳遞至draw()
方法,以繪製橘色正方形。- 接著,子系會在呼叫
addChild()
方法時置於顯示清單上。 - 這兩個事件偵聽程式的運作方式如下:
mouseDownHandler()
:當使用者按一下 Sprite 物件時,這個方法會加入 mouseMove 事件偵聽程式 (mouseMoveHandler()
方法),以便處理滑鼠移動事件。 然後呼叫startDrag()
方法,允許使用者拖曳這個 Sprite 物件。mouseUpHandler()
:當放開滑鼠按鈕時,便會移除 mouseMove 事件偵聽程式,並呼叫stopDrag()
方法,立即停止橘色正方形的動作。mouseMoveHandler
:只要滑鼠左鍵被按住不放,這個方法就會指示播放程式持續重新繪製此橘色正方形。
注意: 每個事件偵聽程式方法都會宣告區域 sprite
變數,此變數會指定為該事件的 target
屬性。
package { import flash.display.Sprite; import flash.events.*; public class SpriteExample extends Sprite { private var size:uint = 100; private var bgColor:uint = 0xFFCC00; public function SpriteExample() { var child:Sprite = new Sprite(); child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); draw(child); addChild(child); } private function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler"); var sprite:Sprite = Sprite(event.target); sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.startDrag(); } private function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler"); var sprite:Sprite = Sprite(event.target); sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.stopDrag(); } private function mouseMoveHandler(event:MouseEvent):void { trace("mouseMoveHandler"); event.updateAfterEvent(); } private function draw(sprite:Sprite):void { sprite.graphics.beginFill(bgColor); sprite.graphics.drawRect(0, 0, size, size); sprite.graphics.endFill(); } } }
Tue Jun 12 2018, 03:47 PM Z