Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Разработка на Flash (ActionScript 3.0), Полезности, тонкости. Среда для разработки игр.
ALexusB
сообщение Jan 13 2011, 12:06
Сообщение #1


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Совместно с темой "Разработка на PHP + MySQL" открываю зеркальную тему по Flash (ActionScript 3.0).

Путь в мир Flash лежит через две разные двери:
1. дизайнерский вход, когда в среде самого флэша рисуются на timeline мувиклипы и графика, потом это все кликами через менюхи собирается в некую анимацию и прочие заготовки для скриптинга
2. программистский вход - Flash или вообще Flex - просто среда компиляции, все пишется в коде, графика грузится на лету при запуске или линкуется в компиляции из внешних файлов.

Я рисовать не умею, потому тут речь пойдет о двери №2, но линки будут и на рисование в самом флэше, т.к. в идеале нужно уметь все или иметь под рукой друга-художника.

Для начала два полезных блога, одинаковой направленности - рецепты от их авторов.
http://xitri.com/ - отличная визуализация объяснений в виде интерактивных флэш-перезнаций
http://www.anegmetex.com/devblog/ - много трюков и историй паблишинга готовых игр

С чего начать изучать флэш (и чего по сути и достотчно и далее можно и не читать больше, а только практика и инет форумы) - это две книги издательства O'Reilly
ActionScript 3.0 Сборник рецептов
и вторая, названия забыл smile.gif Они оч позхожи и на 90% пересекаются, но вторая идет последовательно, как ставить и начать.

далее мануаль самого Адоба
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...ex-Symbols.html
Тут просто читаем описания нужных там классов и методов и смотрим примеры.

Ну и редактор нужен нормальный, т.к. штатный в IDE - фигня.
Есть FlashDevelop - http://www.flashdevelop.org/community/


Начну я сам с тонкостей.

Открыл тут для себя случайно (с переездом хостинга на более дешевый), что во флэш Loader.load() запущенные последовательно делают несколько отдельных каналов в терминах хостинга, то есть лимитируются хостингом (например, 10 каналов с 1 IP адреса).
Так флэшка запущенная в окне браузера, работает не как 1 окно, а как 20-40 сразу.
И получает обломы в виде ошибки 503 "Файл временно недоступен". То есть, он есть, но "не дам".
На полноскоросных, с большими лимитами, хостингах это все не заметно. Так же это актуально для флэшей не "все в одном", а грузящих ресурсы (например ММО игры).

Проявления:
Флэшка виснет, не получает нужные ресурсы (пустые места, если нет проверок в коде). Требует 3-4 рефреша в браузере, что бы кэш браузера заполнился и тогда она все 100% ресурсов получит уже из него.

Вариант - писать пользователям - жмите рефреш 3-4 раза - не вариант smile.gif

Спасения:
1. Хороший хостинг (хотя и там бывают упирания в потолок, а обнаружить их сложнее, так что это не выход)
2. Делать мало ресурсов, объединяя их в общие толстые файлы-библиотеки, но все равно быть уверенным, что они грузятся последовательно, я не параллельно. Или все сводить к одному файлу без ресурсов вообще.
3. Сделать свой лодер, который будет лимитировать каналы, например, до трех и ждать, когда они освободятся.

Очень наглядно работу с ресурсами показывает браузер Firefox с плугином FireBug - там просто на графике (в виде диаграммы Ганта) видно, что и как грузится.
Я добился смены графика "все и сразу" на "лесенку" и выживаемость флэшки с первой загрузки.
То есть написал свой лодер и кэш внтури самого флэша.

Но есть и другие способы. Из переписки со Stormit (автором хитри.ком):
Лично я обычно не гружу всё и сразу, а добавляю загрузки в массив и гружу их по очереди.
Есть ещё такой лоадер, может будет полезен: http://code.google.com/p/bulk-loader/
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов(1 - 14)
ALexusB
сообщение Jan 18 2011, 00:05
Сообщение #2


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Тема: Таймеры
Есть во флаше три способа таймеров
1. Класс Timer - можно задавать повторы
2 метод setTimeout (и соседние по останову)
3 Обновление кадра (считать кадры, переводить во время)

первые два ИМХО одинаковые, видимо метод ядровый, а класс поверх него.
В начале я юзал п1, потом, когда нашел, п2 и только его - удобнее в разы, не нужно new делать. Хотя по документации как раз setTimeout - рудимент.
Оба таймера врут с точностью до 50мс, по сути до 1 кадра. Со времен ДОС читал книжки, что время в ПК считается в "тиках". 1 тик = 1/18 сек. Так что это 0.055 или 55 в терминах таймера. Потому выше точности и не должно быть архитектурно. Если погуглить, то есть статьи с замерами погрешности, ссылки не сохранял.

Способы 1-2 имеют ограничения - они плюют на .stop() анимации, то есть выполнятся по таймеру и все тут.

А вот п3 позволяет стопить все, но таймера готового нет, нужно просто кодить перывание и там все решать. Либо писать свой некий универсальный класс, но прерывание все равно вешать штутчно.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Feb 10 2012, 21:57
Сообщение #3


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



http://www.3dnews.ru/software-news/624310
Некая общая тенденция с неподдержкой флэша на иПадах, а теперь еще и Андройд
.... "Таким образом, можно сделать вывод, что эра Flash-технологий неуклонно движется к концу."
грустно - нафиг тогда ее (технологию флэш) развивать вообще дальше?
Это при том, что в Unity 3.5 появилась кнопочка с сохранением во флэш (или флэш плеер стал юнити поддерживать, не вник)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Commandor_S
сообщение Feb 11 2012, 10:11
Сообщение #4


Commandor всея Руси & the Caribbean ;)
*******

Ветеран ТРЁПаВетеран Форума
Группа: форумчанин
Сообщений: 2,025
Регистрация: 18-November 04
Из: г. Донецк. Украина. Европа. Земля
Пользователь №: 96



Цитата(ALexusB @ Feb 10 2012, 20:57) *

http://www.3dnews.ru/software-news/624310
Некая общая тенденция с неподдержкой флэша на иПадах, а теперь еще и Андройд
.... "Таким образом, можно сделать вывод, что эра Flash-технологий неуклонно движется к концу."
грустно - нафиг тогда ее (технологию флэш) развивать вообще дальше?
Это при том, что в Unity 3.5 появилась кнопочка с сохранением во флэш (или флэш плеер стал юнити поддерживать, не вник)

Ну и ладно. О том, что флэш умирает говорить рано. Просто мобильные платформы его не будут поддерживать... да и не очень то хотелось, всё ж таки флэш дофига ресурсов жрёт (как для мобильных). Просто нужно будет либо ещё одну еденицу в штат вводить либо увеличивать работу програмеру на пятом ХТМЛе. Делов то.
С другой стороны, стоимость разработки на флэш упадёт. Тут с какой стороны посмотреть: Хозяину выгодно, работнику не очень. dry.gif smile.gif


З.Ы. Если разобраться: Человек учил-учил флэш... хоп, а он нафик никому не нужен. Будь добр переучивайся. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
InkyFreeman
сообщение Feb 11 2012, 20:30
Сообщение #5


Символ Пиратизма
*******

Ветеран Форума
Группа: форумчанин
Сообщений: 1,311
Регистрация: 27-September 05
Пользователь №: 1,270



как это понимать книги по Флешу - выбрасывать что ли,,,,
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Feb 11 2012, 21:08
Сообщение #6


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Книги? жечь и плакать! wink.gif

Мне ActionScript 3 оч понравился, как язык и подход - реально современно и не C# и не Ява
Не думаю, что его выкинут, останется как Flex или сольется куда (в туже Юнити, как третий скриптовый язык)
Флаш реально жрет ресурс, что не тянули на мобилках

Относительно "нужно переучиваться" - это везде так.
Привыкли, что Ява и С++ вечны с 80х годов.
А вот 1С 8х версий кипит и булькает и народ там фигеет от каждого обновления.
У Микрософта в ее Dynamics линейке не лучше - я вот на реальном распутье карьерном сча - мне что след версию изучать, что любую другую систему - один фиг, оч сильно все поменяли, уже не совместимо с мозгами (потому для полноты понимания поизучал 1С 8.2 с ее управляемыми формами и узнал, что почти все конфигурации все еще на "старых" формах - о как, технология все еще не используется)
Так что, для меня это, как некая амнистия даже - соскочил с 10 летней иглы, можно оглянуться и вообще выбрать что-то другое (в те же игрушки пойти с концами, тк сча там денег как в ERP системах стало - за счет легких и больших соц доходов)

А вот Юнити оч круто шагнула, кто на него поставил, тот угадал - и спрос уже как на флешеров и перспективы, тк кроссплатформер и развивается бурно.
Всякие геймбрио Юнити уже точно уделала по возможностям (и это все сетевое и в браузере может работать!)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
navy
сообщение Feb 15 2012, 12:08
Сообщение #7


Hagane no Renkinjutsushi
*******

Seaward TeamВетеран ФорумаЗаслуженный Корсар

Группа: Seaward.Ru Team
Сообщений: 5,970
Регистрация: 15-March 05
Из: Волгоград
Пользователь №: 578



Цитата
Флаш реально жрет ресурс, что не тянули на мобилках

И не только на мобилках smile.gif порой комп загибается....

Дело в том, что есть HTML5, который легче быстрей и проще чем Flash. Та же ситуация и с SilverLight, а он мне нравился больше, ибо не тормозной. Хотя заморочки те же.
вот примеры HTML5
http://habrahabr.ru/blogs/webdev/97443/

Сам сейчас на распутье... есть много интересных идей, и одну я сейчас активно разрабатываю.... Все же на мой взгляд дело за WEB. Даже 1ц уже прикрутили веб-морду.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
djfc
сообщение Mar 6 2012, 21:51
Сообщение #8


новичок
*


Группа: Members
Сообщений: 2
Регистрация: 6-March 12
Пользователь №: 29,014



Ребят помогите не могу сделать кнопку по типу как в контакте "вверх",проблема в том что кнопка должна быть на action script 3.0 а сам сайт на html
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Mar 6 2012, 22:49
Сообщение #9


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



вконтакт не пользовал, но суть такая
делаешь кнопку, как тебе нравится (анимированную, интерактивную) на флаше, потом ее обрабатываешь внутри div в хтмл на яваскрипте, если она там как-то еще ползать должна по хтмл странице
Внутри кнопки на прерывании наведения, нажатия вешаешь нужные обработки.

Самое простое - это посмотреть, как именно работает нужное тебе.
Код весь этот открыт, изучи ХТМЛ этой страницы с кнопкой, скачай по ссылкам из исходника страницы .js, что в нем подгружаются и их изучи.
Скачай саму флашку (по ссылке в исходнике), если нужно, то и ее код можно изучить.

Пойми идею и сделай все аналогично.

Или можно потратить кучу времени на просмотр бесплатных контролек на всяких флашовых развалах\форумах и подыскать что-то на свой вкус.
Там будет идти набор с примером подключения в свою страницу.
Но подбор подходящего может занять больше времени, чем изучить уже работающее в конкретном месте.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
djfc
сообщение Mar 10 2012, 23:23
Сообщение #10


новичок
*


Группа: Members
Сообщений: 2
Регистрация: 6-March 12
Пользователь №: 29,014



Вот смотрите у меня есть js кнопка при нажатии на которую скролл бар становиться вверх все нормально,но мне нужно чтоб кнопка была flash и при нажатии на неё срабатывал js,читал про взаимодействия action script 3.0 и java script ну ничего подходящего мне не нашел
Вот сам скрипт
Код
<form>
<p align="center" object
<button  type="" onClick="scrollTo(0,0); return false;"  height="30" width="30"> <img src="vverh.png" alt="Вверх">
    <a ></a><td>
    </button>  
    
    </p align="center" object>
    <br>
    </br>
        
</form>
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Warship
сообщение Mar 11 2012, 05:42
Сообщение #11


Гроза морей
*****

Ветеран ФорумаЗаслуженный КорсарСоздатель Модов к ГПК
Создатель Модов к КВЛ
Группа: бета-тестер
Сообщений: 441
Регистрация: 29-April 07
Из: Прим. край г. Находка
Пользователь №: 9,103



В AS3.0 насколько помню нужно юзать ExternalInterface - http://help.adobe.com/ru_RU/FlashPlatform/...lInterface.html

Как пример:
AS3.0:
Код

// Устанавливаем функцию, которая будет вызываться при получении данных от JS
if(ExternalInterface.available)
{
    try
    {
        ExternalInterface.addCallback("processMovieData", onReceiveFromJavaScript);
    }
    catch(_error:SecurityError)
    {
        trace("A SecurityError occurred: " + _error.message);
    }
    catch(_error:Error)
    {
        trace("An Error occurred: " + _error.message);
    }
}

// Посылаем запрос в JS.
if(ExternalInterface.available && Boolean(ExternalInterface.call("isReady")))
{
    ExternalInterface.call("processPageData", "commandId=scrollTop");
}

// Метод, вызываемый при получении данных от JavaScript.
private function onReceiveFromJavaScript(_data:String):void
{
    trace(_data);
}


JS:
Код
<script type="text/javascript">
    var isJSReady = false;
    
    $(document).ready
    (
        function()
        {
            isJSReady = true;
        }
    );
    
    // Функция возвращает логическое значение, которое показывает, доступен ли JavaScript.
    function isReady()
    {
        return isJSReady;
    }
    
    // Функция выполняет отправку указанных данных в флаш-ролик.
    function sendToActionScript(_data)
    {
        if(navigator.appName.indexOf("Microsoft") != -1)
        {
            window["flashCanvas"].processMovieData(_data);
        }
        else
        {
            document["flashCanvas"].processMovieData(_data);
        }
    }
    
    // Функция, вызываемая при получении данных от флаша.
    function processPageData(_data)
    {
        // _data - строка вида "commandId=someCommand&someParam0=someValue0&someParam1=someValue1 ...".
        // Парсить ее, получать параметры и делать что угодно с роликом, страницей или вообще отправлять на сервер.
        // scrollTo(0,0);
        sendToActionScript(_data + "&status=success");
    }
</script>


По ссылке выше точно такой-же почти пример есть.
flashCanvas - ID флаш-объекта со страницы, в который встраивается ролик.

Скролить из ролика страницу - это сильно smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Quatermain
сообщение Sep 15 2012, 17:33
Сообщение #12


юнга
**


Группа: форумчанин (*)
Сообщений: 10
Регистрация: 15-September 12
Пользователь №: 31,741



Вот моя первая игрушка http://www.playground.ru/flash/shot/zvezdn...vstantsa-12561/
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
InkyFreeman
сообщение Sep 15 2012, 17:58
Сообщение #13


Символ Пиратизма
*******

Ветеран Форума
Группа: форумчанин
Сообщений: 1,311
Регистрация: 27-September 05
Пользователь №: 1,270



ну, типа с учебника . Хотя и это похвально.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Dec 20 2012, 20:58
Сообщение #14


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Грустные вести:
Флаш плеер не работает на Андройд 4.1
http://habrahabr.ru/post/146755/

И вроде даже Виндовс 8 и в браузере ИЕ 10 (линк потерял на статью)
Все, все его гнобят! sad.gif
Поставить на Андройд 4.1 флаш все еще можно http://4pda.ru/2012/07/30/67533

Рынок, однако, решили выпихнуть и сами нишу занять.
При этом сам Адоб тоже забил на это, но не на сам флаш.
Развивается среда флаш AIR
И, о чудо, даже на иФоны\Пады и гуглфоны все работает.

http://habrahabr.ru/post/128846/ - крайне полезная статья для разработки под мобилы

А теперь новость радостная (интересная):
известная игра Машинариум, сделанная на флаше, занимала топовые места в аппл сторе для иПад2
То есть, флаш игры на иОС все ж возможны.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Dec 25 2012, 22:56
Сообщение #15


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



занялся конвертацией моей проги-говоруна для телефона.
http://www.seaward-online.ru/files/ABC/talker.swf

Столкнулся с проблемой вставки кучи ресурсов внутрь флашки (там 263 файла мр3)

ручками в библиотеке каждому поставить имя и галку выгруза в АС3 можно, но уж оч муторно, потом еще массив инитить в коде из этих разноименных классов.

Можно написать на самом флаше скрипт, который вернет в трайс() код для вставки в код (тем более у меня все звуки описаны в ХМЛ, то есть циклом можно пройтись)

[Embed(source="../RESOURCE/Sounds/Interface/click.mp3")]
public static var SndClick:Class;

Но такой подход приводит к двум вещам:
1. Для компиляции из Флаша нужен Flex SDK, его нужно ставить или из Flash Buildera взять (ссылку на его путь)
2. все грузится в первом кадре, то есть прелодер не работает, пока не загрузится все и сразу

Как победить прелодер нашел статью (оч полезна, в конце есть пост с теорией)
http://www.flasher.ru/forum/archive/index.php/t-156991.html

Но пока не проделал, тк мне милее способ, который хочу попробовать, нужно на втором кадре разместить клип, подсунуть ему класс мой. И вот в этот клас уже эмбедить все звуки.
Тогда по идее клип загрузится именно в конце, а прелодер в первом кадре сразу.

Но и путь из статьи хорош (если в флашке 1 кадр)

=====
Особенность встройки ХМЛ, нужно писать
[Embed(source="../RESOURCE/XML/SoundVoice1.xml", mimeType="application/octet-stream")]
public static var xmlTest1:Class;
Иначе трактуется неверно и данных в нем нет
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th March 2024 - 19:12

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100