![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Ранее был на связке FlashIDE + FD с компиляцией в FlashIDE.
Сейчас перехожу на компиляцию в FD с использованием Flex 4 SDK, а графику создаю FlashIDE и экспортирую в swc файл. Необходимы уточнения по логике работы такой связки. Для простого примера в FlashIDE создаю клип СCircle (с графическим кругом), линкую (галочка Export for ActionScript) его с классом СCircle.as: package
{
import flash.display.MovieClip;
public class СCircle extends MovieClip
{
public function СCircle ()
{
this.x = 500;
}
}
}
Создаю в FD AS3Project, подключаю в настройках проекта Flex 4 SDK и swc файл с клипом СCircle. В FD в Main классе прописываю addChild( new СCircle ()); Компилирую – все ок, появляется круг с положением по оси X = 500. Вопрос: я хочу изменить в файле СCircle.as в конструкторе класса: this.x = 0; одним словом изменить as файл. Мне теперь надо заново в FlashIDE экспортнуть swc файл (в чем я сомневаюсь)? Ведь по логике именно в FD мы должны редактировать as файлы без перекомпиляции, а в FlashIDE создавать графику… Т.е. если мы меняем графику в клипах, то без нового экспорта клипов в swc файл не обойтись, но вот если я меняю код в классах *.as с вязанных с клипами, то вероятно как-то можно обойтись без повторного экспорта swc (т.е. без повторного Publish в FlashIDE)… |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Наследуйте свои классы от классов в swc
|
|
|||||
|
Аха. В своё время тоже недоумевал. swc компилируется единожды, потом никто перекомпилировать его от лица FlexSDK для линковки с классом не будет.
От себя добавлю, что вот конкретно мне куда удобней не наследоваться от swc, а наследоваться от Sprite и добавить туда этот swc. В чем заключается удобство я понять не могу, однако я чувствую себя крайне дискомфортно наследуясь от графики в swc.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Bgg
Мне необходимо изменить код класса СCircle, который уже связан с клипом СCircle. Фактически у меня, к примеру есть клип-уровень в который во FlashIDE я перетащил несколько клипов СCircle. Далее экспортнул в swc, в FD ф-ей addChild я добавил клип-уровень в сцену (на котором располагал еще во FlashIDE несколько СCircle) для отображения. Но вдруг решил изменить/дополнить поведение класса СCircle изменив код в файле СCircle.as - мне нужно сделать так, чтобы поведение СCircle изменилось, но я заново не экспортировал swc из FlashIDE. Psycho Tiger "Аха. В своё время тоже недоумевал. swc компилируется единожды, потом никто перекомпилировать его от лица FlexSDK для линковки с классом не будет." Как я понимаю, всегда линкуем клип с соответствующим классом *.as - только один раз в FlashIDE и экспортим в swc. Загружая swc мы получаем клип СCircle и привязанным к нему СCircle.as - создаю экземпляр СCircle.as, но далее хочу чтобы его поведение было дополнено, для этого я должен дописать код в классе СCircle. Но как его дописать, если класс встроен в swc, я же не могу изменить код в swc, да и не рационально ибо изменяя графику я снова создаю новый swc файл, но получается со старой не дополненной версией класса СCircle... Последний раз редактировалось Alexmody; 16.12.2010 в 16:18. |
|
|||||
|
На сколько понимаю, необходимо создать новый класс, который будет наследоваться от вашего класса в swc. В нем вы можете переопределить все методы и свойства. С другой стороны, если в swc-классах полно нестандартных методов, то не понятно зачем такая структура. Если swc создается для графики, так пусть выполняет исключительно эту функцию, а собственно код уже пишется в классах основного проекта.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
swc это скомпилированная библиотека. Можно наследовать и переопределять там, где это возможно. Библиотеку надо делать гибкой, чтоб не было заморочек (я не имею ввиду, что ставить везде public и Object
) |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Дело в том, что FlashIDE выступает в роли граф. редактора уровней. В нем, к примеру я создаю клип CLevel, линкую его и далее перетаскиваю визуально вручную клипы-объекты наполняющие уровень (платформы, динамические элементы, враги и пр.). В данном случае СCircle, выступает одним из таких элементов наполняющих уровень, например врагом. Получается клип CLevel содержит в себе много клипов СCircle, расставленных в нужном положении (+заданы дополнитлеьные параметры).
Классы/клипы CLevel и СCircle экспортируются в swc. Если в FD я унаследую MyCircle extends СCircle (как привел выше Bgg), то создам новый класс экземпляры которого не добавлены на уровень в класс/клип CLevel. Т.е. сейчас у нас есть клип CLevel (клип уровня игры), в котором находятся расставленные на своих местах множественные экземпляры СCircle. Если я создам класс потомок MyCircle, то условно нужно будет удалить из клипа CLevel все экземпляры CСircle и программно поместить вместо них MyCircle (который содержит дополненный код поведения), что рушит всю концепцию визуального создания уровней в FlashIDE. Т.е. суть в том, что у нас есть готовый уровень созданный в FlashIDE, который я импортирую в FD (посредством swc), а на уровне расставлены клипы СCircle связанной класс которого (СCircle.as) мне нужно дополнить, без создания нового файла swc. Psycho Tiger >>Верно. Изменить никак, только унаследовався. В таком случае, концепция FlashIDE, как редактора уровней отпадает..., т.е. необходимо делать свой редактор уровней с сохранением в xml...а с граф. объектами из swc работать с помощью управляющих классов обверток и линковать тогда не имеет смысла. Именно в этом посте я описал более подробно, с какой целью я создал данный топик. Возможно все же есть какие - то варианты чтобы FlashIDE был визуальным редактором уровней и я мог изменять связные классы в FD без наследования и пересоздания swc... Последний раз редактировалось Alexmody; 16.12.2010 в 18:12. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Я, честно говоря, когда перешел на FD, вообще перестал какие-либо классы линковать к библиотечным объектам во FlashIDE. Не вижу выгоды, а вот проблемы, как минимум с необходимостью перекомпилировать swc из-за изменения строчки кода в прилинкованном классе налицо.
Мне лично гораздо удобнее воспринимать swc как хранилище медийных объектов (графика, анимация, звуки), а весь код иметь под рукой в FD. |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Alexmody, вам уже объяснили смысл swc, динамически внутри swc ничего менять нельзя.
И идея делать редактор уровней на основе xml не так уж и плоха. Напишите отдельное приложение, которое откроет гейм-дизайнер и будет в нем составлять уровни. Как только составит по своему желанию, то нажмет кнопочку "Export XML" и вы уже получите готовый уровень в виде одного xml файла. И вообще можно и во FlashIDE все рисовать. Создаете объект, линкуете его CLevel_1. В него добавляете графические объекты вроде стен, врагов и тд и даете им имена. Экспортируете swc, и создаете класс унаследованный от CLevel_1, в котором уже доступны те самые объекты(стены, враги и тд) Там же создаете контроллеры которые управляет стеными, врагами и тд. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|