2010-08-21 3 views
2

У меня есть класс с именем Level, который наследует MovieClip. Level имеет ребенка в дизайнере с именем gridView, а gridView используется в конструкторе Level.
У меня есть класс с именем Level1, который наследует Level. когда я пытаюсь что-то вроде addChild(new Level1()) Я получаю ошибку в Level конструктор говорит gridView is null. Что я делаю не так?Ошибка наследования наследования MovieClip во флэш-памяти

Некоторые части кода:

public class Level extends MovieClip 
{ 
    public function Level() 
    { 
     var matrix:Matrix = new Matrix(); 
     matrix.translate(-250, -250); 
     matrix.rotate(Math.PI/6); 
     matrix.scale(1, 0.5); 
     matrix.translate(250, 250); 
     gridView.transform.matrix = matrix; // error here referred from: 
    } 
} 

public class Level1 extends Level 
{ 
    public function Level1() 
    { 
     super(); 
    } 
} 

addChild(new Level1()); // referred from here 
addChild(new Level()); // this worked fine 
+0

Подключен ли Level1 к MC в создании, который содержит объект gridView? Если нет, это ваша проблема - наследование класса происходит только в коде; дочерние классы Уровня не будут иметь свой собственный экземпляр gridView только потому, что родительский класс имеет один объявленный в authoring. – fenomas

ответ

0

образец кода yould быть хорошим. действительно ли gridView имеет и имя экземпляра «gridView» во Flash IDE?

+0

Да, и код очень длинный. Я добавлю его фрагменты – Dani

0

Без кода или понимания некоторых из ваших настроек, вот что я полагаю, ваш класс выглядит следующим образом:

package { 
    import flash.display.MovieClip; 

    public class Level extends MovieClip { 
     public var gridView:GridView; 

     public function Level() { 
      gridView.x = 100; 
     } 
    } 
} 

Это предполагает, что gridView является GridView, но это может быть что угодно, на самом деле.

Что может случиться, так это то, что у вас нет экземпляра вашего экземпляра gridView, правильно названного в Flash IDE. Вы можете проверить это.

Другая возможность состоит в том, что вы можете быть вовлечены в этот нежный балет, когда включен режим «Строгий режим», а также «Автоматически объявлять экземпляры сцены» также отключен. Эти флажки можно найти, перейдя в пункт «Опубликовать настройки» -> вкладку «Flash» -> щелкнув по кнопке «Параметры справа» в раскрывающемся списке «Сценарий».

Это означает, что вам придется немного поработать в своем классе с отключенным автообъявлением.

Для немного информации о том, что вы можете и не можете сделать в строгом режиме, посмотрите на эту переполнением стека вопрос: Summary of ActionScript 3 strict mode

Для немного на экземпляры сцены, там был этот Stack Overflow вопрос: Flash AS3: ReferenceError: Error #1056: Cannot create property

+0

Я разместил свой код, и его не понравилось то, что вы написали в начале. когда я пытаюсь 'new Level()' работает нормально, но когда я пытаюсь «new Level1()», он умирает, хотя декларация уровня уже почти пуста. – Dani

+0

А, я начал свой комментарий к вопросу, когда не было кода. Позвольте мне еще раз взглянуть на это сейчас, когда есть исходный код. – Liam

0

Я предлагаю вам публично объявить «gridView» в вашем классе «Уровень».

например. public var gridView: MovieClip;

Смежные вопросы