2010-08-12 5 views
2

J'ai cette classe de baseMovieClip ne peut pas voir les méthodes de classe de base

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; 
     } 

    } 

} 

Je puis, dans le document Flash, créez un clip qui a cette classe définie comme la « classe de base » dans les propriétés. Cependant, si je puis this.updateText(); dans le script d'image du clip, il se plaint

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

Pourquoi ça ne marche pas? Je sais que la classe est lue et compilée, car j'ai eu une erreur qui a été rapportée.

Répondre

0

Eh, ne me dérange, j'ai précisé par hasard la classe de base sur un autre MovieClip que celui qui contient le script

0

Cela peut ne pas être la raison de votre erreur, mais MenuButton() ressemble à votre constructeur, ne devrait-il pas être MenuButtonBase()? Avez-vous essayé de faire de updateText() une fonction publique?

1

La seule façon dont j'ai pu obtenir la même erreur était d'avoir mal configuré la classe de base (flash.display.MovieClip). Vous pouvez définir la classe sur xxx.xxx.MenuButtonBase ou donner à MovieClip son propre nom de classe et définir la classe de base sur xxx.xxx.MenuButtonBase.

Si vous cliquez sur la coche verte dans les propriétés du MovieClip pour «valider la définition de la classe de base», trouve-t-il la classe?

Sinon votre code fonctionne bien, au moins je n'ai pas eu d'erreur quand je l'ai exécuté.

Cela n'a rien changé mais votre classe s'appelle MenuButtonBase, si MenuButton est son constructeur, alors il devrait avoir le même nom que la classe.

Juste pour noter mon erreur était:

TypeError: Erreur # 1006: UPDATETEXT est pas une fonction. at MenuButtonBase/frame1()

Légèrement différent du vôtre. J'ai un MovieClip dans la bibliothèque l'éther étend votre classe ou est votre classe (class set xxx.MenuButtonBase) et sur l'image 1 je mets l'appel updateText. Ensuite, je fais glisser une copie du MovieClip sur la scène. J'ai aussi essayé de faire avec du code, mais rien n'a changé.

0

updateText est déclarée comme protégée: le rendre public:

public function updateText():void 
Questions connexes