Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Что такое ":" ? (http://www.flasher.ru/forum/showthread.php?t=120331)

SeaQuest 17.01.2009 18:33

Что такое ":" ?
 
Например строчка var Listener:Object = new Object();
Объявляется локальная переменная Listener далее загадочное ":", а после него создается экземпляр объекта Object().
Нигде не могу найти ответ! :wacko:
Или вот var mc:MovieClip = this.createEmptyMovieClip(...)

MrPoma 17.01.2009 19:08

http://help.adobe.com/ru_RU/ActionSc...0204-7f9d.html

SeaQuest 17.01.2009 19:39

Спасибо! Я не верно сформулировал вопрос. Что становится с переменной когда осуществляется привязка ее с классом посредством ":"? Как это можно использовать?
Все что я нашел на странице перейдя по ссылке:
Цитата:

Можно создать экземпляр класса с помощью оператора new. В следующем примере создается экземпляр с именем CustomClass и выполняется привязка вновь созданного экземпляра класса переменной с именем customItem.
var customItem:CustomClass = new CustomClass();
Когда переменной назначают тип данных и присваивают значение - тут все понятно.
Но как переменной можно присвоить экземпляр класса?

Wolsh 17.01.2009 20:12

Цитата:

Но как переменной можно присвоить экземпляр класса?
Я спрошу по-другому: как, не сохранив ссылку на этот экземпляр в переменной, Вы собираетесь дальше с ним работать?
Т.е. Вы написали:
Код:

new CustomClass();
Отлично, экземпляр создан! А теперь давайте зададим ему _х равный 10.
Так что не только можно, а просто неизбежно.

SeaQuest 17.01.2009 20:36

Вот все равно не пойму при том, что уже не новичек.
MyClass = new CustomClass();
Я теперь могу обращаться ко всем методам и свойствам класса CustomClass через экземпляр класса MyClass используя точечный синтаксис. При чем здесь переменная? Разьве что можно создать дополнительное свойство экземляра
MyClass.myVariable = anythin;
И тут myVariable будет выполнять роль переменной, но при этом не будет ей являться в чистом виде. Так все же зачем эти "привязанные" переменные?

Wolsh 17.01.2009 20:50

И что здесь MyClass, если не переменная? То что Вы написали ее в "ленивом" стиле, еще не значит, что это... А кстати что это по-вашему? Имя экземпляра, я так чувствую?
И кто Вам сказал, что через экземпляр Вы будете иметь доступ ко всем свойствам и методам класса? Вот уж не факт)))

Добавлено через 7 минут
Что происходит здесь?
Код:

MyClass = new CustomClass();
MyClass = 3;
trace(MyClass);

Оказывается, это не имя а переменная(((

SeaQuest 17.01.2009 21:18

Цитата:

А кстати что это по-вашему?
Не по моему, а по тому, что вычитал в книжке это имя экземпляра класса.
Цитата:

И кто Вам сказал, что через экземпляр Вы будете иметь доступ ко всем свойствам и методам класса?
Именно так и написано в учебнике, что доступ к методам и свойствам, через экземпляр. И тут на тебе узнаю что меня где-то жестоко обманули. Теперь вообще нифига не понимаю :(
Код AS1/AS2:

MyClass = new CustomClass();
MyClass = 3;
trace(MyClass);

В этом примере MyClass - действительно играет роль переменной, потому как не было обращения ни к свойству, ни к методу по типу MyClass.myMetod().
Лучше объясните при чем здесь таки привязанные переменные.

Wolsh 17.01.2009 22:18

В них сохраняется ссылка на экземпляр, без которой Вы никак не сможете к этому экземпляру обратиться. Привязанные - я не очень в курсе этого термина, думаю это как раз неудачный перевод слова LINK (ссылка). Дело в том, что после строчки MyClass = 3; Вы навсегда теряете возможность обратиться к Вашему экземпляру, его свойствам и методам. Так что переменная действительно "привязана" и заменяет instance name (которое вообщето бывает только у дисплейных объектов, создаваемых в АС2 через create... а не через new). Указание типа данных для переменной, хранящей ссылку на экземпляр, существенно снижает ошибку, так как компиллятор просто не даст Вам присвоить этой переменной значение 3, сгенерировав ошибку компилляции. Конечно, от ошибок логики это не спасет, тем не менее. Ну и плюс читабельность и понятность кода другим (и Вам через месяц).

Добавлено через 9 минут
Проще говоря, то что Вы (или книга) называет "привязкой переменной к классу" - это объявление типа данных для переменной. Это значит, что никакой другой тип данных не может быть сохранен в этой переменной, в данном случае - только экземпляр класса CustomClass. Его Вы и сохраняете. А тройку не сможете.

SeaQuest 17.01.2009 22:34

Понял! Получается такая привязанная переменная будет вести себя как экземпляр класса, верно? То есть сама по себе она ничего не содержит, а пользоваться ей можно с таким же синтаксисом как и с экземпляром да?
То я понял что это, а как применять пока вопрос.

chingachgoog 18.01.2009 02:51

http://flasher.ru/forum/showthread.php?t=120104


Часовой пояс GMT +4, время: 19:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.