![]() |
FlashDevelop и SWC. Поделитесь опытом.
Как бы так научиться обходиться без компиляции во Flash IDE?
Сейчас делаю в основном сайты и приложения напичканные графикой. Знаю что можно как то эту всю графику запихнуть в SWC и потом во FlashDevelope использовать символы из библиотеки в коде. Но расставлять придется все элементы интерфейса и всего остального программно и наугад (или записав координаты элементов предварительно на бумажку) при таком подходе? Еще где-то проскакивала инфа про направляющие слои для дизайна во fla файле (типа для более удобного позиционирования элементов), только не понял тогда какое отношение это к SWC имеет, а сейчас не могу найти источник чтоб вникнуть еще раз. И возможно ли расставить элементы во Flash IDE (хотябы для главной страницы) и потом уже экспортировать для дальнейшего управления кодом? Поделитесь, пожалуйста, опытом. Кто как делает? С привязкой к AS3. И если можно по подробнее. |
принцип такой ( чтобы запихнуть в swc, для начала нада установить спец компонент, для flash ide, через Adobe Extension Manager )
в flash ide создаем символ, например Main, далее создаем еще один, к примеру Container и в Container закидываем и раставляем как нада, далее кидаем на сцену ( хотя это не принципиально ) Main и в него суем Container ( это принципиально ) ,далее в linkaje символа !!!Main!!! задаем имя как всегда и экспортируем в swc, далее уже в проэкте создаем экзэмпляр Main'a и получаем раставленные обьекты в нужном порядке а теперь вопрос косвенный ,но не менее важный для меня как сделать компиляцию swc в flashDevolop ?, а то запускать два приложения и компилировать сначала swc, а потом весь проэкт, уже изрядно поднадоело, хочется чтобы все собралось за рас, если конечно такое реально |
Спасибо за ответ.
Вот только не понял что за плагин такой хитрый нужен к Flash IDE? Собственно по Вашему вопросу есть плагин Но не уверен что он работает с RC1, а может уже и персобрали (или скоро по любому сделают) А на что влияет галочка "Automatically declare stage instances" в настройках экспорта as3? |
ой наверно я перепутал с компиляцией под flex :) заработался :)
изначально же есть функция export swc ? спасибо за ответ, попробую на досуге :) |
А зачем SWC ведь можно в проект флеш девелоп да и просто mxmlc
засунуть скомпиленную флешку swf вместе с классами, если они нужны Вот ссылка, я по ней пробовал. http://blog.pirrest.com/2008/03/21/74/ Там надо отловить у Loader событие Complete, а не отлавливать первый кадр. |
ну незнаю, мне проще с swc ... уже как то привык только не удобно что swc делаю в Flash IDE
Добавлено через 6 минут насчет плагина к FD 1 он у меня exeption шлет, да и лана дело не в нем ,а вот в этой строчке Load an AS3 project тоесть получается мне нужно опять токи, сделать анлоад текущего проэкта, либо открыть второе окно и всеравно получится компиляция в два присеста ... |
Непонятен еще такой аспект:
1) Вот сделали мы во fla файле главный клип SomeContainer, в свойствах прописали ему свой класс SomeContainer. 2) Положили внуть него, допустим, компонент TextArea. 3) В настройках отключили галочку - Automaticaly declare stage instances 4) В классе SomeContainer объявили член класса - public var ta:TextArea; 5) В конcтрукторе выставили нужные св-ва у ta. 6) Скомпилировали SWC, подключили во FD. Теперь во FD нашли нашу переменную SomeContainer, сделали var cont:SomeContainer = new SomeContainer(); addChild(cont); получаем ошибку, что типа объект равен null при выполнении пункта 5, ну и на сцене ничего собственно нет. Код:
Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".Fault, init() at SomeContainer |
Цитата:
Но, опять же, дело привычки. Мне не в напряг пару лишних раз перекомилировать, чтобы поставить компонент в нужное место. По поводу SWC - осторожно с RC1-RC2 (FlashDevelop 3 release build) желательно ставьте девятую бету, пока что... в последних билдах SWC можно было подключить только вручную вписав их в файл проекта, а при добавлении их в проект через GUI будут ошибки. Но хочется верить, что пофиксят это дело скоро... |
незнаю рационален ли мой подход
я делаю swc в flash, ( понеобходимости привязываю им классы ) далее в основном проэкте в FD, в library добавляю ( addLibrary ) и уже управляю ими как мне нужно , компоненты у меня на уровне обратной формы ( тоесть в компоненте есть класс который все делает ), а из основного проэкта я уже не заботясь о мелочах, просто создаю передавая нужные аргументы ( язык например ) конечно это не верх айсберга, просто как пример ( только что делал компонент и в пример привел)) ) единственно напрягает, компилировать вначале компонент ,а потом проэкт ( когда всю ночь не спал, забываешь их нафиг компилировать и очень долго начинаешь в тыкать, почему только что внесенные изменения не работают :D ) |
2 darksranger:
А обязательно ли обворачивать все двумя клипами Main и Container? Возможно ли обернуть в один, скажем Main и кинуть его на сцену и откомпилить, так получится получить все элементы на своих местах? 2 wvxvw: Я не совсем про компоненты, я про графику и позиционирование элементов. Т.е как максимально упростить процесс размещения элементов дизайна (а их часто немало) на сцене? Ну вот допустим есть сайт на 4 раздела. 4 кадра (или более для анимации переходов между разделами) с метками по названиям разделов. Если всю эту структуру оберну мувиклипом и сделаю експорт в SWC доступны мне будут названия меток для переходов программно, доступны ли отдельные символы которые я на кидаю на сцену и те символы которые внутри этих символов? Или в мувиклипах в которых анимация тоже есть метки и stop()'ы... Вообщем вопросов куча :), я, конечно, сейчас сам начну экспериментировать и пробовать что там к чему. Просто хотелось бы услышать/увидеть/прочитать накопленный опыт людей кто это уже делал/ет. Еще есть что то типа инъекций кода в swf, это не то, да? :) И все же - за что отвечает галочка "Automatically declare stage instances"? И как с ней быть при експорте в SWC? |
Вложений: 1
возможно кому пригодится такой расклад (меня пока полностью устраивает):
IDE при компиляции "не видит" классов проекта, т.е. ей в качестве Source path указываем на "левую" папку в этой папке и храним классы, описывающие свойства/логику объектов, которые попадут в SWC FD-шный же проект в свою очередь не видит этой папки и тянет уже скомпиленные классы их SWC если классы IDE-шных объектов должны взаимодействовать с классами основного проекта, то сложнее, но тоже есть варианты, хотя это неверный подход изначально и лучше его избегать в аттаче вариант для примера marat_sa ps. у меня вся эта структура изначально забита в дефолтовый AS3-шный темплет, чтоб не заморачиваться всякий раз созданием |
2 silin
Спасибо, я тоже пришел к выводу (после проб и ошибок), что классы мы прописываем и привязываем для SWC, а SWC, в свою очередь привязываем к пректу. Получаем класс с ассоциированным с ним элементом библиотеки (при компиляции без входного swf-файла у нас и библиотеки-то нет). Просто испугался, думал я что-то не так делал)) |
Спасибо всем за советы.
На все вопросы в предыдущем своем посте я получил утвердительные ответы путем экспериментов. Вообщем моя схема примерно такая: 1. Создаем пустой мувиклип и задаем ему Linkage name (например mcMain_background) 2. Размещаем все необходимые элементы соответсвенно дизану в этом клипе и прописываем им instance name. Можно настроить и анимацию переходов между кадрами/разделами, вообщем любая привычная схема по таймлайну пройдет. 2.1 Таки образом можно собрать все необходимые елементы интерфейса и потом добавлять их на сцену программно по необходимости. 3. Размещаем этот мувик на сцене как Guide Layer, для удобного редактирования Вам или дизайнеру (в кончный swf и SWC он не попадет) 4. Подключаем Document Class к флешке 5. В настройках экспорта галочку на Export SWC. 6. Снимаем галочку с "Automatically declare stage instances". В FlashDevelop правой кнопкой на SWC и "Add To Library" Теперь у нас доступны все мувиклипы с Linkage ID, и автокомплит для клипов с instance name (внутри главного клипа в том числе). И проект компилируется и в Flash IDE и в FlashDevelop (т.к не все знают о существовании и основ работы с FlashDevelop), это хорошая альтернатива и универсальность. Вообщем всем спасибо. Пока все вопросы по этой теме у меня отпали. |
Во Flash CS4 в настройках проекта появилась возможность подключать внешние SWC-файлы и работать с ними как с внешними библиотеками.
То есть это как бы как в механизм AuthorSharingLibrary? Мы можем, допустим, в нашем проекте сделать кнопку в button.SWC файле, а потом при создании нескольких игровых экранов, везде подключить button.SWC с кнопкой. Т.е. фактически кнопка у нас будет одна, а при публикации основного SWF файла она подтянется во все наши SWC из своего исходного файла button.SWC, без дублирования символа и без каких-либо осложнений. Подскажите, как настроить подключение внешних SWC во Flash CS4? Там вкладки: SourcePath, Library Path, External Library Path, Config Constans, что куда прописать? |
можно со словарём посидеть минутку... вдруг на идеи на всякие натолкнёт...
|
silin, Mur4ik, marat_sa,
я ничего не упускаю? почти при каждом изменении кода вы компилируете аж два раза? один раз во Flash IDE для создания swc, потом флексовым компилятором из-под FD? если так - зачем?? это же 1) неудобно. по два раза, в разных местах. 2) какой толк от компиляции mxmlc'ом? выйгрыша скорости нет. и как там подебажить, если пол-проекта уже скомпилировано |
2 BlooDHounD, я прописывал пути в проекте и до папки с SWC и файлы сами указывал, но почему-то в проекте они не появлялись, reload делал в панели components... Ничего не получилось((( Просто хотел спросить, как правильно? Может я чего не то делаю?
2 fljot, а как еще можно? В IDE рисуется, собственно, вся графика, ассоциируется с соответствующим классом, компилиться в SWC. Потом уже, в основном проекте, подцепляем полученную SWС и юзаем ее классы. Может можно проще? Подскажите :-) |
fljot, если меняется IDE-шная часть, то конечно перекомпилять ее надо, но меняется она редко, если основная разработка в FD..
насчет выигрыша в скорости ты заблуждаешься - есть и приличный (плюс не приходится перекомпилировать уже скомпиленную часть) |
marat_sa,
я во Flash IDE компилирую графику. абсолютно без кода. и потом пользуюсь дериктивой Embed скажем, есть у нас какой-то контейнер хедер. в нём несколько нарисованных кнопок. во Flash IDE делаем клип Header, выставляем ему linkage Header. в нём несколько кнопок(скажем, с одинаковым функционалом) c линкеджами Section1Button, Section2Button... и instance names btn1, btn2... компилируем swf один раз, больше не нужно. закрываем Flash IDE нафик) далее примерно следующее: Код AS3:
silin, про выйгрыш я имел ввиду при компиляции в двух местах. |
marat_sa
эм насколько мне известно swc для этого и делаются что бы один компонент можно было импортировать а создать уже в разных местах не ограниченным количество или я щас не об этом ? что касается fljot, ну если вы не можете в FD ,отдебажить то это не говрит что у всех так, ... есть Alcon, есть еще куча всего, ... у меня все дебажится и работает на ура, единственно парит конечно перекомпилировать swc ,в flash IDE но это мелочи по сравнению с редактором кода в flash IDE ... да и кстате FD компилирует то, только измененую область ... так что не понятна ваша мысль про медленее ... |
darksranger
Ну в принципе да, но при использовании варианта, предложенного fljot, потребность в них вроде отпадает, если дергать только графику... Попробовал подключить всю графику через метатэг Embed. Во FlashDevelop всё прекрасно заработало. А вот FDT под Eclipse ругается((( Вобщем в SWF файле Tree.swf в бибиотеке лежит клипа treePart1 с linkage TreePart1, baseClass - Sprite. В главном классе делаю: Код AS3:
Код:
Tree_TreePart1.as(11): col: 45 Error: Определение базового класса SpriteAsset не найдено. |
marat_sa,
я под FDT. во-перых, вы не описались где-нибудь с линкеджми? тут вы написали treePart1 и TreePart1.. потом, BaseClass оставьте впокое. пусть там по-умолчанию будет мувиклип. и приведите побольше кода, а то не очень ясно Добавлено через -15 секунд marat_sa, я под FDT. во-перых, вы не описались где-нибудь с линкеджми? тут вы написали treePart1 и TreePart1.. потом, BaseClass оставьте впокое. пусть там по-умолчанию будет мувиклип. и приведите побольше кода, а то не очень ясно |
В общем FDT AS3 проект:
В корне в папке src лежат 2 класса Main и Tree. В корне в папке lib имеется Tree.swf. В котором в библиотеке лежит вышеописанный символ с linkage TreePart1. Main.as: Код AS3:
Код AS3:
|
для начала
Код AS3:
потом символ Tree существует? после этих фиксов уже можно дальше будет смотреть |
addChild(treePart);
Если TreePart1 существует, и до него можно добраться, то treePart надо привести к DisplayObject, ну, или, как минимум к базовому класу класса treePart1. А вообще, зачем символ и класс одинаково называть? Потом путаница будет... и, даж не знаю, компайлеру тоже может не понравится... |
Вложений: 1
Я уже не знаю, что этому FDT не нравиться(((
Вобщем вот пример, там в папке bin рабочая версия из FD и нерабочая Main.swf от FDT. Там дерево - Tree за голову тянешь - появляются new TreePart1(); 2 wvxvw А как лучше и правильнее называть класс элемента и linkage его графического элемента? Просто я не юзал данную технику)) |
marat_sa,
в FDT без проблем скомпилировалось и работает. попробуйте сделать project -> clean может.. мож чего в кеше, потому что у меня всё ок |
Всё, разобрался. Core Library стояла CS3, выставил Flex3 либы - заработало.
O_o Классы что ли ущербные у playerglobal.swc стандартного... Вобщем, fljot и всем спасибо за помощь))) Код в кадрах для управления воспроизведением MovieClip'oв не работает чтоли? Как быть? |
>> Код в кадрах для управления воспроизведением MovieClip'oв не работает чтоли? Как быть?
Если так уж нужен код в кадрах... =/ Создаем свой класс, который прилинковываем к символу, который собираемся использовать, в классе через addFrameScript(func, frame) добавляем какую-то из функций к нужному кадру и используем этот класс из SWC. |
| Часовой пояс GMT +4, время: 04:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.