Просмотр полной версии : FlashDevelop. Символы из SWC, классы к ним свои.
D1KTAT0R
04.06.2012, 14:48
Привет! Народ, подскажите, есть у меня SWC библиотека сделанная следующим образом:
1. Рисую шейпы - экспортирую в объекты - указываю "Export for AS" и "Export in frame 1" (без последнего экспортирует только один символ).
2. Собственно делаю экспорт в SWC...
Далее я подключаю ее к FlashDevelop и вобщем-то все круто, но классы для символов уже определены автоматически. Как мне правильно для этих символов определить свои классы? По сутия хочу к готовым классам подключить нарисованные символы.
Вам поможет наследование, либо композиция. Другого не дано.
D1KTAT0R
04.06.2012, 15:11
Жаль.. Во Flash IDE можно было создать символ и описать его полностью... Хотя это не критично.
Так что Вам мешает описать его полностью? Создали графику, сохранили в swc.
1) в коде отнаследовались от созданной графики (описали полностью)
2) в коде отнаследовались от Sprite-а, добавили дитёнком созданную графику (описали полностью)
D1KTAT0R
04.06.2012, 15:36
У меня в библиотеке классы, которые должны быть потомками более общего класса - в котором присутствует основная логика для потомков. Т.е. например у меня в библиотеки треугольник, круг и квадрат (каждый с автоматически созданными классами) а мне нужно сделать их потомками базового класа "Фигура", в которой нужные методы и поля.
Я вот и подумал - нет ли приема который позволил изначально заложить свою логику в символы?
А чем вас не устраивает
2) в коде отнаследовались от Sprite-а, добавили дитёнком созданную графику (описали полностью)
?
D1KTAT0R
04.06.2012, 16:10
Вы правы. Вполне устраивает. Не подумал. Спасибо!
3) во Flash IDE выбирается для символов, которые идут на экспорт, общий класс, в котором есть какая-то логика. (правда, при любом изменении, придется всю графику перекомпилировать, либо пользоваться хаками - загрузкой в начале нужного класса, чтобы класс, созданный в Flash IDE перекрывался классом, собранным в FlashDevelope)
Я сделал проект, который показывает примерный принцип. Он не простой для понимания (я, кстати, думал, что не сработает, ан нет, работает). Если разберетесь, хорошо, но лучше использовать композицию - идеологически правильно, и без хаков.
Жаль.. Во Flash IDE можно было создать символ и описать его полностью... Хотя это не критично.
Дык там тоже нельзя было выходить за рамки наследования, т.е. нельзя было один и тот же класс назначить 2-м символам. Т.е. наследуйтесь - будет тоже самое. Используйте композицию - будет гибше.
Ещё можно получить ссылку на граф. символы ( что там? шейпы, да? ) обращением #getChildAt(). Затем забрать их и поместить в целевой класс. Ну например:
// экземпляр класса из swc
var myImportClass:MovieClip = new MyImportClass();
// получаем ссылку на один из нужных шейпов
var mySimbol:Shape = myImportClass.getChildAt( 0 ) as Shape;
// забрали и поместили в дисплей лист целевого класса с нужной логикой.
myTargetClass.addChild( mySimbol );
Дык там тоже нельзя было выходить за рамки наследования, т.е. нельзя было один и тот же класс назначить 2-м символам.
Можно было указать один и тот же base class нескольким разным символам.
ничего себе, но как это они сделали
D1KTAT0R
05.06.2012, 14:23
Друзья, всем большое спасибо за участие. По совету zuxul-а решил пересмотреть некоторые вещи и пойти по пути композиции, что облегчило мне задачу. Трюки которые вы выложили тут все учел и взял на вооружение.
Еще раз спасибо за помощь!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.