Şimdi Ara

ActionScript 3.0 kodlarda bir sorun var!!!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
9
Cevap
0
Favori
707
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba, Action Script 3.0 yeni başladım basit bir oyun yaptım ,1.frame de faremiz var çizgilerin arasından geçip peynire ulaşıcak,eğer çizgilere çarparsa 2.frame gidiyoruz bu framede tekrar dene butonu var butona tıklayınca başa dönüyor,engellere çarpmadan peynire ulaşırsa 3.frameye gidiyor burada kazandınız mesajı çıkıyor birde buton var butona basınca yeniden başlatıyor oyunu, aslında gayet güzel çalışıyor fakat bir engele çarpınca ve peynire ulaşınca output panelinde devamlı şu hatalar geliyor;
    TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at y_fla::MainTimeline/hareket()
    TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at y_fla::MainTimeline/hareket()
    TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at y_fla::MainTimeline/carpma2()
    TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at y_fla::MainTimeline/carpma()....

    kodlar şu şekilde;
    1frame:
    stop();
    stage.addEventListener(KeyboardEvent.KEY_DOWN, hareket);
    this.addEventListener( Event.ENTER_FRAME, carpma2);
    this.addEventListener( Event.ENTER_FRAME, carpma);
    function hareket(event:KeyboardEvent)
    {
    if (event.keyCode==Keyboard.LEFT) {
    fare.x -= 3;
    }
    if (event.keyCode==Keyboard.RIGHT) {
    fare.x+=3;
    }
    if (event.keyCode==Keyboard.UP) {
    fare.y-=3;
    }
    if (event.keyCode==Keyboard.DOWN) {
    fare.y+=3;
    }

    }
    function carpma( e:Event ):void
    {
    if(fare.hitTestObject(e1) || fare.hitTestObject(e2) || fare.hitTestObject(e3) ||
    fare.hitTestObject(e4) || fare.hitTestObject(e5) || fare.hitTestObject(e6))
    {

    gotoAndStop(2);
    }
    }
    function carpma2( e:Event ):void
    {
    if(fare.hitTestObject(peynir))
    {

    gotoAndStop(3);
    }
    }




    2.frame:

    btn.addEventListener(MouseEvent.CLICK,basla);
    function basla (e:MouseEvent)
    {gotoAndStop(1);
    }

    3frame:

    btn2.addEventListener(MouseEvent.CLICK,basla);
    function basla (e:MouseEvent)
    {gotoAndStop(1);
    }

    yardımlarınızı bekliyorum , şimdiden teşekkürler...
    kolay gelsin...
     ActionScript 3.0 kodlarda bir sorun var!!!







  • Problem basitçe şu: ikinci ya da üçüncü frame'e gittiğinde birinci frame'de tanımladığın olay dinleyicileri(event Listener) arkaplanda çalışmaya devam ediyor. Fare diye bir obje arıyor, ancak ikinci ve üçüncü frame'lerde fare diye bir obje bulunmadığı için boş nesne(null) hatası veriyor. Yapman gereken ikinci ve üçüncü frame'e gitmeden önce olay dinleyicileri kaldırman. Şöyleki:

    ////Olay dinleyicileri kaldırıyoruz
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, hareket);
    this.removeEventListener( Event.ENTER_FRAME, carpma2);
    this.removeEventListener( Event.ENTER_FRAME, carpma);

    ///Sonrasında istediğimiz frame'e gidiyoruz
    gotoAndStop(2);
  • quote:

    Orijinalden alıntı: MapaCarta

    Problem basitçe şu: ikinci ya da üçüncü frame'e gittiğinde birinci frame'de tanımladığın olay dinleyicileri(event Listener) arkaplanda çalışmaya devam ediyor. Fare diye bir obje arıyor, ancak ikinci ve üçüncü frame'lerde fare diye bir obje bulunmadığı için boş nesne(null) hatası veriyor. Yapman gereken ikinci ve üçüncü frame'e gitmeden önce olay dinleyicileri kaldırman. Şöyleki:

    ////Olay dinleyicileri kaldırıyoruz
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, hareket);
    this.removeEventListener( Event.ENTER_FRAME, carpma2);
    this.removeEventListener( Event.ENTER_FRAME, carpma);

    ///Sonrasında istediğimiz frame'e gidiyoruz
    gotoAndStop(2);

    Teşekkür ederim dediğinizi yaptım İki fonksiyonda da( carpma,carpma2) if şartından önce kaldırdım olay dinleyicilerini çalıştı, fakat 2.frame de düzgün çalışırken 3.frame de yani peynire çarpınca ;

    TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at uygulama_fla::MainTimeline/carpma()


    bu hatayı tekrar aldım ama bu sefer sonsuz değil tek 1 satır aldım hatayı.




  • if şartından önce değil gotoAndStop() komutundan önce kaldırman gerekiyor. Yani if şartlarının içine yazacaksın.



    < Bu mesaj bu kişi tarafından değiştirildi MapaCarta -- 23 Nisan 2015; 17:07:04 >
  • özür dilerim yanlış yazmışım gotoAndStop dan önce kaldırdım olay dinleyicilerini, if şartından öncede denedim hiç çalışmadı.
  • Şu şekilde çalışması gerekiyor:

    stop();
    stage.addEventListener(KeyboardEvent.KEY_DOWN, hareket);
    this.addEventListener( Event.ENTER_FRAME, carpma2);
    this.addEventListener( Event.ENTER_FRAME, carpma);
    function hareket(event:KeyboardEvent)
    {
    if (event.keyCode==Keyboard.LEFT) {
    fare.x -= 3;
    }
    if (event.keyCode==Keyboard.RIGHT) {
    fare.x+=3;
    }
    if (event.keyCode==Keyboard.UP) {
    fare.y-=3;
    }
    if (event.keyCode==Keyboard.DOWN) {
    fare.y+=3;
    }

    }
    function carpma( e:Event ):void
    {
    if(fare.hitTestObject(e1) || fare.hitTestObject(e2) || fare.hitTestObject(e3) ||
    fare.hitTestObject(e4) || fare.hitTestObject(e5) || fare.hitTestObject(e6))
    {

    oyunuBitir(2);
    }
    }
    function carpma2( e:Event ):void
    {
    if(fare.hitTestObject(peynir))
    {

    oyunuBitir(3);
    }
    }

    function oyunuBitir(n:int):void{
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, hareket);
    this.removeEventListener( Event.ENTER_FRAME, carpma2);
    this.removeEventListener( Event.ENTER_FRAME, carpma);
    gotoAndStop(n);
    }




  • peynire çarpınca aynı hatayı verdi tekrar
    http://turbobit.net/v4aykjqack6q.html bu linke upload ettim dosyayı sizin için sorun olmassa kontrol edebilirmisiniz
  • İndirip denedim, birinci framedeki kodu şu şekilde yapınca çalışıyor:


    stop();
    stage.addEventListener(KeyboardEvent.KEY_DOWN, hareket);
    addEventListener( Event.ENTER_FRAME, carpma);

    function oyunuBitir(n:int):void{
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, hareket);
    removeEventListener(Event.ENTER_FRAME, carpma);
    gotoAndStop(n);
    }
    function hareket(event:KeyboardEvent)
    {
    if (event.keyCode==Keyboard.LEFT) {
    fare.x -= 3;
    }
    if (event.keyCode==Keyboard.RIGHT) {
    fare.x+=3;
    }
    if (event.keyCode==Keyboard.UP) {
    fare.y-=3;
    }
    if (event.keyCode==Keyboard.DOWN) {
    fare.y+=3;
    }

    }
    function carpma( e:Event ):void
    {
    if(fare.hitTestObject(e1) || fare.hitTestObject(e2) || fare.hitTestObject(e3) ||
    fare.hitTestObject(e4) || fare.hitTestObject(e5) || fare.hitTestObject(e6))
    {

    oyunuBitir(2);
    return;
    }

    if(fare.hitTestObject(peynir))
    {

    oyunuBitir(3);
    return;
    }
    }




  • Size çok teşekkür ederim yardım ettiğiniz için...
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.