2016-04-12 24 views
0

我在課堂上做遊戲,我無法弄清楚。 每當我的角色輸了,遊戲跳轉到「再試一次」屏幕。當我按下按鈕gotoAndPlay(1)時,代碼「Rakett.Rita.y - = 10;」堆棧,使物體下次移動速度快兩倍。 我試過卸載MC,加載另一個場景而不是另一個幀,以及其他各種東西。我無法讓它工作。「if(upPressed){object.y - = 10;}」 - 每次死亡後堆疊

另外,無論何時按下回車鍵,我都會使用對象崩潰。有什麼辦法可以禁用輸入新聞?

謝謝! 這裏是我的代碼:

var upPressed: Boolean = false;  
var downPressed: Boolean = false; 
var leftPressed: Boolean = false; 
var rightPressed: Boolean = false; 

RakettRita.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey_2); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed_2); 
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed_2); 

ADDED^

function fl_MoveInDirectionOfKey_2(event: Event) { 

if (upPressed) { 
    RakettRita.y -= 10; 
    RakettRita.rotation = -20; 
} 
if (downPressed) { 
    RakettRita.y += 10; 
    RakettRita.rotation = 40; 

} 
// if hit 
if (trær.hitTestPoint(RakettRita.x, RakettRita.y, true)) { 
// Go to losing-screen 
gotoAndStop(215) 
    } 

} 

function fl_SetKeyPressed_2(event: KeyboardEvent): void { 
switch (event.keyCode) { 
    case Keyboard.UP: 
     { 
      upPressed = true; 
      break; 
     } 
    case Keyboard.DOWN: 
     { 
      downPressed = true; 
      break; 
     } 

} 
} 

function fl_UnsetKeyPressed_2(event: KeyboardEvent): void { 
switch (event.keyCode) { 
    case Keyboard.UP: 
     { 
      upPressed = false; 
      break; 
     } 
    case Keyboard.DOWN: 
     { 
      downPressed = false; 
      break; 
     } 

} 
} 

回答

0

你需要的時候你到了再試屏幕刪除這些事件偵聽器。否則,下一次該框架的代碼運行時,它將添加一個監聽器的副本,並且所有事情都會發生兩次。

+0

這聽起來合乎邏輯!你知道我是怎麼做到的嗎?這是我第一個AS3腳本。 – Sellie

+0

您可以像添加它們一樣刪除事件偵聽器。你可能做了這樣的事情:addEventListener(KeyboardEvent.MOUSE_DOWN,yourFunction)。所以你需要做removeEventListener(KeyboardEvent.MOUSE_DOWN,yourFunction)。 – Snukus

+0

試圖添加此代碼在你贏或放鬆的框架,但它沒有工作。我還在原始文章中添加了其他代碼。我做錯了什麼?非常感謝你的幫助! RakettRita.removeEventListener(Event.ENTER_FRAME,fl_MoveInDirectionOfKey_2); stage.removeEventListener(KeyboardEvent.KEY_DOWN,fl_SetKeyPressed_2); stage.removeEventListener(KeyboardEvent.KEY_UP,fl_UnsetKeyPressed_2); – Sellie