Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.12.2010, 15:19
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 1  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
По умолчанию Связка FlashIDE + FD с компиляцией в FlashIDE

Ранее был на связке 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;
		}
	}
}
Т.е. при создании экземпляра класса СCircle в конструкторе устанавливается положение по оси 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)…

Старый 16.12.2010, 15:24
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 2  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Наследуйте свои классы от классов в swc
Код AS3:
package  
{
import flash.display.MovieClip;
 
	public class MyCircle extends СCircle
	{
		public function MyCircle ()
		{
			//чо хочу, то пишу
		}
	}
}

Старый 16.12.2010, 15:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Аха. В своё время тоже недоумевал. swc компилируется единожды, потом никто перекомпилировать его от лица FlexSDK для линковки с классом не будет.

От себя добавлю, что вот конкретно мне куда удобней не наследоваться от swc, а наследоваться от Sprite и добавить туда этот swc. В чем заключается удобство я понять не могу, однако я чувствую себя крайне дискомфортно наследуясь от графики в swc.

Старый 16.12.2010, 15:57
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 4  
Ответить с цитированием
Alexmody

Регистрация: 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.
Старый 16.12.2010, 17:14
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
На сколько понимаю, необходимо создать новый класс, который будет наследоваться от вашего класса в swc. В нем вы можете переопределить все методы и свойства. С другой стороны, если в swc-классах полно нестандартных методов, то не понятно зачем такая структура. Если swc создается для графики, так пусть выполняет исключительно эту функцию, а собственно код уже пишется в классах основного проекта.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 16.12.2010, 17:26
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Загружая swc мы получаем клип СCircle и привязанным к нему СCircle.as - создаю экземпляр СCircle.as, но далее хочу чтобы его поведение было дополнено, для этого я должен дописать код в классе СCircle. Но как его дописать, если класс встроен в swc, я же не могу изменить код в swc, да и не рационально ибо изменяя графику я снова создаю новый swc файл, но получается со старой не дополненной версией класса СCircle...
Верно. Изменить никак, только унаследовався.

Старый 16.12.2010, 17:27
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 7  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
swc это скомпилированная библиотека. Можно наследовать и переопределять там, где это возможно. Библиотеку надо делать гибкой, чтоб не было заморочек (я не имею ввиду, что ставить везде public и Object )
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 16.12.2010, 17:39
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 8  
Ответить с цитированием
Alexmody

Регистрация: 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.
Старый 16.12.2010, 17:44
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 9  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я, честно говоря, когда перешел на FD, вообще перестал какие-либо классы линковать к библиотечным объектам во FlashIDE. Не вижу выгоды, а вот проблемы, как минимум с необходимостью перекомпилировать swc из-за изменения строчки кода в прилинкованном классе налицо.

Мне лично гораздо удобнее воспринимать swc как хранилище медийных объектов (графика, анимация, звуки), а весь код иметь под рукой в FD.

Старый 16.12.2010, 18:20
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 10  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Alexmody, вам уже объяснили смысл swc, динамически внутри swc ничего менять нельзя.

И идея делать редактор уровней на основе xml не так уж и плоха. Напишите отдельное приложение, которое откроет гейм-дизайнер и будет в нем составлять уровни. Как только составит по своему желанию, то нажмет кнопочку "Export XML" и вы уже получите готовый уровень в виде одного xml файла.

И вообще можно и во FlashIDE все рисовать. Создаете объект, линкуете его CLevel_1. В него добавляете графические объекты вроде стен, врагов и тд и даете им имена. Экспортируете swc, и создаете класс унаследованный от CLevel_1, в котором уже доступны те самые объекты(стены, враги и тд) Там же создаете контроллеры которые управляет стеными, врагами и тд.

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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