|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
класс, унаследованный от MovieClip без библиотеки
Помогите с решением задачи. Перерыл форум, но решения не нашел.
Задача - сделать класс со следующими свойствами: создание экземпляра: (при этом конструктор создает мувиклип и что-то в нем рисует средствами наподобие lineTo) свойства (поведение) как у мувиклипа. Например, если у объекта есть поле-мувиклип, то: должно масштабировать сам объект и дочерний мувик. Такое вообще реализуемо средствами AS2? Я уже двое суток рыскаю по Сети и по форуму, в частности, но решения нигде не нашел. Последний раз редактировалось Lecosson; 14.07.2008 в 03:52. |
|
|||||
class MyMovieClip extends MovieClip { function MyMovieClip(){ }; public static function create(parent:MovieClip, name:String, depth:Number, init:Object):MyMovieClip { var mc:MovieClip = parent.createEmptyMovieClip(name, depth); var constructor:Function = MyMovieClip; mc.__proto__ = constructor.prototype; for(var item:String in init){ mc[item] = init[item]; }; constructor.call(mc); return MyMovieClip(mc); }; }; |
|
|||||
Modus ponens
|
АС2 - нет, АС3 - да.
Можно инкапсулировать создание клипа так, что createEmptyMovieClip() не будет торчать наружу, и создание будет выглядеть так, как вы хотите, но фактически вы все равно будете вызывать createEmptyMovieClip, просто снаружи это не будет заметно. Во флеше есть реализация этого, называется UIObject Есть и другие варианты реализации, не такие тяжеловесные, но принцип более-менее один и тот же. mrProma: это в чем такое можно скомпилировать? ваащета call и apply не применимы к конструктору...
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 14.07.2008 в 04:02. |
|
|||||
Спасибо за ответы, но такое решение я уже находил, и напомню, чего именно хочется добиться:
создание экземпляра: myObj = new MyClipClass(data1, data2, ...); при этом конструктор создает мувиклип и что-то в нем рисует программными средствами LineTo, etc. Разумеется, createEmptyMovieClip где-то будет присутствовать. Задача именно в том, чтобы после new нормально отрабатывал конструктор без вызова дополнительных методов (create) из программы. Все нужно спрятать в классе. В принципе, никаких проблем, но хочется потом иметь не это: а вот это: |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Применимы, особенно, если он указан как Function.
|
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
1) Как отловить ОПРЕДЕЛЕНИЕ нового свойства? (типа мое_свойство="параметры") Видимо, что без циклической проверки свойств объекта - никак 2) можно отловить конструкцию мое_свойство+="параметр" с помощью __resolve (тут поймается момент когда мое_свойство изначально не определено), но где гарантии, что не воспользуются синтаксисом из п.1? Да и толку мало, т.к. свойство надо будет как-то транслировать на мувик 3) очень неплохо (любой метод!) можно сделать с помощью __resolve обработчика функции, но тогда придется вызывать нестандартно: типа мое_свойство("параметр"), вместо мое_свойство+="параметр" - как сделать описано в хелпе. 4) Самый правильный и самый нудный вариант - добавить геттер/сеттер обработчики к объекту (addProperty или set/get). |
|
|||||
Modus ponens
|
__etc:
фз... у мну компилятор упорно не соглашается назвать переменную конструктором =) говорит, что не стоит такое имя использовать =) Lecosson: Ну, а если эту переменную назвать как-нибудь по-другому, то пример MrProma вполне рабочий, и делает то, что вам надо. Если так уж позарез не хочется вызывать статический create: Ну, видится такой вариант реализации: Вы не создаете в вашем приложении других клипов, а только наследники такого класса + создаете класс-копозит, у которого будут методы addChild() и removeChild(), тогда эти методы смогут добавить на сцены хоть строку, а не только экземпляр какого-нибудь класса =) * т.е. ссвоего рода договоренность: если я передаю ClipContainer.addChild([class Clip]) то он создает пустой клип в своем .parent и передает Clip в его .thisClip ссылку на вновь созданый клип. Единственное, что подменить ссылки из других мест на этото только что созданый клип все равно не получится, так что Clip будет должен транслировать все мувиклипные свойства через свои свойства тому клипу, который ClipContainer создал. Но опять же, это куча соглашений с самим собой, и не надежно, потому что как только вы захотите использовать какие-то классы не из вашего проекта - вся эта схема может порушиться. + куча дополнительных методов, просто ради красивостей.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 14.07.2008 в 15:12. |
|
|||||
Регистрация: May 2008
Сообщений: 476
|
Господа! Может быть кто-нибудь приведет готовый код полноценного подкласса MovieClip, экземпляр которого создается не через статический метод create, а через использование оператора new - тема довольно актуальная, на мой взгляд.
Я понимаю, что в оффициальной литературе указывают на то, что создать такой подкласс без связывания его с символом невозможно, вернее возможно, но это будет не полноценный визуальный подкласс.
__________________
Случайность, господа, это знаете ли непознанная необходимость. |
|
|||||
Регистрация: May 2008
Сообщений: 476
|
Цитата:
__________________
Случайность, господа, это знаете ли непознанная необходимость. Последний раз редактировалось Alex_beginner; 14.07.2008 в 17:20. |
Часовой пояс GMT +4, время: 09:30. |
|
« Предыдущая тема | Следующая тема » |
Теги |
class , movieclip |
Опции темы | |
Опции просмотра | |
|
|