Совместно с темой "Разработка на PHP + MySQL" открываю зеркальную тему по Flash (ActionScript 3.0).
Путь в мир Flash лежит через две разные двери:
1. дизайнерский вход, когда в среде самого флэша рисуются на timeline мувиклипы и графика, потом это все кликами через менюхи собирается в некую анимацию и прочие заготовки для скриптинга
2. программистский вход - Flash или вообще Flex - просто среда компиляции, все пишется в коде, графика грузится на лету при запуске или линкуется в компиляции из внешних файлов.
Я рисовать не умею, потому тут речь пойдет о двери №2, но линки будут и на рисование в самом флэше, т.к. в идеале нужно уметь все или иметь под рукой друга-художника.
Для начала два полезных блога, одинаковой направленности - рецепты от их авторов.
С чего начать изучать флэш (и чего по сути и достотчно и далее можно и не читать больше, а только практика и инет форумы) - это две книги издательства O'Reilly
и вторая, названия забыл Они оч позхожи и на 90% пересекаются, но вторая идет последовательно, как ставить и начать.
далее мануаль самого Адоба
Тут просто читаем описания нужных там классов и методов и смотрим примеры.
Ну и редактор нужен нормальный, т.к. штатный в IDE - фигня.
Есть FlashDevelop -
Начну я сам с тонкостей.
Открыл тут для себя случайно (с переездом хостинга на более дешевый), что во флэш Loader.load() запущенные последовательно делают несколько отдельных каналов в терминах хостинга, то есть лимитируются хостингом (например, 10 каналов с 1 IP адреса).
Так флэшка запущенная в окне браузера, работает не как 1 окно, а как 20-40 сразу.
И получает обломы в виде ошибки 503 "Файл временно недоступен". То есть, он есть, но "не дам".
На полноскоросных, с большими лимитами, хостингах это все не заметно. Так же это актуально для флэшей не "все в одном", а грузящих ресурсы (например ММО игры).
Проявления:
Флэшка виснет, не получает нужные ресурсы (пустые места, если нет проверок в коде). Требует 3-4 рефреша в браузере, что бы кэш браузера заполнился и тогда она все 100% ресурсов получит уже из него.
Вариант - писать пользователям - жмите рефреш 3-4 раза - не вариант
Спасения:
1. Хороший хостинг (хотя и там бывают упирания в потолок, а обнаружить их сложнее, так что это не выход)
2. Делать мало ресурсов, объединяя их в общие толстые файлы-библиотеки, но все равно быть уверенным, что они грузятся последовательно, я не параллельно. Или все сводить к одному файлу без ресурсов вообще.
3. Сделать свой лодер, который будет лимитировать каналы, например, до трех и ждать, когда они освободятся.
Очень наглядно работу с ресурсами показывает браузер Firefox с плугином FireBug - там просто на графике (в виде диаграммы Ганта) видно, что и как грузится.
Я добился смены графика "все и сразу" на "лесенку" и выживаемость флэшки с первой загрузки.
То есть написал свой лодер и кэш внтури самого флэша.
Но есть и другие способы. Из переписки со Stormit (автором хитри.ком):
Лично я обычно не гружу всё и сразу, а добавляю загрузки в массив и гружу их по очереди.
Есть ещё такой лоадер, может будет полезен:
Тема: Таймеры
Есть во флаше три способа таймеров
1. Класс Timer - можно задавать повторы
2 метод setTimeout (и соседние по останову)
3 Обновление кадра (считать кадры, переводить во время)
первые два ИМХО одинаковые, видимо метод ядровый, а класс поверх него.
В начале я юзал п1, потом, когда нашел, п2 и только его - удобнее в разы, не нужно new делать. Хотя по документации как раз setTimeout - рудимент.
Оба таймера врут с точностью до 50мс, по сути до 1 кадра. Со времен ДОС читал книжки, что время в ПК считается в "тиках". 1 тик = 1/18 сек. Так что это 0.055 или 55 в терминах таймера. Потому выше точности и не должно быть архитектурно. Если погуглить, то есть статьи с замерами погрешности, ссылки не сохранял.
Способы 1-2 имеют ограничения - они плюют на .stop() анимации, то есть выполнятся по таймеру и все тут.
А вот п3 позволяет стопить все, но таймера готового нет, нужно просто кодить перывание и там все решать. Либо писать свой некий универсальный класс, но прерывание все равно вешать штутчно.
Некая общая тенденция с неподдержкой флэша на иПадах, а теперь еще и Андройд
.... "Таким образом, можно сделать вывод, что эра Flash-технологий неуклонно движется к концу."
грустно - нафиг тогда ее (технологию флэш) развивать вообще дальше?
Это при том, что в Unity 3.5 появилась кнопочка с сохранением во флэш (или флэш плеер стал юнити поддерживать, не вник)
как это понимать книги по Флешу - выбрасывать что ли,,,,
Книги? жечь и плакать!
Мне ActionScript 3 оч понравился, как язык и подход - реально современно и не C# и не Ява
Не думаю, что его выкинут, останется как Flex или сольется куда (в туже Юнити, как третий скриптовый язык)
Флаш реально жрет ресурс, что не тянули на мобилках
Относительно "нужно переучиваться" - это везде так.
Привыкли, что Ява и С++ вечны с 80х годов.
А вот 1С 8х версий кипит и булькает и народ там фигеет от каждого обновления.
У Микрософта в ее Dynamics линейке не лучше - я вот на реальном распутье карьерном сча - мне что след версию изучать, что любую другую систему - один фиг, оч сильно все поменяли, уже не совместимо с мозгами (потому для полноты понимания поизучал 1С 8.2 с ее управляемыми формами и узнал, что почти все конфигурации все еще на "старых" формах - о как, технология все еще не используется)
Так что, для меня это, как некая амнистия даже - соскочил с 10 летней иглы, можно оглянуться и вообще выбрать что-то другое (в те же игрушки пойти с концами, тк сча там денег как в ERP системах стало - за счет легких и больших соц доходов)
А вот Юнити оч круто шагнула, кто на него поставил, тот угадал - и спрос уже как на флешеров и перспективы, тк кроссплатформер и развивается бурно.
Всякие геймбрио Юнити уже точно уделала по возможностям (и это все сетевое и в браузере может работать!)
Ребят помогите не могу сделать кнопку по типу как в контакте "вверх",проблема в том что кнопка должна быть на action script 3.0 а сам сайт на html
вконтакт не пользовал, но суть такая
делаешь кнопку, как тебе нравится (анимированную, интерактивную) на флаше, потом ее обрабатываешь внутри div в хтмл на яваскрипте, если она там как-то еще ползать должна по хтмл странице
Внутри кнопки на прерывании наведения, нажатия вешаешь нужные обработки.
Самое простое - это посмотреть, как именно работает нужное тебе.
Код весь этот открыт, изучи ХТМЛ этой страницы с кнопкой, скачай по ссылкам из исходника страницы .js, что в нем подгружаются и их изучи.
Скачай саму флашку (по ссылке в исходнике), если нужно, то и ее код можно изучить.
Пойми идею и сделай все аналогично.
Или можно потратить кучу времени на просмотр бесплатных контролек на всяких флашовых развалах\форумах и подыскать что-то на свой вкус.
Там будет идти набор с примером подключения в свою страницу.
Но подбор подходящего может занять больше времени, чем изучить уже работающее в конкретном месте.
Вот смотрите у меня есть js кнопка при нажатии на которую скролл бар становиться вверх все нормально,но мне нужно чтоб кнопка была flash и при нажатии на неё срабатывал js,читал про взаимодействия action script 3.0 и java script ну ничего подходящего мне не нашел
Вот сам скрипт
В AS3.0 насколько помню нужно юзать ExternalInterface -
Как пример:
AS3.0:
Вот моя первая игрушка
ну, типа с учебника . Хотя и это похвально.
Грустные вести:
Флаш плеер не работает на Андройд 4.1
И вроде даже Виндовс 8 и в браузере ИЕ 10 (линк потерял на статью)
Все, все его гнобят!
Поставить на Андройд 4.1 флаш все еще можно
Рынок, однако, решили выпихнуть и сами нишу занять.
При этом сам Адоб тоже забил на это, но не на сам флаш.
Развивается среда флаш AIR
И, о чудо, даже на иФоны\Пады и гуглфоны все работает.
А теперь новость радостная (интересная):
известная игра Машинариум, сделанная на флаше, занимала топовые места в аппл сторе для иПад2
То есть, флаш игры на иОС все ж возможны.
занялся конвертацией моей проги-говоруна для телефона.
Столкнулся с проблемой вставки кучи ресурсов внутрь флашки (там 263 файла мр3)
ручками в библиотеке каждому поставить имя и галку выгруза в АС3 можно, но уж оч муторно, потом еще массив инитить в коде из этих разноименных классов.
Можно написать на самом флаше скрипт, который вернет в трайс() код для вставки в код (тем более у меня все звуки описаны в ХМЛ, то есть циклом можно пройтись)
[Embed(source="../RESOURCE/Sounds/Interface/click.mp3")]
public static var SndClick:Class;
Но такой подход приводит к двум вещам:
1. Для компиляции из Флаша нужен Flex SDK, его нужно ставить или из Flash Buildera взять (ссылку на его путь)
2. все грузится в первом кадре, то есть прелодер не работает, пока не загрузится все и сразу
Как победить прелодер нашел статью (оч полезна, в конце есть пост с теорией)
Но пока не проделал, тк мне милее способ, который хочу попробовать, нужно на втором кадре разместить клип, подсунуть ему класс мой. И вот в этот клас уже эмбедить все звуки.
Тогда по идее клип загрузится именно в конце, а прелодер в первом кадре сразу.
Но и путь из статьи хорош (если в флашке 1 кадр)
=====
Особенность встройки ХМЛ, нужно писать
[Embed(source="../RESOURCE/XML/SoundVoice1.xml", mimeType="application/octet-stream")]
public static var xmlTest1:Class;
Иначе трактуется неверно и данных в нем нет
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)