![]() |
Объекты.
У меня есть 8 мувиков. Набор действий, которые могут быть выполнены по отношению к каждому из них, одинаковы для всех. Так вот тут напрашивается такое решение - описать класс и сделать 8 экземпляров. Но у меня возник такой вопрос: если я не хочу создавать новые объекты, а хочу "приделать" методы к самим мувикам, то как мне поступить тогда? Писать восемь раз одну и ту же функцию для каждого мувика глупо, а воспользовать оператором new я тоже не могу, потому что объекты уже существуют. Как мне лучше всего поступить? Спасибо.
|
MovieClip.prototype.myMethod = function () { };
|
Не совсем корректно.
Добавление метода к прототипу MovieClip вы зовет появление этого метода во всех экземплярах класса MovieClip, т.е. во всех мувиках, а у меня их много, но дополнительные методы нужно ввести не во все, а только в 8 их них.
|
Smart Clips
Посмотри Smart Clips. Я думаю, это то , что тебе нужно.
|
Re: Не совсем корректно.
Цитата:
например для мувиков, имена которых начинаются на [ xyz ] if (this._name.substr(0,3)=="xyz")........... |
если делаешь в мыксе, то можно сделать просто:
8class = function () {}; 8class.prototype = new MovieClip(); 8class.prototype.customMethod = function () {....................} Object.registerClass("linckage", 8class); но тогда тебе надо будет аттачить твои клипы из библиотеки... |
Цитата:
хорошо что никто пока не заметил... на самом деле тебе главное при регистрировании класса таким способом - это чтобы в библиотеке был такой линкейдж... а уж аттачишь ты клип, или ручками кладешь в таймлайн - это уже твое личное дело - все работет, проверено... |
еще пара вариантов (менее конструктивных ;) )
можно сделать проще - использовать метод 'apply' во время вызова... тогда функция будет всего одна, а применяться сможет как метод к чему угодно... и еще - у тебя ведь есть имена клипов, в которых должен быть этот хитрый метод ? можно сделать этот метод, а присоединить его простым присвоением (вообще без всякого конструктора)... никто ведь не мешает делать присвоение ссылки на функцию... это не так красиво и не так универсально, но зато просто :) |
Вопрос: а почему плохо, если будет метод добавлен к прототипу movieClip? Ну и что, что он будет применим для всех мувиков, а не только для 8-ми, ведь все равно в памяти 1 раз содержится и на ресурсоемкости плохо не отразится. А вот если для каждого из 8-ми мувов регистрить этот метод - тогда он и будет 8 раз храниться, и это будет неэкономично. Поэтому, ИМХО, лучше по тупому добавить его к прототипу movieClip...
|
мм... вообще-то да... при обращении к методу объекта сначала просматривается объект на наличие этого метода, а потом (если нет в самом объекте такого метода) его прототип (или его родительский класс)... в мыксе, кстати, добавлено обращение super, для того, чтобы можно было ссылаться на суперкласс...
но что в случае присвоения ссылки на метод, что в случае создания нового класса - память выделится один раз :) так что разницы никакой - вопрос как будет чище и удобнее... |
| Часовой пояс GMT +4, время: 13:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.