2010-08-12 2 views
2

у меня есть этот базовый классMovieClip не могут видеть методы базового класса

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() 

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

ответ

0

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

0

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

1

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

Если вы нажмете зеленую галочку в свойствах мувиклипа, чтобы «проверить определение базового класса», найдет ли этот класс?

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

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

Просто отметить мою ошибку было:

TypeError: Error # 1006: UPDATETEXT не является функцией. at MenuButtonBase/frame1()

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

0

updateText объявлен как защищенный: обнародует его:

public function updateText():void 
Смежные вопросы