Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Обращение к функциям-прототипам MC изнутри внешнего класса? (http://www.flasher.ru/forum/showthread.php?t=112074)

Denis Davidov 17.05.2008 05:40

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

В первом фрейме в 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....


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

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