引用类的正确方法是什么,在这种情况下来自同一个包。下面的代码显示类“Two”试图跟踪类“One”中变量的值。没有成功。 trace返回undefined。
//Class One
package
{
import flash.display.Sprite;
public class One extends Sprite
{
public var myString:String = "My String";
public function One()
{
new Two();
}
}
}
//Class TWO
package
{
public class Two
{
private var oneClass:Class = One; // <- is that right?
public function Two()
{
trace(oneClass.myString);
}
}
}
答案 0 :(得分:2)
trace(oneClass.myString);
中存在错误,因为myString
不是静态的。但除此之外,您可以将One
分配给oneClass
类型Class
的引用没有类或对象的任何属性,不是实例只是对该类的构造函数的引用。即:
public class One {
static public var classValue = "Hello";
public var instanceValue = "World!";
}
public class Two {
public function Two() {
trace( One.classValue ); // this traces: Hello
trace( One.instanceValue ); // this throws an Error
var classReference:Class = One;
trace( classReference.classValue ); // this throws an Error
trace( classReference.instanceValue ); // this throws an Error
var objectReference:One = new classReference();
trace( objectReference.classValue ); // this throws an Error
trace( objectReference.instanceValue); // this traces: World!
}
}
类属性(静态)只能直接从类中加入(如One.classValue
)而不是Class
引用,实例属性(非静态属性)只能从对象中加入那个班级(如new One().instanceValue
)
答案 1 :(得分:1)
myString不是静态的。所以它不属于类,而是属于实例。这就是你的代码不起作用的原因。试试:
static public var myString:String = "My String";