2012-06-20 3 views
-2

Поэтому у меня есть следующий код:AS3 1009 где ошибка?

package { 

import flash.display.MovieClip; 
import flash.events.*; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.display.Stage; 
import flash.events.Event; 


public class Meteorek extends MovieClip { 
      private var scena:Stage; 
    public function Meteorek(scena:Stage,x:Number, y:Number ,z:Number): void { 
     this.x = scena.stageWidth/2; 
     this.y = scena.stageHeight/2; 
     this.z = 1100; 
     addEventListener(Event.ENTER_FRAME, lasMeto ,false, 0, true); 
    } 
    public function lasMeto(e:Event):void{ 
     z -= 10; 
     if(z<-100) 
     { 
     UsunZeScen(); 
     } 
    } 
    private function UsunZeScen() : void 
    { 
     removeEventListener(Event.ENTER_FRAME, lasMeto); 

     if (scena.contains(this)) 
       scena.removeChild(this); 
    } 
} 
} 

В конце я получил сообщение об ошибке. И я не знаю, почему. У меня такой же код в другом классе, и все работает нормально, так что с этим не так? T Ошибка возникает при:

scena.removeChild(this) 

Потому что это слишком большой.

+1

Добро пожаловать в [SO]; пожалуйста, прочитайте [faq]. Было бы хорошо, если бы вы потратили немного дополнительного времени, чтобы проверить свою пунктуацию и орфографию. – zzzzBov

+0

Ошибка # 1009 означает, что вы пытаетесь использовать или получить доступ к переменной, которая равна null. Если ошибка возникает при попытке выполнить 'scena.removeChild (this);' это будет означать, что 'scena' равно null. Но невозможно, чтобы 'scena' был нулевым в вашем коде, потому что он передается в конструктор ** и ** конструктор использует его для получения stageWidth. Если вы запустите свой код с помощью отладочного Flash Player, он получит точный номер строки, где происходит ошибка. –

ответ

1

Добавьте к этому конструктору перед тем слушателю:

this.scena = scena; 
Смежные вопросы