As3'te küçük bir oyun yapıyorum.AS3'te tüm olay dinleyicileri nasıl silinir
Oyun 10 seviye içeriyor.
1 seviyeye girdiğimde her şey yolunda. Fakat ikinci seviyeye (çerçeve) girdiğimde, ilk çerçeveden olay dinleyicileri hala çalışıyor ve "boş nesne referansı nesnesine erişilemiyor" diyen bir uyarı al. Bunun nedeni, ilk düzeydeki her nesneyi sildiğim ve 2. nesneyi nesneleri eklediğimdir.
removeEventListeners'ı kullanmayı denedim, ancak işe yaramıyor, çünkü ENTER_FRAME Dinleyici, Olayı kaldırdıktan sonra bir kez daha çalışır Dinleyiciler.
Farklı düzeyler için farklı çerçeveler kullanmayı denedim, bit çalışmıyor. Ayrıca tüm 10 kare için 1 frma kullanmayı denedim, ancak çok fazla uyarı alıyorum ve Flash Loader aşırı yüklü.
Seviyeleri nasıl değiştirebilirim (geri ve ileri)? Şimdiden teşekkürler.
addEventListener(Event.ENTER_FRAME, subtracting2);
arrListeners.pop(); // poping it out of the array because it will be deleted after the count reaches 0
function subtracting2 (e:Event):void
{
count--;
var FAcoef:Number = count/30; //
FadeAway.alpha = FAcoef; // Some effect like FadeAway
setChildIndex(FadeAway, numChildren - 1); //
if(count == 0)
{
setChildIndex(FadeAway, 0);
removeEventListener(Event.ENTER_FRAME, subtracting2);
}
}
Yapamazsınız. Olaylarla (** asenkronize **) rahatsız edilmek istemiyorsanız, [AS3 Sinyalleri] 'ni (https://github.com/robertpenner/as3-signals) deneyin (** senkronize **). – Florent
Belki bir enterframe döngüsünde olay dinleyicileri eklememelisiniz ... – Kodiak
Seviyenin geçip geçmediğini kontrol etmek ve oyun kurallarının kırık olmadığından emin olmak için ENTER_FRAME eklemeliyim. Bu fikrin benim fikrimi olmak zorunda değil (EventListeners'ı kaldırmakla). İyi çalışıyorsa, herhangi bir fikri kabul edeceğim – Stefan4024