Используем фичи flash player 10.2 или 11.0 во FlashIDE CS5
Запись от ps_spectre размещена 08.03.2011 в 21:49
Вначале писал ответ на форум, но решил вынести отдельной заметкой в блог. (чтобы не потерялось)
Содержание:
- введение
- playerglobal.swc где взять.
- внедрение поддержки фич нового флеш плеера во FlashIDE. (правим конфиги)
- пишем код, который использует custom cursor из flash player 10.2
Введение.
Итак, нам понадобилось во flash ide cs5 писать код под новые плеера. По-умолчанию неизмененный flash cs5 не поддерживает во время компиляции новые типы/классы из новых плееров (>10.1) Например MouseCursorData из 10.2 плеера.
Что нам может потребоваться чтобы исправить это?
В первую очередь нам надо взять последний (нужный) playerglobal.swc из последнего FlexSDK. Вторым шагом нам надо подправить конфиги Flash IDE (CS5), чтобы появился выбор в опциях, под какой плеер мы компилируем проект.
Playerglobal.swc где взять?
Для того, чтобы взять playerglobal.swc мы должны скачать нужный flexSDK.
1. Качаем с adobe labs свежий SDK (на данный момент 4.5.0.19786)
ссылка на 4.5 SDK (Hero)
2. расспаковуем в %sdk_path%
3. переходим %sdk_path%\frameworks\libs\player\ дальше в зависимости от какого флешплеера нам надо .swc.
Код:
(пример: C:\flexsdk\flex45_19786\frameworks\libs\player\10.2\playerglobal.swc)
Внедрение поддержки фич нового флеш плеера во FlashIDE. (правим конфиги)
Теперь нам надо подправить конфиги флеш ИДЕ.
Для этого переходим в %adobe_cs5_path%\Common\Configuration\ActionScript 3.0\
Код:
(пример: C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\ActionScript 3.0\)
Дальше переходим в
%adobe_cs5_path%\Common\Configuration\Players\
Код:
(пример C:\Program Files (x86)\Adobe\Adobe Flash CS5\Common\Configuration\Players\)
FlashPlayer10_1.xml
переменовуем копию в
FlashPlayer10_2.xml
или
FlashPlayer11.xml
в зависимости от того, какой .swc мы взяли (от какого плеера)
дальше открываем текстовым редактором этот файл и меняем несколько полей в этом xml файле
Код:
<players> <player id="FlashPlayer10" version="10" asversion="3"> <name>Flash Player 10</name> ... <playerDefinitionPath ... as3="$(AppConfig)/ActionScript 3.0/FP10/playerglobal.swc" /> ... </players>
Код:
<players> <player id="FlashPlayer10.2" version="11" asversion="3"> <name>Flash Player 10.2</name> ... <playerDefinitionPath ... as3="$(AppConfig)/ActionScript 3.0/FP10.2/playerglobal.swc" /> ... </players>
Код:
<players> <player id="FlashPlayer11" version="13" asversion="3"> <name>Flash Player 11</name> ... <playerDefinitionPath ... as3="$(AppConfig)/ActionScript 3.0/FP11/playerglobal.swc" /> ... </players>
Подготовка конфигов завершена, можно запускать Flash IDE.
В опциях проекта (там где publish) у нас появились новые опции. (player: flashplayer 10.2, flashplayer 11)
Пишем код, который использует custom cursor из flash player 10.2
Теперь проверим новые фичи.
Открываем статью
adobe: native mouse cursors
читаем, думаем, копируем код.
Открываем FlashIDE CS5
Создаем новый as3 проект.
На сцене рисуем не больше чем 32 на 32 картинку нашего курсора (точка привязки 0,0)
Делаем как MovieClip, добавляем в библиотеку, выбираем экспорт в первый фрейм, даем имя, например SimpleCursor.
В опциях publish выбираем player: flashplayer 10.2
Создаем наш main class (document class) под названием CustomCursor
вот его код
package { import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.ui.*; import flash.events.Event; public class CustomCursor extends Sprite { public function CustomCursor() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event=null):void { if (e) removeEventListener(Event.ADDED_TO_STAGE, init); var mc:MovieClip = new SimpleCursor(); var bd:BitmapData = new BitmapData(mc.width, mc.height, true, 0); bd.draw(mc); // Create a MouseCursorData object var cursorData:MouseCursorData = new MouseCursorData(); // Specify the hotspot var cx:int = Math.ceil(bd.width * 0.5); var cy:int = Math.ceil(bd.height * 0.5); cursorData.hotSpot = new Point(cx, cy); // Pass the cursor bitmap to a BitmapData Vector var bitmapDatas:Vector.<BitmapData> = new Vector.<BitmapData>(); // Create the bitmap cursor // The bitmap must be 32x32 pixels or smaller, due to an OS limitation // Pass the value to the bitmapDatas vector bitmapDatas.push(bd); // Assign the bitmap to the MouseCursor object cursorData.data = bitmapDatas; // Register the MouseCursorData to the Mouse object with an alias Mouse.registerCursor("myCursor", cursorData); // When needed for display, pass the alias to the existing cursor property Mouse.cursor = "myCursor"; } } }
Теперь мы можем делать publish и открывать во flash player 10.2 (например publish preview -> html)
Если используем правильный плеер (10.2+) то увидим что стандартный курсор заменен на наш, нарисованный.
Тоже самое с Molehill API , если мы взяли из под 11 плеера *.swc нужный и добавили конфиг под 11 плеер, то теперь мы можем компилить проекты во FlashIDE связанные с 3д графикой. (именно molehill api)
Ибо компилятору все равно, по-большому счету, какие классы Flash Player API юзать, т.к. они в самом рантайме флеш плеера присутствуют.
Конец.
в прикрепленных файлах *.swc от 10.2 плеера из 4.5.0.19786 флекса.
так же конфиг под 10.2 плеер.
Картинки к примеру.
И сам пример.
Всего комментариев 12
Комментарии
08.03.2011 22:26 | |
Хорошая статья. Компилируем под любые плееры в CSx.
|
08.03.2011 23:21 | |
Огромное спасибо за статью! Предлагаю запостить на хабр! Думаю многим будет интересно
|
09.03.2011 01:17 | |
dimarik, спасибо.
NikosHope, мне пока на хабр не охота писать. |
09.03.2011 13:57 | |
Здорово, спасибо!!!
|
11.03.2011 14:44 | |
ps_spectre, есть-ли сейчас где-нибудь документация к последнему SDK? Или она появится только после всех тэстирований?
|
11.03.2011 16:28 | |
Sintesis, не понял вопроса, чем это не устраивает?
http://help.adobe.com/en_US/FlashPla...ashplayer=10.2 или вот бета http://help.adobe.com/en_US/FlashPla...ctionscript/3/ по 11 плееру документация отдельно ищется. (качается) |
|
Обновил(-а) ps_spectre 11.03.2011 в 16:30
|
26.03.2011 17:50 | |
Эх придёться сносить CS3, неполучаеться в нём так сделать.
|
31.03.2011 12:10 | |
Если выдает такую ошибку - в чем может быть причина?
VerifyError: Error #1014: Не удалось найти класс flash.ui::MouseCursorData. at CustomCursor() |
21.04.2011 16:01 | |
Тоже самое: "Не удалось найти класс flash.ui::MouseCursorData."
Проблема в том, что FlashIDE CS5 использует свой флеш-плеер. Его версию можно проверить так: У меня, например, показывает WIN 10,1,52,14, при этом в любом браузере по правому клику стоит 10.2... |
|
Обновил(-а) justin_g 21.04.2011 в 17:18
|
20.07.2011 15:03 | |
Проблема решается просто, копированием новых версий плеера в папку: \Adobe Flash CS5\Players\Debug
|
20.07.2011 15:12 | |
Однако это хотя и меняет проблему с плеером, не решает проблему с 1014
|
Последние записи от ps_spectre
- Используем фичи flash player 10.2 или 11.0 во FlashIDE CS5 (08.03.2011)
- mxmlc: подключение внешней библиотеки (external library) (04.02.2011)
- Создание многокадровой флешки с помощью mxmlc (03.02.2011)
- Создание библиотеки ресурсов (swc) с помощью compc (02.02.2011)