Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Объекты. (http://www.flasher.ru/forum/showthread.php?t=30925)

Corpse 29.04.2002 18:40

Объекты.
 
У меня есть 8 мувиков. Набор действий, которые могут быть выполнены по отношению к каждому из них, одинаковы для всех. Так вот тут напрашивается такое решение - описать класс и сделать 8 экземпляров. Но у меня возник такой вопрос: если я не хочу создавать новые объекты, а хочу "приделать" методы к самим мувикам, то как мне поступить тогда? Писать восемь раз одну и ту же функцию для каждого мувика глупо, а воспользовать оператором new я тоже не могу, потому что объекты уже существуют. Как мне лучше всего поступить? Спасибо.

RDA 29.04.2002 18:55

MovieClip.prototype.myMethod = function () { };

Corpse 29.04.2002 19:12

Не совсем корректно.
 
Добавление метода к прототипу MovieClip вы зовет появление этого метода во всех экземплярах класса MovieClip, т.е. во всех мувиках, а у меня их много, но дополнительные методы нужно ввести не во все, а только в 8 их них.

sergwizard 29.04.2002 21:45

Smart Clips
 
Посмотри Smart Clips. Я думаю, это то , что тебе нужно.

УильямБрэдберри 29.04.2002 22:40

Re: Не совсем корректно.
 
Цитата:

Оригинал написал(а) Corpse
Добавление метода к прототипу MovieClip вы зовет появление этого метода во всех экземплярах класса MovieClip, т.е. во всех мувиках, а у меня их много, но дополнительные методы нужно ввести не во все, а только в 8 их них.
тогда напиши конструктор, который и будет добавлять в мувик новый метод, в зависимости от его свойств.
например для мувиков, имена которых начинаются на [ xyz ]

if (this._name.substr(0,3)=="xyz")...........

Nox Noctis 29.04.2002 23:23

если делаешь в мыксе, то можно сделать просто:

8class = function () {};
8class.prototype = new MovieClip();
8class.prototype.customMethod = function () {....................}
Object.registerClass("linckage", 8class);

но тогда тебе надо будет аттачить твои клипы из библиотеки...

Nox Noctis 30.04.2002 00:10

Цитата:

Оригинал написал(а) Nox Noctis
но тогда тебе надо будет аттачить твои клипы из библиотеки...
бррр.... глупости какие... :) вечерний приступ тупости после работы... :D
хорошо что никто пока не заметил...

на самом деле тебе главное при регистрировании класса таким способом - это чтобы в библиотеке был такой линкейдж... а уж аттачишь ты клип, или ручками кладешь в таймлайн - это уже твое личное дело - все работет, проверено...

Nox Noctis 30.04.2002 00:32

еще пара вариантов (менее конструктивных ;) )

можно сделать проще -
использовать метод 'apply' во время вызова... тогда функция будет всего одна, а применяться сможет как метод к чему угодно...

и еще - у тебя ведь есть имена клипов, в которых должен быть этот хитрый метод ?
можно сделать этот метод, а присоединить его простым присвоением (вообще без всякого конструктора)... никто ведь не мешает делать присвоение ссылки на функцию...
это не так красиво и не так универсально, но зато просто :)

RFMitrio 30.04.2002 01:37

Вопрос: а почему плохо, если будет метод добавлен к прототипу movieClip? Ну и что, что он будет применим для всех мувиков, а не только для 8-ми, ведь все равно в памяти 1 раз содержится и на ресурсоемкости плохо не отразится. А вот если для каждого из 8-ми мувов регистрить этот метод - тогда он и будет 8 раз храниться, и это будет неэкономично. Поэтому, ИМХО, лучше по тупому добавить его к прототипу movieClip...

Nox Noctis 30.04.2002 01:48

мм... вообще-то да... при обращении к методу объекта сначала просматривается объект на наличие этого метода, а потом (если нет в самом объекте такого метода) его прототип (или его родительский класс)... в мыксе, кстати, добавлено обращение super, для того, чтобы можно было ссылаться на суперкласс...

но что в случае присвоения ссылки на метод, что в случае создания нового класса - память выделится один раз :) так что разницы никакой - вопрос как будет чище и удобнее...


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

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