Ошибка наследования MovieClip во flash - PullRequest
2 голосов
/ 21 августа 2010

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

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

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

Ответы [ 3 ]

0 голосов
/ 21 августа 2010

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

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.Возможно, вы захотите проверить это.

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

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

Для получения небольшой информации о том, что вы можете и не можете делать в строгом режиме, посмотрите на вопрос переполнения стека: Краткое описание строгого режима ActionScript 3

Дляна экземплярах рабочей области возник вопрос переполнения стека: Flash AS3: ReferenceError: Ошибка # 1056: невозможно создать свойство

0 голосов
/ 14 сентября 2010

Я бы посоветовал вам публично объявить 'gridView' в своем классе 'Level'.

например.общедоступная переменная gridView: MovieClip;

0 голосов
/ 21 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...