Ссылки на занятия? - PullRequest
       1

Ссылки на занятия?

0 голосов
/ 06 октября 2010

Как правильно ссылаться на класс, в данном случае из того же пакета. код ниже показывает класс «Два», пытающийся отследить значение переменной в классе «Один». нет успеха трассировка возвращает неопределенное значение.

//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 ]

2 голосов
/ 06 октября 2010

Ошибка в 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 голос
/ 06 октября 2010

myString в первом классе не является статичным.Так что это принадлежит не классу, а экземплярам.Вот почему ваш код не работает.Попробуйте с:

static public var myString:String = "My String";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...