2013-07-21 7 views
0

Я наткнулся на это, используя ключевое слово «this» внутри своих классов:as3 Какая разница между именем переменной и именем экземпляра?

У меня есть один класс MovieClip, который добавляется на сцену. изнутри его экземпляра, похоже, знает имя, которое я присвоил ему в свойствах (глава1).

тогда (chapter1) создает экземпляр другого класса (переход) в переменную (transition1):

var transition1:Transition = new Transition(); 

тогда я называю внутренний метод transition1 так:

transition1.moveFromTo(this); 

который прослеживает свое название следующим образом:

trace(this.name); 

при отслеживании названия главы er1 я получаю «chapter1» в качестве его имени. но внутри перехода1 я получаю «экземпляр1» таким же образом. Я уже понял, что могу присвоить имя через «transition1.name = transition1». Это показывает мне, что имя переменной и имя экземпляра, которое я получаю через свойство .name, различаются.

но я не понимаю, почему мне тогда нужно создать переменную для ссылки на экземпляр.

ответ

0

Имя экземпляра - это способ обращения к мувиклипу.
Переменная - это способ доступа к функциям, переменным, применимым к этому мувиклипу.

var currentTile:MovieClip = this.getChildByName("MyClip") as MovieClip; 
currentTile.someFunction(); 

Здесь вы можете манипулировать мувиклипом. Если вы создали переменную, закрытую для класса chapter1, вам не нужно будет указывать мувиклип, поскольку область действия переменной будет охватывать весь код в классе.

Когда вы добавляете мувиклип на сцену во время разработки, мне кажется, что flash присваивает переменную с именем «instancex» и называет ее «instancex». Когда вы его назовете, он меняет имена.
Также нет необходимости указывать мувиклип, если переменная находится в пределах объема вашего кода, или если вам не нужно ссылаться на нее на более позднем этапе.
Другой способ взглянуть на него. «Variable» - это объект, содержащий свойства, функции. Имя экземпляра является свойством объекта.
Надеюсь, это поможет.

0

name является собственностью компании DisplayObject.

Когда вы заполняете поле «имя экземпляра» в свойствах MovieClip через Flash IDE, что на самом деле происходит, вы даете этому MovieClip значение для name. Кроме того, существует переменная, созданная для использования с тем же именем. Это по существу ярлык, так что вы не должны делать что-то подобное для всех MovieClips на сцене:

var myclip:MovieClip = getChildByName("myclip"); 

Если вы делать не Назначьте имя для DisplayObject, он автоматически получает имя, которое будет что-то вроде instance3.Попробуйте этот код, например:

var mc:MovieClip = new MovieClip(); 
trace(mc.name); // instance1 

В этих случаях не существует переменная, созданная для использования, и вы должны создать ссылку на него самостоятельно.

Смежные вопросы