Вы никогда не задумывались над тем, почему Flash Lite (что в переводе означает «упрощенный», «облегченный» Flash) так называется? Наверное потому, что в первых версиях языка он был действительно донельзя простым. Но сейчас, зная что Flash Lite 2 по своим возможностям практически не уступает ActionScript 2, можно поиронизировать на эту тему и сказать, что Flash Lite — это тот же ActionScript 2, только лишенный многих полезных «фич».
В действительности же аппаратные особенности мобильных девайсов сильно отличаются от конструкций их старших настольных собратьев. Возьмем к примеру устройства ввода информации: у компьютера это клавиатура, с привычным нам количеством клавиш (у меня на ноутбуке их 84 + 5 мультимедийных), мышь. Но у мобильного устройства из клавиш есть только «крестик», заменяющий иногда кнопку «Ok», левая и правая функциональные клавиши, клавиша «Стереть», 12 цифро–буквенных клавиш, и недоступные для Flash–плейера клавиши посылки и завершения вызова, клавиша входа в меню телефона. Всего я насчитал 19 клавиш. Так же некоторые девайсы могут дополнятся стилусом, события которого Flash Lite плейер будет воспринимать аналогично событиям мыши.
Неудивительно, что многие из возможностей просто необходимых при создании контента для компьютеров, были убраны за их ненадобностью в Flash Lite. Например, много ли на вашем телефоне установленных шрифтов? Я насчитал 1, и то не знаю как он называется. А если шрифт 1, то естественно, что отпадает надобность в методе TextField.getFontList. Сколько подключенных к телефону принтеров? В добавок, на телефоне невозможно запустить одновременно два SWF–файла, а значит отпадает надобность в и классе LocalConnection.
В общем, ход мыслей разработчиков понятен и не лишен логики. Хотя все же закрадываются сомнения по этому поводу. Ведь у каждого телефона есть встроенный микрофон, на многих моделях стоят фото–камеры, а на некоторых и видео–камеры. Зачем же тогда убирать поддержку классов Camera и Microphone? Почему бы не сделать их опциональными, доступными по возможности, такими как, например, события onClipEvent(mouseDown) и onClipEvent(mouseUp), которые становятся доступными если System.capabilities.hasStylus возвращает true? Возможно это связано с тем, что поддержка этих устройств в разных моделях телефонов реализована по–разному. А возможно, что немаловажную роль в этом сыграл вездесущий принцип «виртуальной песочницы», который ограничивает потенциально опасные возможности плейера.
Впрочем, не будем делать поспешных выводов. Приглашаю начать знакомство с Flash Lite 2 с недоступных в нем или частично доступных элементов языка ActionScript.
Неподдерживаемые классы
Accessibility, Camera, ContextMenu, ContextMenuItem, CustomActions, LocalConnection, Microphone, NetConnection, NetStream, PrintJob, TextField.StyleSheet, TextSnapshot, XMLSocket
Неподдерживаемые методы
Mouse.hide, Mouse.show, MovieClip.attachAudio, MovieClip.getTextSnapshot, Selection.getBeginIndex, Selection.getCaretIndex, Selection.getEndIndex, Selection.removeListener, Selection.setSelection, System.setClipboard, System.showSettings, TextField.getFontList, TextField.replaceSel, Video.attachVideo, Video.clear
Неподдерживаемые свойства
Button.blendMode, Button.cacheAsBitmap, Button.filters, Button.menu, Button.useHandCursor, System.capabilities.language, System.capabilities.manufacturer, System.capabilities.pixelAspectRatio, System.capabilities.playerType, System.capabilities.screenColor, System.capabilities.screenDPI, System.capabilities.serverString, Key.isToggled, MovieClip.menu, MovieClip.useHandCursor, Stage.showMenu, System.exactSettings, TextField.menu, TextField.mouseWheelEnabled, TextField.restrict, Video._alpha, Video.deblocking, Video._height, Video.height, Video._name, Video._parent, Video._rotation, Video.smoothing, Video._visible, Video._width, Video.width, Video._x, Video._xmouse, Video._xscale, Video._y, Video._ymouse, Video._yscale
Неподдерживаемые глобальные функции
asfunction, MMExecute, print, printAsBitmap, printAsBitmapNum, printNum, updateAfterEvent, onUpdate (записал сюда, хотя это не глобальная функция, а обработчик)
Неподдерживаемые обработчики событий
onUpdate, Mouse.onMouseWheel
Команды, исключенные из fsCommand
| Команда | Описание обычно производимого действия |
|---|---|
quit |
Закрывает прожектор. |
fullscreen |
При вызове с указанием true переводит Flash Player в полноэкранный режим. При вызове с указанием false возвращает плейер в нормальный режим. |
allowscale |
При вызове с указанием false настраивает плеер так, что файл SWF всегда отображается в своем оригинальном размере, без масштабирования. При вызове с указанием true отображение SWF-файла занимает 100% от окна плейера. |
showmenu |
При вызове с указанием true разрешает показ полного набора элементов контекстного меню. При вызове с указанием false скрывает все пункты контекстного меню кроме «About Flash Player» и «Settings». |
exec |
Запускает внешнюю программу. |
trapallkeys |
Если указано true, то все события клавиатуры, в том числе и ускоряющие клавиши (accelerator keys), отправляются в программу обработки события onClipEvent(keyDown/keyUp) во Flash Player. |
Частично поддерживаемые глобальные функции
| Функция | Описание | Поддержка |
|---|---|---|
fscommand() |
Функция, позволяющая SWF-файлу взаимодействовать с Flash Player или программой, в которую внедрен Flash Player, такой как веб-браузер. | Частично поддерживается |
on |
Префикс для выполнения действий на событие клипа, когда это событие произойдет.Ограничение: Поддерживаются только следующие события rollout, rollover, и keyPress. |
Частично поддерживается |
onClipEvent |
Обработчик события; запускает определенные действия, указанные для конкретного экземпляра movie clip.Ограничение: Поддерживаются события press, load, unload, enterFrame, keyDown, keyup, и data.События mouseDown, mouseUp, и mouseMove поддерживаются, если System.capabilities.hasMouse или System.capabilities.hasStylus возвращает true. |
Частично поддерживается |
startDrag() |
Функция делает мувиклип target перетаскиваемым во время проигрывания SWF–фильма. Одновременно перетаскиваемым при помощи данной функции может быть только один мувиклип.Ограничение: Поддерживается, если интерфейс мыши или стилуса активен. | Частично поддерживается |
stopDrag() |
Функция останавливает текущую операцию перетаскивания.Ограничение: Поддерживается, если интерфейс мыши или стилуса активен. | Частично поддерживается |
Частично поддерживаемые глобальные свойства
| Свойства | Описание | Поддержка |
|---|---|---|
_droptarget |
Свойство (только для чтения), возвращающее абсолютный путь в слеш–нотации (/) до мувиклипа над которым находится перетаскиваемый в данный момент мувиклип draggableInstanceName. Свойство всегда возвращает путь начинающийся со слеша (/). |
Частично поддерживается |
_highquality |
Глобальное свойство устанавливающее уровень анти–алиастинга в текущем SWF–файле. Свойство контролирует так же и сглаживание растровых изображений. Ограничение: Flash Lite не производит сглаживание растровых изображений. | Частично поддерживается |
_url |
Свойство (только для чтения) указывающее на URL с которого был загружен текущий фильм. | Частично поддерживается |