我有一个人类,即姓名和年龄的人的定义。 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);
}
}
答案 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方法的东西。