PDA

Просмотр полной версии : FlashDevelop. Символы из SWC, классы к ним свои.


D1KTAT0R
04.06.2012, 14:48
Привет! Народ, подскажите, есть у меня SWC библиотека сделанная следующим образом:
1. Рисую шейпы - экспортирую в объекты - указываю "Export for AS" и "Export in frame 1" (без последнего экспортирует только один символ).
2. Собственно делаю экспорт в SWC...

Далее я подключаю ее к FlashDevelop и вобщем-то все круто, но классы для символов уже определены автоматически. Как мне правильно для этих символов определить свои классы? По сутия хочу к готовым классам подключить нарисованные символы.

zuxul
04.06.2012, 15:08
Вам поможет наследование, либо композиция. Другого не дано.

D1KTAT0R
04.06.2012, 15:11
Жаль.. Во Flash IDE можно было создать символ и описать его полностью... Хотя это не критично.

zuxul
04.06.2012, 15:15
Так что Вам мешает описать его полностью? Создали графику, сохранили в swc.
1) в коде отнаследовались от созданной графики (описали полностью)
2) в коде отнаследовались от Sprite-а, добавили дитёнком созданную графику (описали полностью)

D1KTAT0R
04.06.2012, 15:36
У меня в библиотеке классы, которые должны быть потомками более общего класса - в котором присутствует основная логика для потомков. Т.е. например у меня в библиотеки треугольник, круг и квадрат (каждый с автоматически созданными классами) а мне нужно сделать их потомками базового класа "Фигура", в которой нужные методы и поля.

Я вот и подумал - нет ли приема который позволил изначально заложить свою логику в символы?

udaaff
04.06.2012, 15:59
А чем вас не устраивает
2) в коде отнаследовались от Sprite-а, добавили дитёнком созданную графику (описали полностью)
?

D1KTAT0R
04.06.2012, 16:10
Вы правы. Вполне устраивает. Не подумал. Спасибо!

zuxul
04.06.2012, 17:42
3) во Flash IDE выбирается для символов, которые идут на экспорт, общий класс, в котором есть какая-то логика. (правда, при любом изменении, придется всю графику перекомпилировать, либо пользоваться хаками - загрузкой в начале нужного класса, чтобы класс, созданный в Flash IDE перекрывался классом, собранным в FlashDevelope)

Я сделал проект, который показывает примерный принцип. Он не простой для понимания (я, кстати, думал, что не сработает, ан нет, работает). Если разберетесь, хорошо, но лучше использовать композицию - идеологически правильно, и без хаков.

expl
04.06.2012, 21:13
Жаль.. Во Flash IDE можно было создать символ и описать его полностью... Хотя это не критично.
Дык там тоже нельзя было выходить за рамки наследования, т.е. нельзя было один и тот же класс назначить 2-м символам. Т.е. наследуйтесь - будет тоже самое. Используйте композицию - будет гибше.

fish_r
04.06.2012, 21:27
Ещё можно получить ссылку на граф. символы ( что там? шейпы, да? ) обращением #getChildAt(). Затем забрать их и поместить в целевой класс. Ну например:



// экземпляр класса из swc
var myImportClass:MovieClip = new MyImportClass();

// получаем ссылку на один из нужных шейпов
var mySimbol:Shape = myImportClass.getChildAt( 0 ) as Shape;

// забрали и поместили в дисплей лист целевого класса с нужной логикой.
myTargetClass.addChild( mySimbol );

fljot
04.06.2012, 22:09
Дык там тоже нельзя было выходить за рамки наследования, т.е. нельзя было один и тот же класс назначить 2-м символам.
Можно было указать один и тот же base class нескольким разным символам.

expl
05.06.2012, 00:07
ничего себе, но как это они сделали

D1KTAT0R
05.06.2012, 14:23
Друзья, всем большое спасибо за участие. По совету zuxul-а решил пересмотреть некоторые вещи и пойти по пути композиции, что облегчило мне задачу. Трюки которые вы выложили тут все учел и взял на вооружение.
Еще раз спасибо за помощь!