![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2001
Сообщений: 146
|
У меня есть 8 мувиков. Набор действий, которые могут быть выполнены по отношению к каждому из них, одинаковы для всех. Так вот тут напрашивается такое решение - описать класс и сделать 8 экземпляров. Но у меня возник такой вопрос: если я не хочу создавать новые объекты, а хочу "приделать" методы к самим мувикам, то как мне поступить тогда? Писать восемь раз одну и ту же функцию для каждого мувика глупо, а воспользовать оператором new я тоже не могу, потому что объекты уже существуют. Как мне лучше всего поступить? Спасибо.
|
|
|||||
|
Регистрация: Sep 2000
Адрес: Москва
Сообщений: 239
|
MovieClip.prototype.myMethod = function () { };
|
|
|||||
|
Регистрация: Oct 2001
Сообщений: 146
|
Добавление метода к прототипу MovieClip вы зовет появление этого метода во всех экземплярах класса MovieClip, т.е. во всех мувиках, а у меня их много, но дополнительные методы нужно ввести не во все, а только в 8 их них.
|
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Посмотри Smart Clips. Я думаю, это то , что тебе нужно.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Мастер Цифрового Облика
|
Цитата:
например для мувиков, имена которых начинаются на [ xyz ] if (this._name.substr(0,3)=="xyz")........... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
если делаешь в мыксе, то можно сделать просто:
8class = function () {}; 8class.prototype = new MovieClip(); 8class.prototype.customMethod = function () {....................} Object.registerClass("linckage", 8class); но тогда тебе надо будет аттачить твои клипы из библиотеки... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
вечерний приступ тупости после работы... ![]() хорошо что никто пока не заметил... на самом деле тебе главное при регистрировании класса таким способом - это чтобы в библиотеке был такой линкейдж... а уж аттачишь ты клип, или ручками кладешь в таймлайн - это уже твое личное дело - все работет, проверено... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
еще пара вариантов (менее конструктивных
)можно сделать проще - использовать метод 'apply' во время вызова... тогда функция будет всего одна, а применяться сможет как метод к чему угодно... и еще - у тебя ведь есть имена клипов, в которых должен быть этот хитрый метод ? можно сделать этот метод, а присоединить его простым присвоением (вообще без всякого конструктора)... никто ведь не мешает делать присвоение ссылки на функцию... это не так красиво и не так универсально, но зато просто ![]() |
|
|||||
|
Вопрос: а почему плохо, если будет метод добавлен к прототипу movieClip? Ну и что, что он будет применим для всех мувиков, а не только для 8-ми, ведь все равно в памяти 1 раз содержится и на ресурсоемкости плохо не отразится. А вот если для каждого из 8-ми мувов регистрить этот метод - тогда он и будет 8 раз храниться, и это будет неэкономично. Поэтому, ИМХО, лучше по тупому добавить его к прототипу movieClip...
__________________
suum quique |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
мм... вообще-то да... при обращении к методу объекта сначала просматривается объект на наличие этого метода, а потом (если нет в самом объекте такого метода) его прототип (или его родительский класс)... в мыксе, кстати, добавлено обращение super, для того, чтобы можно было ссылаться на суперкласс...
но что в случае присвоения ссылки на метод, что в случае создания нового класса - память выделится один раз так что разницы никакой - вопрос как будет чище и удобнее...Последний раз редактировалось Nox Noctis; 30.04.2002 в 01:51. |
![]() |
Часовой пояс GMT +4, время: 18:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|