参考类?

时间:2010-10-06 11:17:56

标签: actionscript-3 class reference

引用类的正确方法是什么,在这种情况下来自同一个包。下面的代码显示类“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);
           }
     }
}

2 个答案:

答案 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";