2013-07-24 30 views
0

我試圖開發一個遊戲,我想我的性格,當我點擊一個按鈕,運行移動的動畫影片剪輯,並繼續運行,如果我按住按鈕。我是ActionScript 3的新手,所以我在這裏有點迷路。使用按鈕代替方向鍵

我發現,我的滿足要求的代碼;但它使用箭頭鍵,如下:

function moveRunKei() { 
    if (Key.isDown(Key.RIGHT)) { 
     dx = 15; //speed 
     runKei._xscale = 50; 
    } else if (Key.isDown(Key.LEFT)) { 
     dx = -15; 
     runKei._xscale = -50; 
    } else { 
     dx = 0; 
    } 

    runKei._x += dx; 

    if (runKei._x < 100) runKei._x = 100; //30 
    if (runKei._x > 550) runKei._x = 550; 

    if (dx != 0 && runKei._currentframe == 1) { 
     runKei.gotoAndPlay("run"); 
    } else if (dx == 0 && runKei._currentframe != 1) { 
     runKei.gotoAndStop("stand"); 
    } 
} 

this.onEnterFrame = function(){ 
    moveRunKei(); 
} 

我需要能夠使用按鈕來做到這一點。

////////////////////////////////////////////// //////////////////////////////////////

import flash.events.Event; 

var mouseDown:Boolean; 
var speed:Number=4; 
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 
addEventListener(Event.ENTER_FRAME, onEnterFrame); 


function onMouseDown(event:MouseEvent):void 
{ 
    mouseDown = true; 
} 

function onMouseUp(event:MouseEvent):void 
{ 
    mouseDown = false; 
} 

function onEnterFrame(event:Event):void 
{ 
    if (mouseDown) 
    { 
     runKei.gotoAndPlay("Run"); 
    runKei.x += speed; 

    } 

} 

此代碼能夠使當我按住按鈕時,我的角色不斷移動,但它在移動時沒有動畫(角色凍結,直到我釋放按鈕) - 我不知道如何解釋它。

回答

0

你需要添加事件偵聽器按下鼠標和鼠標了每個針對移動的按鈕。然後有布爾人跟蹤按鈕是否關閉。

值得一提的你鏈接的代碼似乎ACTIONSCRIPT2所以我已經改變了它與AS3

var leftDown:Boolean = false; 
var rightDown:Boolean = true; 

leftButton.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown) 
rightButton.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown) 
leftButton.addEventListener(MouseEvent.MOUSE_UP, onMouseUp) 
rightButton.addEventListener(MouseEvent.MOUSE_UP, onMouseUp) 
leftButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseUp) 
rightButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseUp) 

function onMouseDown(e:MouseEvent):void 
{ 
    //since you can't click on two things at once, this is fine. 
    rightDown = (e.target == rightButton); 
    leftDown = (e.target == rightButton); 
} 

function onMouseDown(e:MouseEvent):void 
{ 
    //since you can't click on two things at once, this is fine. 
    rightDown = (e.target == rightButton); 
    leftDown = (e.target == leftButton); 
} 

function moveRunKei() 
{ 
    if (rightDown) { 
     dx = 15; //speed 
     runKei.scaleX = -0.5; 
    } else if (leftDown) { 
     dx = -15; 
     runKei.scaleX = -0.5; 
    } else { 
     dx = 0; 
    } 

    runKei.x += dx; 

    if (runKei.x < 100) runKei.x = 100; //30 
    if (runKei.x > 550) runKei.x = 550; 

    if (dx != 0 && runKei.currentFrame == 1) 
    { 
     runKei.gotoAndPlay("run"); 
    } 
    else if (dx == 0 && runKei.currentFrame != 1) 
    { 
     runKei.gotoAndStop("stand"); 
    } 
} 

    this.addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    moveRunKei(); 
} 
+0

喜來工作。謝謝回覆。我試過編碼,但是我得到了一個錯誤,說1120:訪問未定義的屬性dx。這是什麼意思? – Eru

+0

您在那裏使用了一個名爲dx的變量多次。那就是你的德爾塔x,這就是他應該移動的速度。那個錯誤意味着你還沒有宣佈它。在頂部(減去speach引號),leftDown和rightDown – Glitcher

+0

靠近我把代碼,並且錯誤消失:只要堅持「數量變種DX」。但是當我運行SWF文件時,我的角色立即穿過舞臺而沒有點擊按鈕。 – Eru