2014-09-01 52 views

回答

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!因此,當鼠標在舞臺的任何部分被釋放時,我們告訴舞臺發射事件。

甜,所以現在隨時可以通過訪問leftIsPressedrightIsPressed來知道按鈕是否被按下!我們回到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 
} 
+0

謝謝你這麼晚纔回復很抱歉,我已經失去了希望,並停止在這裏檢查我的帳戶。它真的有用,我試過了。你很棒!謝謝。 – Johnnien 2014-09-17 19:27:01