Несколько вопросов связанные с некоторыми моментами AS
Здрава всем.
Народ я новичок а AS 3 и у меня возникли несколько вопросов которые мешают идти дальше , просто появились некоторые недопонимания в ходе обучения , и если Вы не против то разрешите изложиться. 1. This, да банальное this, его я вижу часто но сам не использую. Как я понимаю this – это ссылка на объект и смотря где он пишется . Наверное я сам отвечу на вопрос ну или Вы меня поправите на примере: То есть: Код AS3:
Код AS3:
это одно и тоже так ведь, если нет то поправьте меня. 2. Теперь о «super ()» . Как пишется в helpe инструкция super - вызывает суперклассовую или родительскую версию метода или конструктора, например: Код AS3:
3. Оператор “as” – он меня больше всех пугает. Как я понимаю интерпретатор проверяет нет ли у первого операнда (тип: Sprite) таких же свойств и методов как у и второго операнда (тип: MovieClip) и если таковой есть то Sprite может быть как и MovieClip так и Sprite то есть я могу использовать некоторые методы и свойства MovieClip для объекта Sprite(который уже movieclip) и наоборот. 4. Обращение к объектам и символам. Здесь я затрудняюсь разобраться , сейчас поясню на примере: Допустим имеется класс “B” в конструкторе которой будет для примера Кнопка и Мувик. Код AS3:
Код AS3:
Цитата:
Код AS3:
|
zackscript, всё не так. Класс - это не объект.
this - обращение к объекту(экземпляру класса). Экземпляр класса - это то, что создаётся через new. Каждый раз, когда вы создаёте экземпляр класса Tank - это будет новый танк, не тот, что был раньше. MyClass.smth - обращение к статическому свойству. as - приведение типа, проверяет, есть ли в цепочке наследования определённый тип, и если есть, возвращает объект с таким типом, он не проверяет свойства, а лишь цепочку наследования. this/super пишется лауэркейсом. 1) Код AS3:
Код AS3:
2) Неправильно. super всегда пишется лауэркейсом. Во-первых, так красиво, во-вторых, это работает. Код AS3:
MovieClip as Sprite работает потому, что MovieClip наследуется от Sprite. https://pp.vk.me/c631924/v631924943/...B192Bvns_c.jpg Sprite as MovieClip работать не будет. 4) Цитата:
Код AS3:
Цитата:
Цитата:
|
ZackMercury, с this почти разобрался , то есть если он и в методе некоего класса то это звучит так "задать такие то координаты и зарегистрировать событие текущему методу "
Код AS3:
А вот если MovieClip as Sprite приведу в тип то он может быть как и Спрайт так и МувиКлип ? в 4-ой проблеме я сохранил кнопку и мувик в переменных что здесь не так то ? а в конструкторе я к переменной _btn повесил событие . Вопрос в том как мне обратится к ним как манипулировать ими непосредственно в классе "B". Или создать экземпляры кнопки и мувиклипа в конструкторе класса "B" и добaвить в список отображения но тогда придется программно задать им координаты и другие т.п. свойства а этого делать я не хочу. |
Цитата:
Напишите trace(this); и узнайте, что именно в this находится. Не бойтесь экспериментировать. |
Цитата:
Добавлено через 1 минуту КорДум понятно. |
Цитата:
... Если не писать this вообще, то всё станет очевидным. this не имеет никакого отношения к методам, он ссылается на текущий экземпляр класса, в котором вызывается. this.x или super.x, или просто x - всё одинаково будет работать, так как обращение происходит к свойству экземпляра. this пишут либо те, кто привык писать this, либо там, где он действительно нужен(чтобы, например, передать ссылку на экземпляр текущего класса в другой класс). Давайте я вам пример напишу, чтобы более понятно было. Код AS3:
|
Ну с 3-мя вопросами я разобрался а вот с 4-ой затруднения, серьёзно.
Главный класс "А" привязан к документу к Вашему сведению , на сцене же кнопка с именем "Btn" и мувик "Star". |
Ну так класс В-то ничего о них не знает, они же в экземпляре документ-класса А.
Добавлено через 10 минут То, что Вы называете "на сцене" — это экземпляр Документ-класса, в вашем случае — экземпляр А. При запуске флэшки он будет создан автоматически и добавлен на стейдж. Это главный класс приложения, обычно называемый Main. Все остальное содержимое является его детьми. В частности, экземпляр класса В, который Вы создаете в первом примере. Но дети ничего не знают друг о друге. Только Мейн знает, кого и зачем он породил. Кнопка и клип, нарисованные Вами на сцене, являются детьми А, создаваемыми "автоматически". Ссылки на них уже есть в А — это их Вы используете, создавая дополнительные переменные (по сути ненужные). Но в экземпляре класса В, конечно же, нет никаких данных о детях класса А, с чего бы. Добавлено через 25 минут ZackMercury Цитата:
|
Wolsh, вполне серьёзно.
Пример смешной, не спорю, но иногда бывает нужно делать и такое. Согласен, это пример плохой архитектуры, но бывает делать что-то более глобальное для мелких проектов просто нет никакого смысла. |
Код AS3:
|
Часовой пояс GMT +4, время: 17:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.