ActionScript中的类结构

时间:2012-03-28 12:10:39

标签: actionscript-3 actionscript

我有一个人类,即姓名和年龄的人的定义。 SuperClass是主类。我想在Flash文档的textBox中显示名称和年龄。

我是Flash的新手。类结构或编码约定有问题。它给出错误“调用可能未定义的方法addChild”。

package  {
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.text.TextField;

    public class SuperbClass extends Sprite{
        public function SuperbClass() {
        var p1=new Person("Brinda",30); 

        }
    }   
}
import flash.text.TextField;
 class Person {  
     private var name:String;
     private var age:Number;
     var tf:TextField;      
     public function Person(n:String,a:Number){
         name=n;
         age=a;
         init();
     }
     public function init():void{
         trace(name+' is '+age+' year old');    
         tf=new TextField();
         tf.text=name+' is '+age+' year old';
         addChild(tf);
     }
 }

2 个答案:

答案 0 :(得分:2)

您的Person类是一个数据对象,不应该尝试执行View操作。

所以:

protected var p1:Person;
protected var tf:Textfield;

public function SuperbClass() {
   p1 = new Person('Brenda', 30);
   tf = new TextField();
   tf.text = p1.name + ' is ' + p1.age + ' years old.';
   addChild(tf);//SuperBClass extends Sprite, so this works
}

请注意,您需要将Person变量设为public才能使上述代码生效。或者,您可以在Person上创建一个返回整个字符串的getter:

public function get info():String {
   return name + ' is ' + age +  ' years old.';
}

你会这样称呼:

tf.text = p1.info;

答案 1 :(得分:0)

您的person类需要扩展Movieclip或Sprite或具有addChild方法的东西。