2016-04-12 120 views
0

Sınıfta oyun yapıyorum ve bunu çözemiyorum. Karakterim her ne zaman kaybederse, oyun "tekrar dene" ekranına atlar. GotoAndPlay (1) düğmesine bastığımda, kod "Rakett.Rita.y - = 10;" yığınlar, nesnenin bir dahaki sefere iki kat daha hızlı hareket etmesini sağlar. MC'yi boşaltmayı denedim, başka bir çerçeve yerine başka bir sahne ve başka çeşitli şeyler yükleyin. İşe yaratamıyorum."if (upPressed) {object.y - = 10;}" - her ölümden sonra yığınlar

Ayrıca, her Enter'a bastığımda, nesneler için kullandığım aralar çöker. Enter tuşuna basmanın herhangi bir yolu var mı?

Teşekkürler!

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); 

EKLENDİ^

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; 
     } 

} 
} 

cevap

0

Sen tekrar deneyin ekranına geldiğinizde bu olay dinleyicilerini kaldırmak gerekir: İşte benim kod. Aksi takdirde bu çerçevenin kodu çalışır, dinleyicilerin bir kopyasını ekler ve her şey iki kez gerçekleşir.

+0

Bu mantıklı geliyor! Bunu nasıl yaptığımı biliyor musun? Bu benim ilk AS3 komutum. – Sellie

+0

Etkinlik dinleyicilerini eklediğiniz gibi kaldırırsınız. Muhtemelen bir şey yaptınız: addEventListener (KeyboardEvent.MOUSE_DOWN, YourFunction). Yani removeEventListener (KeyboardEvent.MOUSE_DOWN, YourFunction) yapmalısınız. – Snukus

+0

Bu kodu kazandığınız veya kaybedeceğiniz çerçevelere eklemeye çalıştım, ancak çalışmadı. Ayrıca kodun kalanını orjinal defterime ekledim. Neyi yanlış yaptım? Yardımın için çok teşekkürler! 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