PDA

Просмотр полной версии : Обращение к функциям-прототипам MC изнутри внешнего класса?


Denis Davidov
17.05.2008, 05:40
Всем привет.

В первом фрейме в as пишу следующее (видимо по-дурости :) ):
MovieClip.prototype.tweenPaint = function (...) {....}
и
easingClass = function ()
{ ...
this.outExpo = function (...) {...}
...
}
ease = new easingClass();



Теперь вопрос, как эти дифиниции использовать в классе, прописываемом "снаружи" в .as фаиле, а именно:

class MyTxtButton extends MovieClip {
...
function onRollOver() {
this.tweenPaint(this._inColor, 10, ease.outExpo);
}
...
}


объект ease могу MyTxtButton передать в конструктор, а вот с прототипом что делать? Флеш ругается при проверки .as на ошибки, говорит не знает таких функций (tween), я ему охотно верю :)
Чувствую, ответ в одну строчку, но так-как никогда не занимался этим профессионально -не знаю...

Буду рад общим советам как лучше оформлять подобные дифиниции-прототипы, думается надо выносить в .as и потом инклудить

Спасибо за совет.

etc
17.05.2008, 10:19
А зачем вы вообще пишете прототипы, если есть классы?

Denis Davidov
17.05.2008, 11:17
что-бы применять функции ко всем объектам MC...

если я сделаю скажем так:

class MyMovieClip extends MovieClip{
...
function tweenColor(...) {...}
...
}

то как мне потом использовать этот класс для уже готовых объектов в библиотеке? Т.е. например заготовлен у меня MC preload_mc, кторый содержит другой MC: balken_mc. Как мне теперь определить что balken_mc это MyMovieClip у кот. есть функция tween, т.е. у экземпляра Preload_mc могу вызвать: preload_mc.balken_mc.tween("_alpha", 100, 20, ease.inExpo);
При этом есть другие объекты в библиотеке, к кот. тоже хочется применять эти функции...

Конечно можно прицепить fuse, везде создавать их объекты для tween и кидать туда MC, кот. нужно обработать, но я думаю что так будет тормознее...

Как следует организовать такой код с точки зрения ООП?

Спасибо....

iNils
17.05.2008, 11:23
Объявить класс MyTxtButton как динамический.
Вот только проблема с автокомплитом будет, если пишите в нормальных редакторах.
И потом, не всем-всем клипам нужны эти методы, поэтому лучше явно изменять класс клипа перед использованием через __proto__

Есть еще один вариант, класс tweenPaint сделать пустышкой, и вместо приписывания свойств кучи разным клипам, работать только с этим классом, придварительно приаттчив туда нужный клип.

Ну или композиция еще возможна.

Denis Davidov
17.05.2008, 11:54
Ага, понятно, точно...
думаю вариант с пустышкой для меня самый простой, ибо с динамич. классами я не работал...

А можно ведь и не создавать пустышку? просто описать tween в tween.as и в MyTxtButton создать объект и выполнить то что нужно. только видимо в описание MyTxtButton надо вставить #include "tween.as"?
тоже самое с ease.
(по похожей схеме работает Fuse)

Кстати. а будет ли это быстрее? стоил вообще парится если я все равно использую Fuse в других местах?
Или быстрее будет если буду передавать готовый объект в конструктор? Но тогда думаю могут быть глюки если одновременно будет несколько tween/ease....