![]() |
Выходные параметры класса
Доброго времени суток. Ситуация следующая. Имеется пользовательский класс PicsLoader. Наверное зря все обработчики событий засунул, скорее всего внимание обращать надо только на onLoadInit.
Код AS1/AS2:
Код AS1/AS2:
1. В onLoadInit у нас создаётся bmp.draw(mc); Куда рисуется этот растр? 0_о Или у нас просто поверх нашего созданного объекта рисуется источник mc, но объект нигде не отображается? 2.(!(--totalNum)) Что это за 2 тире используется? 3. Каким образом этот класс назначает(передаёт) данные в массив clipPath_mc.picArr??? Вот это главная для меня загадка. Методом тыка убивал в onLoadInit строчку bmps[mc._name] = bmp; и оба раза trace выдавали undefined. (но это обстоятельство помогло мне только взяться за этот пост:quiet:) |
1. В массив bmps
2. Это не тире, а два минуса (декремент), уменьшает значение числовой переменной на 1. Если стоит перед переменной, то сначала происходит уменьшение значение, а потом использование (если такое). Если после, то наоборот. 3. При вызове конструктора, вы передаете ссылку на picArr вторым параметром. В конструкторе эта ссылка приходит как bmpArr, и в первой же строчке присваивается переменно bmps. |
Цитата:
Но вот третий вопрос остался тайной. По идее в самом конструкторе у меня создаётся объект MCL и он же регистрируется как приёмник. Дальше в FLA-документе вызывается метод load, которому и передаётся picArr, значения которого в свою очередь присваиваются bmpArr. Это всё верно. Я не пойму на каком этапе объекты, сидящие в bmps вдруг становятся доступны в FLA-документе, да ещё и в массиве picArr!! bmps у нас объявлен в пределах класса, в самом классе picArr никак не переопределяется... Но оно работает, вот в чём загвоздка.:wacko: |
Вложений: 1
Вот, пример добавил. Ещё такой вопрос возник. В рез-те загрузки у нас формируется сообщение
Код AS1/AS2:
Код AS1/AS2:
|
На один и тот же объект может ввести множество ссылок с разными названиями. В класс вы передали ссылку на массив который был объявлен в fla, класс с ним и работает, но у ссылки просто другое имя.
Пример Код AS1/AS2:
|
Ого :eek:
Я привык, что присвоив переменной b значение a, мы его копируем, а не привязываем ссылкой... А сейчас прочитал, что в AS вообще все переменные - это ссылки.)) Спасибо огромное за ответ. Так бы не разобрался. Можно ещё вопрос для закрепления знаний? Если в примере использовать строковый тип данных или числовой, то изменив переменную b, мы не поменяем переменные а и с. Это потому что, у таких объектов мы не можем менять свойства, поэтому создаётся новый "примитивный" объект? |
Да. Примитивные типы (числа, строки и булевы) копируются, а объекты передают ссылки.
|
Ещё раз спасибо за разъяснения.
|
| Часовой пояс GMT +4, время: 17:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.