我想在As3 http://flashexplained.com/actionscript/moving-and-rotating-a-movie-clip-with-button-symbols-via-actionscript/中實現這一點。雖然它非常簡單,但在actionscript 3中沒有已知的教程。我只需要左右移動。請不要向我介紹有關箭頭鍵盤按鍵的教程。謝謝!用As3在舞臺上的按鈕移動對象
0
A
回答
0
認識到在As2中,這種項目比在As3中簡單得多。我們需要做的編碼更加先進。
就像在你的As2教程中,製作你的按鈕和火箭,然後相應地標記它們。
現在,讓我們從這裏開始。打開你的動作窗口,然後輸入。
addEventListener(Event.ENTER_FRAME,onFrame)
function onFrame(e:Event):void {
//we'll get to this later
}
呃哦,這看起來很可怕。沒關係。這實質上是.onEnterFrame
的as3替換。我們在這裏說的是,當發生這種情況時(ENTER_FRAME
)我們想要觸發這個功能(onFrame
)。這個解釋過於簡單,但它符合我們的目的。
好,所以我們有一個功能,每次我們進入一個新的框架時被解僱!
好的,現在我們需要一些變量來告訴我們按鈕是否被按下。
var leftIsPressed:Boolean = false
var rightIsPressed:Boolean = false
但他們有點......只是在那裏。停滯不前。我們需要爲我們改變它們。
moveLeft.addEventListener(MouseEvent.MOUSE_DOWN,leftPressed)
moveRight.addEventListener(MouseEvent.MOUSE_DOWN,rightPressed)
function leftPressed(e:MouseEvent):void {
leftIsPressed = true
}
function rightPressed(e:MouseEvent):void {
rightIsPressed = true
}
在這裏,我們說,「moveLeft
,等到按下鼠標的你,然後觸發此功能(leftPressed
)。」然後,在leftPress
中,我們更改變量,告訴我們該按鈕是否從false
被按下到true
。
但是當我們釋放鼠標時會發生什麼?絕對沒有。 leftPressed
將仍然爲true
,我們可憐的小火箭將無限期射入太空!我們來解決這個問題。
stage.addEventListener(MouseEvent.MOUSE_UP,mouseReleased)
function mouseReleased(e:MouseEvent):void {
leftIsPressed = false
rightIsPressed = false
}
請注意,我們正在講臺階等待鼠標釋放,而不是按鈕。如果我們要告訴按鈕等待鼠標上升,那麼只有在釋放時鼠標當前位於按鈕上的情況下,我們纔會將變量更改爲false
!因此,當鼠標在舞臺的任何部分被釋放時,我們告訴舞臺發射事件。
甜,所以現在隨時可以通過訪問leftIsPressed
和rightIsPressed
來知道按鈕是否被按下!我們回到onFrame
函數。
function onFrame(e:Event):void {
if (leftIsPressed) {
rocket.x -= 5
}
if (rightIsPressed) {
rocket.x += 5
}
}
該函數將在每一幀被觸發。所以,如果我們有一個變數是真的,火箭就會朝這個方向移動!我們完成了!按ctrl +進入並觀看小火箭的舉動!
爲了讓事情變得簡單,我以更正統的方式組織了我們的代碼。祝你好運!
最終代碼
var leftIsPressed:Boolean = false
var rightIsPressed:Boolean = false
addEventListener(Event.ENTER_FRAME,onFrame)
moveLeft.addEventListener(MouseEvent.MOUSE_DOWN,leftPressed)
moveRight.addEventListener(MouseEvent.MOUSE_DOWN,rightPressed)
stage.addEventListener(MouseEvent.MOUSE_UP,mouseReleased)
function onFrame(e:Event):void {
if (leftIsPressed) {
rocket.x -= 5
}
if (rightIsPressed) {
rocket.x += 5
}
}
function leftPressed(e:MouseEvent):void {
leftIsPressed = true
}
function rightPressed(e:MouseEvent):void {
rightIsPressed = true
}
function mouseReleased(e:MouseEvent):void {
leftIsPressed = false
rightIsPressed = false
}
相關問題
- 1. AS3對象移動到舞臺上的隨機位置onClick
- 2. AS3修改舞臺上的對象
- 3. as3在舞臺上添加對象的動態索引更改
- 4. KineticJS在一個舞臺上拖動對象導致在另一個舞臺上移動對象
- 5. 移除舞臺上的精靈as3
- 6. as3,使用參數在舞臺上實例化對象
- 7. 如何使用as3將一個按鈕添加到舞臺上?
- 8. 對象保留在AS3中的removeChild()之後的舞臺上
- 9. 如何修復在AS3舞臺上的重疊對象
- 10. 動態地將舞臺上的MovieClip實例放在舞臺上(AS3)
- 11. 禁用舞臺按鈕X
- 12. CreateJS緩存對象 - 對象現在不在舞臺上動畫
- 13. 訪問舞臺上的按鈕類
- 14. AS3:在舞臺上訪問MovieClip
- 15. 如何在舞臺上顯示對象?
- 16. ActionScript 3.0對象在舞臺上爲空
- 17. 如何在as2.0中動態調整舞臺上的按鈕
- 18. AS3盤旋舞臺
- 19. 這和舞臺在AS3
- 20. 在AS3中訪問舞臺
- 21. 使用ActionScript 3.0在舞臺上設置動畫對象
- 22. 處理舞臺上的顯示對象
- 23. 移除舞臺上的所有實例as3
- 24. 從舞臺閃光燈AS3刪除按鈕
- 25. AS3對象出現onClick鼠標在舞臺上點擊的位置
- 26. AS3動態添加按鈕到舞臺並訪問不同的功能
- 27. AS3可以添加對象到舞臺的全局類
- 28. AS3舞臺上無法訪問MC
- 29. 無法從舞臺上刪除對象
- 30. AS3:確定DisplayObject何時從舞臺上移除?
謝謝你這麼晚纔回復很抱歉,我已經失去了希望,並停止在這裏檢查我的帳戶。它真的有用,我試過了。你很棒!謝謝。 – Johnnien 2014-09-17 19:27:01