MovieClip не может видеть методы базового класса - PullRequest
2 голосов
/ 12 августа 2010

У меня есть этот базовый класс

package sevengames.miranda.front.res {

    import flash.display.MovieClip;
    import flash.text.TextField;

    public class MenuButtonBase extends MovieClip {

        protected var text:TextField;
        protected var bt:String = null;

        public function MenuButtonBase() {
            stop();
            buttonMode = true;
            mouseChildren = false;
        }

        protected function updateText():void {
            if (text != null) {
                text.text = bt == null ? "???" : bt;
            }
        }

        public function set buttonText(t:String):void {
            bt = t;
            text.text = bt;
        }

    }

}

Затем я в документе Flash создаю фрагмент ролика, в свойствах которого этот класс установлен как «Базовый класс». Однако, если я затем сделаю this.updateText(); в скрипте кадра мувиклипа, он пожалуется

TypeError: Error #1006: updateText is not a function.
at miranda_fla::MenuButton_3/frame1()

Почему это не работает? Я знаю, что класс читается и компилируется, потому что там была ошибка, о которой было сообщено.

Ответы [ 4 ]

1 голос
/ 12 августа 2010

Единственный способ, которым я смог получить ту же ошибку, был неправильный базовый класс (flash.display.MovieClip).Вы можете установить класс xxx.xxx.MenuButtonBase или присвоить мувиклипу свое собственное имя класса и установить базовый класс равным xxx.xxx.MenuButtonBase.

Если щелкнуть зеленую галочку в свойствах мувиклипа для проверкиопределение базового класса 'он находит класс?

В противном случае ваш код работает нормально, по крайней мере, я не получил ошибку при запуске.

Это ничего не изменило, кроме вашегокласс называется MenuButtonBase, если MenuButton является его конструктором, тогда он должен иметь то же имя, что и класс.

Просто чтобы заметить, что моя ошибка была:

TypeError: Ошибка # 1006: updateText не являетсяфункция.в MenuButtonBase / frame1 ()

Немного отличается от вашего.У меня есть мувиклип в библиотеке, эфир расширяет ваш класс или является вашим классом (набор классов xxx.MenuButtonBase), и в кадре 1 я помещаю вызов updateText.Затем я перетаскиваю копию мувиклипа на сцену.Я также попытался сделать с помощью кода, но ничего не изменилось.

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

Эх, не берите в голову, я случайно указал базовый класс в видеоклипе, отличном от того, который содержит сценарий

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

updateText объявлен защищенным: сделать его общедоступным:

public function updateText():void
0 голосов
/ 12 августа 2010

Это может не быть причиной вашей ошибки, но MenuButton () выглядит как ваш конструктор, не должно ли это быть MenuButtonBase ()?Вы пытались сделать updateText () публичной функцией?

...