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

Вернуться   Форум Flasher.ru > Блоги > Бесполезности

обо всем по-немногу...
Рейтинг: 5.00. Голосов: 5.

Starling. Particles. StarMaker...

Запись от cleptoman размещена 05.12.2012 в 22:02
Обновил(-а) cleptoman 07.12.2012 в 13:10

Доброго времени суток, уважаемые разработчики.

Сразу хочу сказать, что статья – просто очередная статься про Starling, полезность или бесполезность которой я не могу оценить. Так уж вышло, что я недавно начал знакомство с этим фреймворком и мне показалось, что некоторые моменты не достаточно хорошо освещены разработчиками. Ну, что-то в этом духе. Речь идет о системе частиц как часть Фреймворка. О ней и о том, что в процессе получилось речь и пойдет.

Для начала: что есть такое Starling и как его использовать.

Цитата из перевода описания:

«Starling это фреймворк написанный на ActionScript 3, для работы с двухмерной графикой с использованием API Stage3D (это API доступно в средах Flash Player 11 и Adobe AIR 3). Starling в основном разработан для использования при разработке игр, но может быть использован и во многих других случаях. Starling делает возможным написание приложений, ускоренных GPU, без непосредственного взаимодействия разработчика с API Stage3D.»

Полный текст перевода можно почитать тут: http://coolisee.blogspot.ru/2011/12/starling.html
Оргигинальный текст лежит тут: http://www.bytearray.org/wp-content/...ing-latest.zip
Собственно, ссылка на оригинал есть и в переводе.
Небольшая зарисовка про Starling: http://www.adobe.com/devnet/flashpla..._Starling.html
Ну и, конечно, хелп на сайте разработчиков: http://gamua.com/starling/help/

Что нам потребуется, чтобы вся эта красотень у нас работала?
Flash Player: http://www.adobe.com/support/flashpl...oads.html#fp11
Flex SDK: http://sourceforge.net/adobe/flexsdk/wiki/Downloads/
Собственно сам Starling: http://gamua.com/starling/download/
Ну и, конечно, такая-то матерь )

Все качаем . Все ставим. Смотрим и видим, что классов-то для работы с частицами в «базовой комплектации» и нет. Если внимательно прочитали перевод или оригинальный текст по первой ссылке, то видели, что в разделе «Частицы» приведена ссылка, где можно взять дополнение к Фреймворку для работы с частицами. На всякий случай продублирую сюда: https://github.com/PrimaryFeather/St...article-System

Кстати. Или что-то у них там или что-то у меня, в итоге, но скачав все оказалось, что в основном пакете и пакете дополнения шли одинаковые классы, но в разных package. Пришлось немного поколдовать, чтоб все это сдружилось )

Это был первый упомянутый мной вначале момент, который мне не совсем понятен. Почему бы сразу все дополнения с основным пакетом не собрать в кучку?
Так же в том же разделе той же статьи идет речь о визуальном редакторе частиц, который позволяет создавать и редактировать эмиттеры и сохранять их в обычный текстовый файлик настроек, который они обозвали *.PEX (Particle Emitter).

Пример:
Код:
<particleEmitterConfig>
  <texture name="def.png"/>
  <sourcePosition x="170.00" y="256.00"/>
  <sourcePositionVariance x="60.00" y="0.00"/>
  <speed value="138.16"/>
  <speedVariance value="0.00"/>
  <particleLifeSpan value="0.7000"/>
  <particleLifespanVariance value="0.0000"/>
  <angle value="224.38"/>
  <angleVariance value="360.00"/>
  <gravity x="0.00" y="-1400.00"/>
  <radialAcceleration value="0.00"/>
  <tangentialAcceleration value="0.00"/>
  <radialAccelVariance value="0.00"/>
  <tangentialAccelVariance value="0.00"/>
  <startColor red="0.15" green="0.06" blue="1.00" alpha="1.00"/>
  <startColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.00"/>
  <finishColor red="0.00" green="0.14" blue="0.23" alpha="0.00"/>
  <finishColorVariance red="0.00" green="0.00" blue="0.00" alpha="0.00"/>
  <maxParticles value="300"/>
  <startParticleSize value="43.79"/>
  <startParticleSizeVariance value="0.00"/>
  <finishParticleSize value="138.11"/>
  <FinishParticleSizeVariance value="0.00"/>
  <duration value="-1.00"/>
  <emitterType value="0"/>
  <maxRadius value="100.00"/>
  <maxRadiusVariance value="0.00"/>
  <minRadius value="0.00"/>
  <rotatePerSecond value="0.00"/>
  <rotatePerSecondVariance value="0.00"/>
  <blendFuncSource value="770"/>
  <blendFuncDestination value="772"/>
  <rotationStart value="0.00"/>
  <rotationStartVariance value="0.00"/>
  <rotationEnd value="0.00"/>
  <rotationEndVariance value="0.00"/>
</particleEmitterConfig
Вот этот-то файлик нам и требуется для создания экземпляра ParticleDesignerPS, класса, создающий нам частицы во флэшке, согласно все той же статьи. Однако класс ParticleDesignerPS уже устарел и лежит там для обеспечения обратной совместимости и нам советуют использовать класс PDParticleSystem. Ну, нам-то все равно ).

Как именно этим всем пользоваться?
Как создать Starling экземпляр и запустить его я в этой статье описывать не буду. Впрочем я не буду сильно углубляться и в создание экземпляров систем частиц. Кратенько:

Код AS3:
 new PDParticleSystem(XML(somePEXConfigString), Texture.fromBitmapData(someBitmapData));
Что есть что объяснять не буду. На мой взгляд все достаточно очевидно. Скажу лишь, что размер текстурки ограничен 2048х2048.

В общем-то, если сильно захотеть, то можно написать любую свою систему партиклов, но мы пока разберем эту.

Теперь вернемся к ParticleDesigner. Визуальному редактору который я упоминал выше. Находится он тут:
http://www.71squared.com/particledesigner

И видим еще одну несправедливость – от под МАК. И я решил убрать эту несправедливость – написать кросплатформенный редактор на AIR сохранив существующую систему хранения данных . Возможно, что кто-нибудь из тех людей кто создавал все, что я описывал выше когда-нибудь дадут мне по лицу за это деяние. Поживем-увидим )


Собственно, написание оного приложения много времени не заняло. Дня 4.
Заодно выражаю благодарность нашему Тигре как счастливому обладателю мака да и просто отличному парню, который согласился оказать консультационную помощь по приложению донору. Побыть шпиёном, попросту говоря)

Редактор можно забрать из прикрепленных файлов внизу статьи. Дистрибутив двух видов air и exe. Берите то что кому удобней..они одинаковые.

REM: файлы слишком большие. забираем тут:
http://cleptoman.ru/starmaker/StarMaker.air
http://cleptoman.ru/starmaker/StarMakerSetup.exe

air поменьше, но требует наличие эйр рантайма (не думаю, что это проблема)
exe побольше, но эйр рантайм уже внутри дистрибутива


Немного расскажу что там есть и чего там нет.

Панель настроек самого эмиттера нагло слизана 1 в 1.
По импорту/экспорту:
Можем открывать как PEX файлики и сохранять их. Так же с сделал свой формат хранения PEX файла вместе с текстурой для него. По сути это сжатый AMF бинарник, который содержит сам PEX, текстуру виде байтов BitmapData полученной из getPixels и квадрат (bounds) этой битмапы. Чтобы читать/писать этот формат я написал пару классов, которые можете забрать во вложениях. Он имеет расширение STMF (мне показалось, что хранить 2 отдельных файла менее удобно чем один в котором все что нужно уже есть).

STMF является ассоциированным типом файлов для этого приложения. По этому можно смело дабл кликать по любому из них и работать. Так же поддерживается DRAGnDROP из системы. Оно работает и таскать можно PEX/STMF и файлы текстур PNG/GIF/JPG. Но еще надо будет потестить. Если вдруг что найдете – пишите.

Теперь чего нет – нет пока рандомизатора эмиттера, который есть в оригинальном приложении, но он появится.

Как пользовать STMF в контексте системы PDParticleSystem:

Все очень просто
Код AS3:
[Embed(source="../../../../assets/drugs.stmf", mimeType="application/octet-stream")]
private var smFileClass:Class;
…
var file:ParticleConfigFile = STMFileEncoder.decode(new smFileClass());
var rect:PixelsBounds = file.pixelsRect;
var source:BitmapData= new BitmapData(rect.width, rect.height, true, 0);
source.setPixels(new Rectangle(0, 0, rect.width, rect.height), file.textureBytes);
new PDParticleSystem(XML( file.configPEXBytes), Texture.fromBitmapData(source));
Наверное, на этом пока и все. Спасибо за внимание.

p.s. Добавил примерчик с партиклами

p.p.s Добавлю ссылку на сорсы програмулины. ковыряйте кому интересно ) https://bitbucket.org/cleptoman/starmaker
Вложения
Тип файла: zip srcs.zip (1.9 Кб, 163 просмотров)
Тип файла: zip example.zip (228.6 Кб, 213 просмотров)
Всего комментариев 25

Комментарии

Старый 05.12.2012 22:53 Astraport вне форума
Astraport
 
Аватар для Astraport
Это нужно!
Пока замечено пара небольших минусов:
1. Exe инсталлер не оставляет ни ярлыков, ни пусковых exe для запуска приложения.
2. Окно настроек бы сделать как-то поменьше и скраю, чтобы в реалтайме можно было видеть изменения.

UPDATE - по первому вопросу нашел, ярлык появился через 5 мин. после установки аппы.
Старый 05.12.2012 22:57 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
2 - тут проблема..рисовал сам, будучи ниразу не дизайнером)..если б нашелся человек )
Старый 05.12.2012 23:28 дизаитс вне форума
дизаитс
Это офигенно!
Полезный инструмент, громадная работа во благо общества, спасибо.
Старый 05.12.2012 23:48 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
собрал не очень рабочий EXE инстал..сейчас пересобрал и перезалил. до этого никогда этим не занимался..если кто может проконсультировать, например как сделать uninst нормальный - буду благодарен
Старый 06.12.2012 00:13 Hauts вне форума
Hauts
 
Аватар для Hauts
Классная штука! Обязательно потестирую.

Раньше только вот этой пользовался.
Старый 06.12.2012 01:01 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
ага..в принципе это тоже самое и работает с теми же полями )
Старый 06.12.2012 13:27 alatar вне форума
alatar
 
Аватар для alatar
Есть и online редактор.
Старый 06.12.2012 13:40 СлаваRa вне форума
СлаваRa
 
Аватар для СлаваRa
оффтоп:
у них там бага с GUI, проявляется если, например, тыкнуть в EditBackground несколько раз.
Старый 06.12.2012 14:41 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
да, Леш, спасибо..видел уже)..я как обычно сбаянил)
п.с. только чего там так разблюрено-то все?
Старый 06.12.2012 17:28 illuzor вне форума
illuzor
 
Аватар для illuzor
Цитата:
Кстати. Или что-то у них там или что-то у меня, в итоге, но скачав все оказалось, что в основном пакете и пакете дополнения шли одинаковые классы, но в разных package. Пришлось немного поколдовать, чтоб все это сдружилось
Вот это странно. Я просто подключаю к проекту директорию старлинга и директорию партиклМенеджера. Всё ок.
За редактор спасибо. Вещь хорошая.

cleptoman, Смущает, что панель настроек закрывает почти весь экран. Наверное стоит её вынести в отдельную панель или даже в отдельное окно. Посмотрите, как сделан онлайн редактор
Обновил(-а) illuzor 06.12.2012 в 19:09
Старый 06.12.2012 17:40 alatar вне форума
alatar
 
Аватар для alatar
Цитата:
п.с. только чего там так разблюрено-то все?
Частица такая.
Старый 06.12.2012 22:00 derhab вне форума
derhab
 
Аватар для derhab
спасибо
есть баг - при клике на контрол выбора цвета вся панель настроек закрывается
ну и как уже выше сказали, большая она, панель, в таком виде работать очень неудобно, не видно что ты собственно делаешь..
Старый 07.12.2012 00:28 Котяра вне форума
Котяра
 
Аватар для Котяра
отлично. а на гитхаб или битбакет не хочешь код редактора кинуть?
Старый 07.12.2012 02:52 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
Цитата:
Смущает, что панель настроек закрывает почти весь экран. Наверное стоит её вынести в отдельную панель или даже в отдельное окно. Посмотрите, как сделан онлайн редактор
это мысль...

Цитата:
есть баг - при клике на контрол выбора цвета вся панель настроек закрывается
спасибо, поправлю..там баблик вовремя не остановил )

Цитата:
отлично. а на гитхаб или битбакет не хочешь код редактора кинуть?
Кость, могу тебе персонально дать...ибо увидев все что там есть среднестатистический флэшер впадет в кому )
Старый 07.12.2012 03:01 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
Цитата:
Частица такая.
да нет..блюрит...сравни один и тот же сеттингс в двух разных прогах )
Старый 07.12.2012 11:22 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
Цитата:
есть баг - при клике на контрол выбора цвета вся панель настроек закрывается
исправлено
Старый 07.12.2012 13:11 cleptoman вне форума
cleptoman
 
Аватар для cleptoman
добавил ссыль на сорсы, если кому интересно и охота ковырять кучу непонятно как написаного кода )
Старый 07.12.2012 19:13 illuzor вне форума
illuzor
 
Аватар для illuzor
Цитата:
добавил ссыль на сорсы
Спасибо, посмотрим.
Не хватает редактору только своей страницы с описанием.
Старый 10.12.2012 13:42 BornTOFree вне форума
BornTOFree
Спасибо, очень полезно.
Старый 10.12.2012 19:25 alatar вне форума
alatar
 
Аватар для alatar
Цитата:
добавил ссыль на сорсы
.gitignore еще добавь. Нечего там бинарникам делать.
Старый 10.09.2013 15:23 TrueTroll вне форума
TrueTroll
Вот бы еще конвертер с кокосовского формата партиклов (.plist) в .pex дописать
Старый 10.09.2013 18:32 Akopalipsis вне форума
Akopalipsis
cleptoman я не могу не сказать человеку сделавшее такое спасибо - Спасибо! И у меня к Вам вопрос, у Вас в планах нет сделать тоже самое с плагином для сс ? http://desuade.com/partigen
Старый 29.04.2015 10:28 CrazyFlasher вне форума
CrazyFlasher
 
Аватар для CrazyFlasher
привет. ссылки битые...хочу посмотеть
Старый 03.05.2015 20:29 Zebestov вне форума
Zebestov
 
Аватар для Zebestov
Старый 11.05.2015 21:23 CrazyFlasher вне форума
CrazyFlasher
 
Аватар для CrazyFlasher
Не. Хотел его стэндалоне вариант посмотреть. в прочем уже не актуально
 

 


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


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