flash.displayFrameLabel Объект FrameLabel содержит свойства, задающие номер рамки и соответствующее имя подписи.Object Объект FrameLabel содержит свойства, задающие номер рамки и соответствующее имя подписи. Класс Scene включает свойство labels, которое является массивом объектов FrameLabel монтажного кадра. Scene.labelsMovieClip.currentLabelMovieClip.currentSceneMovieClip.scenesMovieClip.gotoAndPlay()MovieClip.gotoAndStop()frame Номер рамки, содержащей подпись.int Номер рамки, содержащей подпись. name Имя подписи.String Имя подписи. InteractiveObject Класс InteractiveObject является абстрактным базовым классом для всех экранных объектов, с которыми пользователь может взаимодействовать с помощью мыши, клавиатуры или другого устройства пользовательского ввода.flash.display:DisplayObject Класс InteractiveObject является абстрактным базовым классом для всех экранных объектов, с которыми пользователь может взаимодействовать с помощью мыши, клавиатуры или другого устройства пользовательского ввода.

Нельзя создать экземпляры класса InteractiveObject напрямую. Вызов конструктора new InteractiveObject() выдает исключение ArgumentError.

Сам класс InteractiveObject не содержит API-интерфейсов для визуализации содержимого на экране Чтобы создать пользовательский подкласс класса InteractiveObject, расширьте один из подклассов, у которых имеется API для визуализации содержимого на экране, например классы Sprite, SimpleButton, TextField или MovieClip.

В следующем примере используется класс InteractiveObjectExample, который в свою очередь использует класс ChildSprite для рисования прямоугольника, а затем выполнения манипуляций с ним на базе различных событий мыши. Это можно сделать, выполнив следующие действия.
  1. В конструкторе InteractiveObjectExample создается новый объект ChildSprite тип Sprite с именем child, который вызывает метод конструктора ChildSprite для рисования фигуры и добавляет для нее события мыши (как описывается далее). Объект child добавляется в начало списка отображения в точку с координатами x = 0, y = 0.
  2. В классе ChildSprite объявите свойства size и overSize, которые будут использоваться позже в методе draw() и методах MouseEvent.
  3. Объявите свойства, задающие оранжевый цвет фона, темно-желтый цвет при наведении мыши и голубой при нажатии мыши.
  4. В конструкторе ChildSprite рисуется оранжевый квадрат с помощью методов класса Graphics и метода draw().
  5. Конструктор добавляет четыре метода прослушивателя событий MouseEvent:
    • mouseOverHandler: перерисовывает квадрат большего размера (60 на 60 пикселей) темно-желтого цвета в точке с исходными координатами.
    • mouseOutHandler: возвращает квадрату исходный размер и цвет.
    • mouseDownHandler: перерисовывает квадрат большего размера (60 на 60 пикселей) голубого цвета в точке с исходными координатами.
    • mouseUpHandler: то же, что mouseOverHandler.
package { import flash.display.Sprite; public class InteractiveObjectExample extends Sprite { public function InteractiveObjectExample() { var child:Sprite = new ChildSprite(); addChild(child); } } } import flash.display.Sprite; import flash.events.MouseEvent; class ChildSprite extends Sprite { private var size:uint = 50; private var overSize:uint = 60; private var backgroundColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; public function ChildSprite() { buttonMode = true; draw(size, size, backgroundColor); addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } private function draw(w:uint, h:uint, bgColor:uint):void { graphics.clear(); graphics.beginFill(bgColor); graphics.drawRect(0, 0, w, h); graphics.endFill(); } public function mouseOverHandler(event:MouseEvent):void { trace("mouseOverHandler"); draw(overSize, overSize, overColor); } public function mouseOutHandler(event:MouseEvent):void { trace("mouseOutHandler"); draw(size, size, backgroundColor); } public function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler"); draw(overSize, overSize, downColor); } public function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler"); draw(overSize, overSize, overColor); } }
softKeyboardDeactivate Передается немедленно после того, как экранная клавиатура убирается с экрана.flash.events. SoftKeyboardEvent. SOFT_KEYBOARD_DEACTIVATEflash.events.SoftKeyboardEventПередается немедленно после того, как экранная клавиатура убирается с экрана. Передается немедленно после того, как экранная клавиатура убирается с экрана. flash.events.SoftKeyboardEventsoftKeyboardActivate Отправленный немедленно после того, как мягкая клавиатура вызывают.flash.events. SoftKeyboardEvent. SOFT_KEYBOARD_ACTIVATEflash.events.SoftKeyboardEventОтправленный немедленно после того, как мягкая клавиатура вызывают. Отправленный немедленно после того, как мягкая клавиатура вызывают. flash.events.SoftKeyboardEventsoftKeyboardActivating Передается немедленно перед тем, как экранная клавиатура появляется на экране.flash.events. SoftKeyboardEvent. SOFT_KEYBOARD_ACTIVATINGflash.events.SoftKeyboardEventПередается немедленно перед тем, как экранная клавиатура появляется на экране. Передается немедленно перед тем, как экранная клавиатура появляется на экране. flash.events.SoftKeyboardEventtextInput Передается, если пользователь вводит один или несколько символов текста.flash.events.TextEvent.TEXT_INPUTflash.events.TextEvent Передается, если пользователь вводит один или несколько символов текста. Это событие может генерироваться различными методами ввода текста, включая стандартную клавиатуру, редакторы ввода текста (IME), системы распознавания голоса и речи и даже просто вставкой обычного текста без форматирования или информации о стилях. imeStartComposition Это событие отправляется любой клиентской программе, которая поддерживает линейный ввод с помощью IME. flash.events.IMEEvent Это событие отправляется любой клиентской программе, которая поддерживает линейный ввод с помощью IME. contextMenu Отправляется, когда жест пользователя вызывает контекстное меню, связанное с данным интерактивным объектом в приложении AIR.flash.events.MouseEvent.CONTEXT_MENUflash.events.MouseEvent Отправляется, когда жест пользователя вызывает контекстное меню, связанное с данным интерактивным объектом в приложении AIR. contextMenunativeDragComplete Отправляется инициатором перетаскивания InteractiveObject, когда пользователь завершает жест перетаскивания.flash.events.NativeDragEvent.NATIVE_DRAG_COMPLETEflash.events.NativeDragEvent Отправляется инициатором перетаскивания InteractiveObject, когда пользователь завершает жест перетаскивания.

Свойство dropAction события указывает действие, заданное целевым объектом перетаскивания; значение none (DragActions.NONE) указывает на то, что «сброс» перетаскиваемых данных был отменен или не был принят.

С помощью обработчика событий nativeDragComplete можно обновить состояние инициирующего объекта отображения, например удалив элемент из списка (при операции перетаскивания move) или изменив визуальные свойства.

nativeDragUpdate Отправляется во время операции перетаскивания объектом InteractiveObject, заданным в качестве инициатора перетаскивания в вызове метода DragManager.doDrag().flash.events.NativeDragEvent.NATIVE_DRAG_UPDATEflash.events.NativeDragEvent Отправляется во время операции перетаскивания объектом InteractiveObject, заданным в качестве инициатора перетаскивания в вызове метода DragManager.doDrag().

События nativeDragUpdate не отправляются в Linux.

nativeDragStart Отправляется в начале операции перетаскивания объектом InteractiveObject, заданным в качестве инициатора перетаскивания в вызове метода DragManager.doDrag().flash.events.NativeDragEvent.NATIVE_DRAG_STARTflash.events.NativeDragEvent Отправляется в начале операции перетаскивания объектом InteractiveObject, заданным в качестве инициатора перетаскивания в вызове метода DragManager.doDrag(). nativeDragExit Отправляется объектом InteractiveObject, когда жест перетаскивания выходит за границы этого объекта.flash.events.NativeDragEvent.NATIVE_DRAG_EXITflash.events.NativeDragEvent Отправляется объектом InteractiveObject, когда жест перетаскивания выходит за границы этого объекта. nativeDragDrop Отправляется целевым объектом InteractiveObject при принятии перетаскиваемого объекта вызовом метода DragManager.acceptDragDrop().flash.events.NativeDragEvent.NATIVE_DRAG_DROPflash.events.NativeDragEvent Отправляется целевым объектом InteractiveObject при принятии перетаскиваемого объекта вызовом метода DragManager.acceptDragDrop().

Доступ к перенесенным данным можно получить с помощью свойства clipboard объекта события.

Обработчик этого события должен установить свойство DragManager.dropAction, чтобы сообщить объекту-инициатору о том, какое действие перетаскивания было выполнено. Если значение не задано, DragManager выберет в списке допустимых действий значение по умолчанию.

nativeDragOver Постоянно отправляется объектом InteractiveObject, пока жест перетаскивания остается в пределах его границ.flash.events.NativeDragEvent.NATIVE_DRAG_OVERflash.events.NativeDragEvent Постоянно отправляется объектом InteractiveObject, пока жест перетаскивания остается в пределах его границ.

События nativeDragOver отправляются при каждом движении мыши. В Windows и Mac эти события также отправляются при коротком интервале таймера даже при отсутствии движения мыши.

Чтобы экранный объект мог стать целевым объектом перетаскивания, необходимо обрабатывать либо события nativeDragOver, либо события nativeDragEnter.

Чтобы определить, может ли отправляющий объект принять перетаскиваемые данные, проверьте приемлемость данных в свойстве clipboard объекта события, и допустимые действия перетаскивания в свойстве allowedActions.

nativeDragEnter Отправляется объектом InteractiveObject, когда жест перетаскивания входит в его границы.flash.events.NativeDragEvent.NATIVE_DRAG_ENTERflash.events.NativeDragEvent Отправляется объектом InteractiveObject, когда жест перетаскивания входит в его границы.

Чтобы экранный объект мог стать целевым объектом перетаскивания, необходимо обрабатывать либо события nativeDragEnter, либо события nativeDragOver.

Чтобы определить, может ли отправляющий объект принять перетаскиваемые данные, проверьте приемлемость данных в свойстве clipboard объекта события, и допустимые действия перетаскивания в свойстве allowedActions.

tabIndexChange Отправляется, когда изменяется значение свойства tabIndex объекта.flash.events.Event.TAB_INDEX_CHANGEflash.events.Event Отправляется, когда изменяется значение свойства tabIndex объекта. tabEnabledChange Отправляется при изменении флага tabEnabled объекта.flash.events.Event.TAB_ENABLED_CHANGEflash.events.Event Отправляется при изменении флага tabEnabled объекта. tabChildrenChange Отправляется, когда изменяется значение свойства tabChildren объекта.flash.events.Event.TAB_CHILDREN_CHANGEflash.events.Event Отправляется, когда изменяется значение свойства tabChildren объекта. keyUp Отправляется, когда пользователь отпускает клавишу.flash.events.KeyboardEvent.KEY_UPflash.events.KeyboardEvent Отправляется, когда пользователь отпускает клавишу. Соответствие клавиш и конкретных символов варьируется в зависимости от устройства и операционной системы. Этот тип событий создается после возникновения такого соответствия, но перед его обработкой редактором метода ввода IME. Редакторы IME используются для ввода таких символов, как китайские идеограммы, для чего малопригодна стандартная клавиатура QWERTY. Это событие происходит после события keyDown и имеет следующие характеристики: keyDown Отправляется, когда пользователь нажимает клавишу.flash.events.KeyboardEvent.KEY_DOWNflash.events.KeyboardEvent Отправляется, когда пользователь нажимает клавишу. Соответствие клавиш и конкретных символов варьируется в зависимости от устройства и операционной системы. Этот тип событий создается после возникновения такого соответствия, но перед его обработкой редактором метода ввода IME. Редакторы IME используются для ввода таких символов, как китайские идеограммы, для чего малопригодна стандартная клавиатура QWERTY. Это событие происходит перед событием keyUp.

Отмена этого события в программе AIR предотвращает ввод этого символа в текстовое поле.

rightMouseUp Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.RIGHT_MOUSE_UPflash.events.MouseEvent Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject. rightMouseDown Отправляется, когда пользователь нажимает кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.RIGHT_MOUSE_DOWNflash.events.MouseEvent Отправляется, когда пользователь нажимает кнопку указывающего устройства над экземпляром InteractiveObject. rightClick Отправляется, когда пользователь нажимает и отпускает правую кнопку указывающего устройства над одним и тем же объектом InteractiveObject.flash.events.MouseEvent.RIGHT_CLICKflash.events.MouseEvent Отправляется, когда пользователь нажимает и отпускает правую кнопку указывающего устройства над одним и тем же объектом InteractiveObject. Чтобы произошло событие rightClick, оно должно следовать за данной последовательностью событий, перечисленных в порядке появления: событие rightMouseDown, затем событие rightMouseUp. Оба эти события должны иметь ту же цель, иначе событие rightClick не произойдет. Между событиями rightMouseDown или rightMouseUp может произойти любое количество других событий мыши; событие rightClick все равно происходит. middleMouseUp Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.MIDDLE_MOUSE_UPflash.events.MouseEvent Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject. middleMouseDown Отправляется, когда пользователь нажимает среднюю кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.MIDDLE_MOUSE_DOWNflash.events.MouseEvent Отправляется, когда пользователь нажимает среднюю кнопку указывающего устройства над экземпляром InteractiveObject. middleClick Отправляется, когда пользователь нажимает и отпускает среднюю кнопку указывающего устройства над одним и тем же объектом InteractiveObject.flash.events.MouseEvent.MIDDLE_CLICKflash.events.MouseEvent Отправляется, когда пользователь нажимает и отпускает среднюю кнопку указывающего устройства над одним и тем же объектом InteractiveObject. Чтобы произошло событие middleClick, оно должно следовать за данной последовательностью событий, перечисленных в порядке появления: событие middleMouseDown, затем событие middleMouseUp. Оба эти события должны иметь ту же цель, иначе событие middleClick не произойдет. Между событиями middleMouseDown или middleMouseUp может произойти любое количество других событий мыши; событие middleClick все равно происходит. gestureSwipe Отправляется, когда пользователь выполняет жест выделения в точке контакта с экземпляром InteractiveObject (например, касание экрана тремя пальцами и их параллельное перемещение над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TransformGestureEvent.GESTURE_SWIPEflash.events.TransformGestureEvent Отправляется, когда пользователь выполняет жест выделения в точке контакта с экземпляром InteractiveObject (например, касание экрана тремя пальцами и их параллельное перемещение над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Параллельное движение пальцами является распространенным жестом выделения, но в разных устройствах и операционных системах могут предъявляться различные требования к этому движению. Некоторые устройства также могут интерпретировать такой жест как комбинацию из нескольких событий мыши.

В частности, если пользователь ставит пальцы на объект InteractiveObject, а затем перемещает их параллельно, то вдобавок к событию gestureSwipe экземпляр InteractiveObject может отправить события rollOver и rollOut (помимо прочих), либо все события, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Если задана обработка события rollOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gestureSwipe, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

При обработке свойств объекта Event необходимо учитывать, что в качестве значений свойств localX и localY используются координаты первой точки контакта. Свойства offsetX и offsetY указывают расстояние до точки контакта, в которой завершился жест выделения.

Примечание. Хотя некоторые устройства с ОС Mac OS могут интерпретировать жест выделения четырьмя пальцами, данный API поддерживает только выделение тремя пальцами.

Следующий пример демонстрирует обработку событий GESTURE_SWIPE. Когда пользователь выполняет жест выделения на устройстве с сенсорным экраном, в текстовом поле myTextField отображается текущая фаза all, которая является единственной применимой для событий выделения пальцами. Multitouch.inputMode = MultitouchInputMode.GESTURE; var mySprite = new Sprite(); mySprite.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe); mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0, 0, 100, 80); var myTextField = new TextField(); myTextField.y = 200; addChild(mySprite); addChild(myTextField); function onSwipe(evt:TransformGestureEvent):void { if (evt.offsetX == 1 ) { myTextField.text = "right"; } if (evt.offsetY == -1) { myTextField.text = "up"; } myTextField.text = evt.phase; }
Событие rollOverСобытие touchOverflash.ui.Multitouch
gestureZoom Отправляется, когда пользователь выполняет жест увеличения в точке контакта с экземпляром InteractiveObject (например, касание экрана двумя пальцами и их быстрое разведение в стороны над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TransformGestureEvent.GESTURE_ZOOMflash.events.TransformGestureEvent Отправляется, когда пользователь выполняет жест увеличения в точке контакта с экземпляром InteractiveObject (например, касание экрана двумя пальцами и их быстрое разведение в стороны над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Разведение пальцев является распространенным жестом увеличения, но в каждом устройстве и операционной системе могут быть собственные требования к жестам масштабирования. Некоторые устройства также могут интерпретировать такой жест как комбинацию из нескольких событий мыши.

В частности, если пользователь наводит палец на объект InteractiveObject, а затем разводит пальцы в стороны, то вдобавок к событию gestureZoom экземпляр InteractiveObject может отправить события mouseOver и click (помимо прочих), либо все события, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gestureZoom, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

При обработке свойств объекта Event необходимо учитывать, что в качестве значений свойств localX и localY используются координаты первой точки контакта. Свойства offsetX и offsetY указывают расстояние до точки контакта, в которой завершился жест увеличения.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий GESTURE_ZOOM. Когда пользователь выполняет жест изменения масштаба на устройстве с сенсорным экраном, в текстовом поле myTextField отображается текущая фаза. Multitouch.inputMode = MultitouchInputMode.GESTURE; var mySprite = new Sprite(); mySprite.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom); mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0, 0, 100, 80); var myTextField = new TextField(); myTextField.y = 200; addChild(mySprite); addChild(myTextField); function onZoom(evt:TransformGestureEvent):void { evt.target.scaleX++; if (evt.phase==GesturePhase.BEGIN) { myTextField.text = "Begin"; } if (evt.phase==GesturePhase.UPDATE) { myTextField.text = "Update"; } if (evt.phase==GesturePhase.END) { myTextField.text = "End"; } }
Событие mouseOverСобытие touchOverflash.ui.Multitouch
gestureRotate Отправляется, когда пользователь выполняет жест поворота в точке контакта с экземпляром InteractiveObject (например, касание двумя пальцами и их вращение над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TransformGestureEvent.GESTURE_ROTATEflash.events.TransformGestureEvent Отправляется, когда пользователь выполняет жест поворота в точке контакта с экземпляром InteractiveObject (например, касание двумя пальцами и их вращение над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Вращение двумя пальцами является распространенным жестом поворота, но в каждом устройстве и операционной системе могут быть собственные требования к жестам поворота. Некоторые устройства также могут интерпретировать такой жест как комбинацию из нескольких событий мыши.

В частности, если пользователь проводит пальцем над объектом InteractiveObject, то вдобавок к событию gestureRotate экземпляр InteractiveObject может отправить события mouseOver и click (помимо прочих), либо все события, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gestureRotate, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

При обработке свойств объекта Event необходимо учитывать, что в качестве значений свойств localX и localY используются координаты первой точки контакта. Свойства offsetX и offsetY указывают расстояние до точки контакта, в которой завершился жест поворота.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий GESTURE_ROTATE. Когда пользователь выполняет жест поворота на устройстве с сенсорным экраном, объект mySprite поворачивается, и в текстовом поле myTextField отображается текущая фаза. Multitouch.inputMode = MultitouchInputMode.GESTURE; var mySprite = new Sprite(); mySprite.addEventListener(TransformGestureEvent.GESTURE_ROTATE , onRotate ); mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0, 0, 100, 80); var myTextField = new TextField(); myTextField.y = 200; addChild(mySprite); addChild(myTextField); function onRotate(evt:TransformGestureEvent):void { evt.target.rotation -= 45; if (evt.phase==GesturePhase.BEGIN) { myTextField.text = "Begin"; } if (evt.phase==GesturePhase.UPDATE) { myTextField.text = "Update"; } if (evt.phase==GesturePhase.END) { myTextField.text = "End"; } }
Событие mouseOverСобытие touchOverflash.ui.Multitouch
gesturePressAndTap Отправляется, когда пользователь создает точку контакта с экземпляром InteractiveObject, а затем касается сенсорного экрана (например, касается экранного объекта несколькими пальцами, чтобы открыть меню, а затем касается одним пальцем для выбора нужного элемента меню при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.PressAndTapGestureEvent.GESTURE_PRESS_AND_TAPflash.events.PressAndTapGestureEvent Отправляется, когда пользователь создает точку контакта с экземпляром InteractiveObject, а затем касается сенсорного экрана (например, касается экранного объекта несколькими пальцами, чтобы открыть меню, а затем касается одним пальцем для выбора нужного элемента меню при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать такой жест как комбинацию из нескольких событий мыши.

В частности, если пользователь наводит палец на объект InteractiveObject, а затем делает второе касание, то вдобавок к событию gesturePressAndTap экземпляр InteractiveObject может отправить события mouseOver и click (помимо прочих), либо все события, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gesturePressAndTap, обработчик можно создать таким образом, чтобы он реагировал на конкретные события устройства с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

При обработке свойств объекта Event необходимо учитывать, что в качестве значений свойств localX и localY используются координаты точки первичного контакта (нажатия). Свойства offsetX и offsetY указывают расстояние до точки вторичного контакта (касания).

Событие mouseOverСобытие touchOverflash.ui.Multitouch
gesturePan Отправляется, когда пользователь перемещает точку контакта с экземпляром InteractiveObject на устройстве с сенсорным экраном (например, касается пальцем и проводит им слева направо над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TransformGestureEvent.GESTURE_PANflash.events.TransformGestureEvent Отправляется, когда пользователь перемещает точку контакта с экземпляром InteractiveObject на устройстве с сенсорным экраном (например, касается пальцем и проводит им слева направо над экранным объектом при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие mouseOver и touchOver.

В частности, если пользователь проводит пальцем над объектом InteractiveObject, то вдобавок к событию gesturePan экземпляр InteractiveObject может отправить события mouseOver или touchOver либо все события сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gesturePan, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий GESTURE_PAN. Когда пользователь выполняет жест панорамирования на устройстве с сенсорным экраном, в текстовом поле myTextField отображается текущая фаза. Multitouch.inputMode = MultitouchInputMode.GESTURE; var mySprite = new Sprite(); mySprite.addEventListener(TransformGestureEvent.GESTURE_PAN , onPan); mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0, 0, 100, 80); var myTextField = new TextField(); myTextField.y = 200; addChild(mySprite); addChild(myTextField); function onPan(evt:TransformGestureEvent):void { evt.target.localX++; if (evt.phase==GesturePhase.BEGIN) { myTextField.text = "Begin"; } if (evt.phase==GesturePhase.UPDATE) { myTextField.text = "Update"; } if (evt.phase==GesturePhase.END) { myTextField.text = "End"; } }
Событие mouseOverСобытие touchOverflash.ui.Multitouch
gestureTwoFingerTap Отправляется, когда пользователь наживает две точки контакта над одним экземпляром InteractiveObject на устройстве с сенсорным экраном (например, двумя пальцами нажимает точки над экранным объектом и отпускает их при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.GestureEvent.GESTURE_TWO_FINGER_TAPflash.events.GestureEvent Отправляется, когда пользователь наживает две точки контакта над одним экземпляром InteractiveObject на устройстве с сенсорным экраном (например, двумя пальцами нажимает точки над экранным объектом и отпускает их при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие doubleClick.

В частности, если пользователь касается двумя пальцами объекта InteractiveObject, то экземпляр InteractiveObject может отправить события doubleClick или gestureTwoFingerTap, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события doubleClick, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие gestureTwoFingerTap, обработчик можно создать таким образом, чтобы он реагировал на конкретные события устройства с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Событие doubleClickflash.ui.Multitouch
touchTap Отправляется, когда пользователь поднимает точку контакта над тем же экземпляром InteractiveObject, с которым был установлен первичный контакт на сенсорном экране (например, нажимает точку на экранном объекте и поднимает палец с той же точки при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TouchEvent.TOUCH_TAPflash.events.TouchEvent Отправляется, когда пользователь поднимает точку контакта над тем же экземпляром InteractiveObject, с которым был установлен первичный контакт на сенсорном экране (например, нажимает точку на экранном объекте и поднимает палец с той же точки при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие click.

В частности, если пользователь касается пальцем объекта InteractiveObject, то экземпляр InteractiveObject может отправить события click или touchTap, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события click, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchTap, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий код отображает сообщение, когда пользователь прикасается к квадрату, нарисованному в mySprite, на сенсорном экране. Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; var mySprite:Sprite = new Sprite(); var myTextField:TextField = new TextField(); mySprite.graphics.beginFill(0x336699); mySprite.graphics.drawRect(0,0,40,40); addChild(mySprite); mySprite.addEventListener(TouchEvent.TOUCH_TAP, taphandler); function taphandler(e:TouchEvent): void { myTextField.text = "I've been tapped"; myTextField.y = 50; addChild(myTextField); }
Событие clickflash.ui.Multitouch
touchRollOver Отправляется, когда пользователь перемещает точку контакта над экземпляром InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с точки за пределами экранного объекта в точку над ним при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TouchEvent.TOUCH_ROLL_OVERflash.events.TouchEvent Отправляется, когда пользователь перемещает точку контакта над экземпляром InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с точки за пределами экранного объекта в точку над ним при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие rollOver.

В частности, если пользователь проводит пальцем над объектом InteractiveObject, то экземпляр InteractiveObject может отправить события rollOver или touchRollOver, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события rollOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchRollOver, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Событие rollOverflash.ui.Multitouch
touchRollOut Отправляется, когда пользователь удаляет точку контакта из экземпляра InteractiveObject на сенсорном устройстве (например, переводит палец из положения над экранным объектом в точку за пределами экранного объекта на мобильном телефоне или планшете с сенсорным экраном).flash.events.TouchEvent.TOUCH_ROLL_OUTflash.events.TouchEvent Отправляется, когда пользователь удаляет точку контакта из экземпляра InteractiveObject на сенсорном устройстве (например, переводит палец из положения над экранным объектом в точку за пределами экранного объекта на мобильном телефоне или планшете с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие rollOut.

В частности, если пользователь проводит пальцем над объектом InteractiveObject, то экземпляр InteractiveObject может отправить события rollOut или touchRollOut, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события rollOut, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchRollOut, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Событие rollOutflash.ui.Multitouch
touchOver Отправляется, когда пользователь перемещает точку контакта над экземпляром InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с точки за пределами экранного объекта в точку над ним при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TouchEvent.TOUCH_OVERflash.events.TouchEvent Отправляется, когда пользователь перемещает точку контакта над экземпляром InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с точки за пределами экранного объекта в точку над ним при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие mouseOver.

В частности, если пользователь проводит пальцем над объектом InteractiveObject, то экземпляр InteractiveObject может отправить события mouseOver или touchOver, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOver, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако, если требуется обрабатывать событие touchOver, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Событие mouseOverflash.ui.Multitouch
touchOut Отправляется, когда пользователь перемещает точку контакта от экземпляра InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с одного экранного объекта на другой при использовании мобильного телефона или планшетного компьютера с сенсорным экраном).flash.events.TouchEvent.TOUCH_OUTflash.events.TouchEvent Отправляется, когда пользователь перемещает точку контакта от экземпляра InteractiveObject на устройстве с сенсорным экраном (например, перетаскивает палец с одного экранного объекта на другой при использовании мобильного телефона или планшетного компьютера с сенсорным экраном). Некоторые устройства также могут интерпретировать этот контакт как событие mouseOut.

В частности, если пользователь проводит пальцем через весь сенсорный экран, то экземпляр InteractiveObject может отправить события mouseOut или touchOut, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseOut, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchOut, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Событие mouseOutflash.ui.Multitouch
touchMove Отправляется, когда пользователь перемещает точку контакта на сенсорном экране устройства (например, перетаскивает палец по сенсорному экрану мобильного телефона или планшетного компьютера).flash.events.TouchEvent.TOUCH_MOVEflash.events.TouchEvent Отправляется, когда пользователь перемещает точку контакта на сенсорном экране устройства (например, перетаскивает палец по сенсорному экрану мобильного телефона или планшетного компьютера). Некоторые устройства также могут интерпретировать этот контакт как событие mouseMove.

В частности, если пользователь проводит пальцем через весь сенсорный экран, то экземпляр InteractiveObject может отправить события mouseMove или touchMove, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseMove, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchMove, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий TOUCH_BEGIN, TOUCH_MOVE и TOUCH_END. Во время перемещения точки контакта по экрану (onTouchMove), отслеживается и отображается ее координата по оси X относительно рабочей области. Для параметров Sprite.startTouchDrag в функции onTouchBegin значением touchPointID является значение, присвоенное объекту события. Параметр bounds представляет собой прямоугольник, определяющий границы родительского экранного объекта (bg является экранным объектом, содержащим MySprite). Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(eBegin:TouchEvent) { eBegin.target.startTouchDrag(eBegin.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchMove(eMove:TouchEvent) { trace(eMove.stageX); } function onTouchEnd(eEnd:TouchEvent) { eEnd.target.stopTouchDrag(eEnd.touchPointID); trace("touch end"); }
Событие mouseMoveflash.ui.Multitouch
touchEnd Отправляется, когда пользователь убирает точку контакта с сенсорным экраном устройства (например, поднимает палец с сенсорного экрана мобильного телефона или планшетного компьютера).flash.events.TouchEvent.TOUCH_ENDflash.events.TouchEvent Отправляется, когда пользователь убирает точку контакта с сенсорным экраном устройства (например, поднимает палец с сенсорного экрана мобильного телефона или планшетного компьютера). Некоторые устройства также могут интерпретировать этот контакт как событие mouseUp.

В частности, если пользователь поднимает палец с сенсорного экрана, то экземпляр InteractiveObject может отправить события mouseUp или touchEnd, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseUp, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchEnd, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий TOUCH_BEGIN, TOUCH_MOVE и TOUCH_END. Во время перемещения точки контакта по экрану (onTouchMove), отслеживается и отображается ее координата по оси X относительно рабочей области. Для параметров Sprite.startTouchDrag в функции onTouchBegin значением touchPointID является значение, присвоенное объекту события. Параметр bounds представляет собой прямоугольник, определяющий границы родительского экранного объекта (bg является экранным объектом, содержащим MySprite). Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(eBegin:TouchEvent) { eBegin.target.startTouchDrag(eBegin.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchMove(eMove:TouchEvent) { trace(eMove.stageX); } function onTouchEnd(eEnd:TouchEvent) { eEnd.target.stopTouchDrag(eEnd.touchPointID); trace("touch end"); }
Событие mouseUpflash.ui.Multitouch
touchBegin Отправляется, когда пользователь впервые создает точку контакта с сенсорным экраном устройства (например, касается сенсорного экрана мобильного телефона или планшетного компьютера).flash.events.TouchEvent.TOUCH_BEGINflash.events.TouchEvent Отправляется, когда пользователь впервые создает точку контакта с сенсорным экраном устройства (например, касается сенсорного экрана мобильного телефона или планшетного компьютера). Некоторые устройства также могут интерпретировать этот контакт как событие mouseDown.

В частности, если пользователь прикасается пальцем к сенсорному экрану, то экземпляр InteractiveObject может отправить события mouseDown или touchBegin, либо оба сразу, если это поддерживается текущей средой. Выберите способ обработки взаимодействия с пользователем. Используйте класс flash.ui.Multitouch для управления обработкой событий (включите обработку событий сложных жестов, событий простых точечных касаний или выключите события касания, чтобы отправлялись только события мыши). Если задана обработка события mouseDown, то один и тот же обработчик события будет использоваться для устройств с сенсорным экраном и для устройств с мышью. Однако если требуется обрабатывать событие touchBegin, обработчик можно создать таким образом, чтобы он удовлетворял конкретные потребности устройств с сенсорным экраном и предоставлял пользователям расширенные возможности управления с помощью жестов. Также можно обрабатывать оба события по отдельности, чтобы обеспечить разную реакцию на события прикосновения и мыши.

Примечание. Сведения о совместимости сред см. в описании класса Multitouch.

Следующий пример демонстрирует обработку событий TOUCH_BEGIN, TOUCH_MOVE и TOUCH_END. Во время перемещения точки контакта по экрану (onTouchMove), отслеживается и отображается ее координата по оси X относительно рабочей области. Для параметров Sprite.startTouchDrag в функции onTouchBegin значением touchPointID является значение, присвоенное объекту события. Параметр bounds представляет собой прямоугольник, определяющий границы родительского экранного объекта (bg является экранным объектом, содержащим MySprite). Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(eBegin:TouchEvent) { eBegin.target.startTouchDrag(eBegin.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchMove(eMove:TouchEvent) { trace(eMove.stageX); } function onTouchEnd(eEnd:TouchEvent) { eEnd.target.stopTouchDrag(eEnd.touchPointID); trace("touch end"); }
Событие mouseDownflash.ui.Multitouch
rollOver Отправляется, когда пользователь наводит указывающее устройство на экземпляр InteractiveObject.flash.events.MouseEvent.ROLL_OVERflash.events.MouseEvent Отправляется, когда пользователь наводит указывающее устройство на экземпляр InteractiveObject. Цель этого события — объект, находящийся под указателем, или родительский объект. relatedObject — это объект, на который до этого был наведен указатель. События rollOver отправляются последовательно вниз по родительской цепочке объекта, начиная с элемента самого высокого уровня, не являющегося корневым элементом или предшествующим элементом relatedObject, и заканчивая самим объектом.

Цель события rollOver — упростить кодировку поведений отката для контейнеров экранных объектов с дочерними элементами. Когда мышь переходит в область экранного объекта или его дочерних элементов от объекта, не являющегося дочерним по отношению к данному объекту, экранный объект отправляет событие rollOver. Это поведение отличается от события mouseOver, которое отправляется каждый раз при переходе мыши в область дочернего объекта контейнера экранных объектов, даже если она переместилась туда с другого дочернего объекта контейнера.

rollOut Отправляется, когда пользователь перемещает указатель с экземпляра InteractiveObject.flash.events.MouseEvent.ROLL_OUTflash.events.MouseEvent Отправляется, когда пользователь перемещает указатель с экземпляра InteractiveObject. Цель этого события — объект, который раньше находился под указателем, или его родительский объект. relatedObject — это объект, на который перемещен указатель. События rollOut отправляются последовательно по восходящей от объекта, начиная с объекта и заканчивая самым родительским элементом, не являющимся корнем или предшественником для объекта relatedObject.

Цель события rollOut — упростить кодировку событий наведения для контейнеров отображаемых объектов с дочерними элементами. При выходе курсора мыши из области объекта отображения или области его дочерних элементов для перехода к объекту, не являющемуся одним из его дочерних элементов, объект отображения отправляет событие rollOut. Это поведение отличается от поведения события mouseOut, которое отправляется каждый раз при перемещении курсора мыши из области дочернего объекта контейнера объектов отображения, даже если он находится на другом дочернем объекте контейнера объектов отображения.

mouseWheel Отправляется при прокрутке колеса мыши над экземпляром InteractiveObject.flash.events.MouseEvent.MOUSE_WHEELflash.events.MouseEvent Отправляется при прокрутке колеса мыши над экземпляром InteractiveObject. Если цель — текстовое поле, то действие по умолчанию — прокрутка текста. Доступно только в операционных системах Microsoft Windows. mouseUp Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.MOUSE_UPflash.events.MouseEvent Отправляется, когда пользователь отпускает кнопку указывающего устройства над экземпляром InteractiveObject. Если целью является экземпляр SimpleButton, объект отображает экранный объект upState. Если целью является выбираемое текстовое поле, то действие по умолчанию — завершение выбора текстового поля. mouseOver Отправляется, когда пользователь наводит указывающее устройство на экземпляр InteractiveObject.flash.events.MouseEvent.MOUSE_OVERflash.events.MouseEvent Отправляется, когда пользователь наводит указывающее устройство на экземпляр InteractiveObject. relatedObject — это объект, на который до этого был наведен указатель. Если цель — экземпляр SimpleButton, объект по умолчанию отображает объект отображения overState или upState в зависимости от того, нажата ли кнопка мыши.

Событие mouseOver отправляется каждый раз при перемещении курсора мыши в область дочернего объекта контейнера объектов отображения, даже при переходе с другого дочернего объекта контейнера объектов отображения. Это событие имеет иную цель, в отличие от события rollOver, которое служит для упрощения кодировки поведений отката для контейнеров объектов отображения с дочерними элементами. Когда мышь переходит в область экранного объекта или его дочерних элементов от объекта, не являющегося дочерним по отношению к данному объекту, экранный объект отправляет событие rollOver. События rollOver отправляются последовательно вниз по родительской цепочке объекта, начиная с элемента самого высокого уровня, не являющегося корневым элементом или предшествующим элементом relatedObject, и заканчивая самим объектом.

mouseOut Отправляется, когда пользователь перемещает указатель с экземпляра InteractiveObject.flash.events.MouseEvent.MOUSE_OUTflash.events.MouseEvent Отправляется, когда пользователь перемещает указатель с экземпляра InteractiveObject. Целью события является объект, на который до этого был наведен указатель. relatedObject — это объект, на который перемещен указатель. Если целью является экземпляр SimpleButton, кнопка по умолчанию отображает экранный объект upState.

Событие mouseOut отправляется каждый раз при перемещении курсора мыши из области дочернего объекта контейнера экранных объектов, даже если был выполнен переход к другому дочернему объекту. Это событие имеет иную цель, в отличие от события rollOut, которое служит для упрощения кодировки поведений ролловера для контейнеров экранных объектов с дочерними элементами. Когда мышь покидает область экранного объекта или его дочерних элементов и переходит к объекту, не являющемуся его дочерним элементом, экранный объект отправляет событие rollOut. События rollOut отправляются последовательно вверх по восходящей цепочке, начиная с объекта и заканчивая объектом верхнего уровня, который не является корнем или предшественником объекта relatedObject.

mouseMove Отправляется, когда пользователь перемещает указывающее устройство в момент, когда курсор находится над объектом InteractiveObject.flash.events.MouseEvent.MOUSE_MOVEflash.events.MouseEvent Отправляется, когда пользователь перемещает указывающее устройство в момент, когда курсор находится над объектом InteractiveObject. Если цель — текстовое поле, которое выбирает пользователь, действие по умолчанию — обновление выбора. mouseDown Отправляется, когда пользователь нажимает кнопку указывающего устройства над экземпляром InteractiveObject.flash.events.MouseEvent.MOUSE_DOWNflash.events.MouseEvent Отправляется, когда пользователь нажимает кнопку указывающего устройства над экземпляром InteractiveObject. Если цель — экземпляр SimpleButton, кнопка по умолчанию отображает экранный объект downState. Если цель — выбираемое текстовое поле, то действие по умолчанию — начало выбора текстового поля. doubleClick Отправляется, когда пользователь дважды нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject, а флаг doubleClickEnabled для этого объекта имеет значение true.flash.events.MouseEvent.DOUBLE_CLICKflash.events.MouseEvent Отправляется, когда пользователь дважды нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject, а флаг doubleClickEnabled для этого объекта имеет значение true. Чтобы произошло событие doubleClick, оно должно следовать непосредственно за этими последовательностями событий: mouseDown, mouseUp, click, mouseDown, mouseUp. У всех этих событий должна быть та же цель, что и у события doubleClick. Второй щелчок, представленный событиями mouseDown и mouseUp, должен произойти в пределах заданного периода времени после события click. Допустимая продолжительность этого периода варьируется в зависимости от операционной системы и может настраиваться пользователем. Если цель — выбираемое текстовое поле, действие по умолчанию — выделение слова, находящегося под указателем. Если у целевого объекта InteractiveObject флаг doubleClickEnabled имеет значение true, он получает два события click.

По умолчанию свойство doubleClickEnabled имеет значение false.

Выделение текста двойным щелчком как поведение объекта TextField не связано с событием doubleClick. Используйте TextField.doubleClickEnabled для управления выделением TextField.

doubleClickEnabled
click Отправляется, когда пользователь нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject.flash.events.MouseEvent.CLICKflash.events.MouseEvent Отправляется, когда пользователь нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject. Чтобы произошло событие «click», оно должно следовать за данной последовательностью событий, перечисленных в порядке появления: событие mouseDown, а затем mouseUp. Оба эти события должны иметь ту же цель, иначе событие click не произойдет. Между событиями mouseDown или mouseUp может произойти любое количество других событий мыши; событие click все равно происходит. mouseFocusChange Отправляется, когда пользователь пытается изменить фокус с помощью указывающего устройства.flash.events.FocusEvent.MOUSE_FOCUS_CHANGEflash.events.FocusEvent Отправляется, когда пользователь пытается изменить фокус с помощью указывающего устройства. По умолчанию это событие изменяет фокус и отправляет соответствующие события focusIn и focusOut.

Это событие отправляется объекту, который в данный момент находится в фокусе. Связанным объектом этого события является экземпляр InteractiveObject, попадающий в фокус, если не изменить поведение по умолчанию. Чтобы предотвратить изменение фокуса, можно вызвать метод preventDefault() в прослушивателе событий, соответствующим образом зарегистрированном для целевого объекта. Свойство shiftKey не используется. Фокус меняется, и события focusIn и focusOut отправляются по умолчанию.

keyFocusChange Отправляется, когда пользователь пытается изменить фокус с помощью клавиатуры.flash.events.FocusEvent.KEY_FOCUS_CHANGEflash.events.FocusEvent Отправляется, когда пользователь пытается изменить фокус с помощью клавиатуры. По умолчанию это событие изменяет фокус и отправляет соответствующие события focusIn и focusOut.

Это событие отправляется объекту, который в данный момент находится в фокусе. Связанным объектом этого события является экземпляр InteractiveObject, попадающий в фокус, если не изменить поведение по умолчанию. Чтобы предотвратить изменение фокуса, можно вызвать метод preventDefault() в прослушивателе событий, соответствующим образом зарегистрированном для целевого объекта. Фокус меняется, и события focusIn и focusOut отправляются по умолчанию.

focusOut Отправляется после того, как экранный объект теряет фокус.flash.events.FocusEvent.FOCUS_OUTflash.events.FocusEvent Отправляется после того, как экранный объект теряет фокус. Это происходит, когда пользователь выделяет другой объект с помощью указателя или клавиатуры. Объект, теряющий фокус, называется целевым объектом события, а соответствующий экземпляр InteractiveObject, получающий фокус, называется связанным объектом. Ссылка на связанный объект сохраняется в свойстве relatedObject целевого объекта. Свойство shiftKey не используется. Это событие предшествует отправке события focusIn связанным объектом. focusIn Отправляется после того, как экранный объект перемещается в фокус.flash.events.FocusEvent.FOCUS_INflash.events.FocusEvent Отправляется после того, как экранный объект перемещается в фокус. Это происходит, когда пользователь выделяет объект с помощью указателя или клавиатуры. Получатель фокуса называется целевым объектом события, а соответствующий экземпляр InteractiveObject, потерявший фокус в результате данного изменения, называется связанным объектом. Ссылка на связанный объект сохраняется в свойстве relatedObject получающего объекта. Свойство shiftKey не используется. Это событие следует после отправки события focusOut предыдущего объекта. selectAll Отправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции «Выделить все», или выбирает команду «Выделить все» из контекстного меню.flash.events.Event.SELECT_ALLflash.events.Event Отправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции «Выделить все», или выбирает команду «Выделить все» из контекстного меню. Это событие отправляется объекту, который в данный момент находится в фокусе. Если объект, находящийся в фокусе, является экземпляром TextField, действием по умолчанию этого события является выделение всего содержимого текстового поля. paste Отправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции «Вставить», или выбирает команду «Вставить» из контекстного меню.flash.events.Event.PASTEflash.events.Event Отправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции «Вставить», или выбирает команду «Вставить» из контекстного меню. Это событие отправляется объекту, который в данный момент находится в фокусе. Если объект, находящийся в фокусе, является экземпляром TextField, по умолчанию содержимое буфера обмена вставляется в текстовое поле в текущей точке вставки, заменяя выделенный текст в поле. cut Отправляется, когда пользователь активирует комбинацию клавиш быстрого вызова, используемую на данной платформе для операции «Вырезать», или выбирает команду «Вырезать» из контекстного меню.flash.events.Event.CUTflash.events.Event Отправляется, когда пользователь активирует комбинацию клавиш быстрого вызова, используемую на данной платформе для операции «Вырезать», или выбирает команду «Вырезать» из контекстного меню. Это событие отправляется объекту, который в данный момент находится в фокусе. Если объектом, находящимся в фокусе, является экземпляр TextField, событием по умолчанию является вырезание и сохранение в буфере обмена выделенного в данный момент текстового поля. copy Отправляется, когда пользователь активирует комбинацию клавиш быстрого вызова, используемую на данной платформе для операции «Копировать», или выбирает команду «Копировать» из контекстного меню.flash.events.Event.COPYflash.events.Event Отправляется, когда пользователь активирует комбинацию клавиш быстрого вызова, используемую на данной платформе для операции «Копировать», или выбирает команду «Копировать» из контекстного меню. Это событие отправляется объекту, который в данный момент находится в фокусе. Если объектом, находящимся в фокусе, является экземпляр TextField, событием по умолчанию является копирование в буфер обмена выделенного в данный момент текстового поля. clear Отправляется, когда пользователь выбирает команду «Удалить» из контекстного меню текста.flash.events.Event.CLEARflash.events.Event Отправляется, когда пользователь выбирает команду «Удалить» из контекстного меню текста. Это событие отправляется объекту, который в данный момент находится в фокусе. Если объектом, находящимся в фокусе, является экземпляр TextField, событием по умолчанию является удаление выделенного в данный момент текстового поля. InteractiveObject При вызове конструктора new InteractiveObject() выдается исключение ArgumentError. При вызове конструктора new InteractiveObject() выдается исключение ArgumentError. Однако можно вызывать конструкторы для следующих подклассов InteractiveObject:
  • new SimpleButton()
  • new TextField()
  • new Loader()
  • new Sprite()
  • new MovieClip()
requestSoftKeyboard Вызывает виртуальную клавиатуру.Значение true означает передачу запроса программной клавиатуры, а false — программная клавиатура не вызывалась. BooleanЕсли текущий контекст поддерживает это, покажите клавиатуру. Вызывает виртуальную клавиатуру.

Вызов этого метода наводит фокус на экземпляр InteractiveObject и вызывает программную клавиатуру, если необходимо. Значение needsSoftKeyboard должно равняться true. Клавиатура не вызывается, если доступна аппаратная клавиатура или если система клиента не поддерживает виртуальные клавиатуры.

Примечание. Этот метод не поддерживается в приложениях AIR для iOS.

needsSoftKeyboard
accessibilityImplementation Текущая реализация специальных возможностей (AccessibilityImplementation) для данного экземпляра InteractiveObject.flash.accessibility:AccessibilityImplementation Текущая реализация специальных возможностей (AccessibilityImplementation) для данного экземпляра InteractiveObject. flash.accessibility.AccessibilityImplementationcontextMenu Определяет контекстное меню, связанное с данным объектом.flash.display:NativeMenuКонтекстное меню, связанное с этим объектом Определяет контекстное меню, связанное с данным объектом.

Для содержимого, запущенного в проигрывателе Flash Player, это свойство является объектом ContextMenu. В среде выполнения AIR класс ContextMenu расширяет класс NativeMenu, однако Flash Player поддерживает только класс ContextMenu, но не класс NativeMenu.

Примечание. Объекты TextField всегда содержат меню буфера обмена в контекстном меню. Меню буфера обмена включает команды «Вырезать», «Копировать», «Вставить» и «Выбрать все». Удалить эти команды из контекстного меню для объектов TextField невозможно. Для объектов TextField выбор этих команд (или сочетаний клавиш, эквивалентных элементу меню) не приводит к генерации событий clear, copy, cut, paste или selectAll.

В следующем примере демонстрируется добавление пользовательского пункта контекстного меню в объект Sprite путем назначения его свойству contextMenu объекта ContextMenu. Пример предоставлен ActionScriptExamples.com. var red_cmi:ContextMenuItem = new ContextMenuItem("red"); red_cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, cmi_menuItemSelect); var cm:ContextMenu = new ContextMenu(); cm.customItems.push(red_cmi); cm.hideBuiltInItems(); var spr:Sprite = new Sprite(); spr.contextMenu = cm; spr.graphics.beginFill(0x000000); spr.graphics.drawRect(0, 0, 120, 90); spr.graphics.endFill(); spr.x = 10; spr.y = 10; addChild(spr); function cmi_menuItemSelect(evt:ContextMenuEvent):void { spr.graphics.clear(); spr.graphics.beginFill(0xFF0000); spr.graphics.drawRect(0, 0, 120, 90); spr.graphics.endFill(); }
doubleClickEnabled Определяет, получает ли объект события doubleClick.BooleanОпределяет, получает ли этот объект сообщения о двойном щелчке. Определяет, получает ли объект события doubleClick. Значение по умолчанию — false: по умолчанию экземпляр InteractiveObject не получает событий doubleClick. Если свойству doubleClickEnabled задано значение true, экземпляр получает события doubleClick в своих границах. Свойство mouseEnabled экземпляра InteractiveObject должно иметь значение true, чтобы объект мог получать события doubleClick.

При настройке данного свойства события не отправляются. Чтобы добавить прослушиватель события doubleClick, необходимо использовать метод addEventListener().

doubleClickmouseEnabledflash.display.DisplayObjectContainer.mouseChildren
focusRect Задает отображение прямоугольной рамки индикатора фокуса для данного объекта.Object Задает отображение прямоугольной рамки индикатора фокуса для данного объекта. Может принимать одно из трех значений true, false или null. Значения true и false дают ожидаемые результаты, определяя, будет ли появляться прямоугольник в фокусе. Значение null указывает, что данный объект подчиняется свойству stageFocusRect рабочей области. mouseEnabled Определяет, получает ли этот объект события мыши или другого пользовательского ввода.Boolean Определяет, получает ли этот объект события мыши или другого пользовательского ввода. Значение по умолчанию — true, которое указывает, что по умолчанию любой экземпляр InteractiveObject в списке отображения получает события мыши или других устройств пользовательского ввода. Если свойство mouseEnabled имеет значение false, экземпляр не получает событий мыши (или события другого пользовательского ввода, например клавиатуры). Эта настройка не затрагивает дочерние элементы данного экземпляра в списке отображения. Чтобы изменить поведение mouseEnabled для всех дочерних элементов объекта в списке отображения, используйте flash.display.DisplayObjectContainer.mouseChildren.

При настройке данного свойства события не отправляются. Чтобы создать интерактивные функции, необходимо использовать метод addEventListener().

flash.display.DisplayObjectContainer.mouseChildren
needsSoftKeyboard Определяет, должна ли отображаться виртуальная клавиатура (программная экранная клавиатура), когда этот экземпляр InteractiveObject получает фокус.Boolean Определяет, должна ли отображаться виртуальная клавиатура (программная экранная клавиатура), когда этот экземпляр InteractiveObject получает фокус.

По умолчанию задано значение false. Когда экземпляр InteractiveObject получает фокус, программная клавиатура не отображается. Если для свойства needsSoftKeyboard задано значение true, то во время выполнения отображается программная клавиатура, когда экземпляр InteractiveObject готов принять ввод данных пользователем. Экземпляр InteractiveObject готов принять ввод данных пользователем после программного вызова для задания свойства focus рабочей области свойства или действий пользователя, например «касания». Если в клиентской системе есть аппаратная клавиатура или она не поддерживает виртуальные клавиатуры, то программная клавиатура не отображается.

Экземпляр InteractiveObject передает события softKeyboardActivating, softKeyboardActivate и softKeyboardDeactivate при отображении и переводе на задний план программной клавиатуры.

Примечание. Это свойство не поддерживается в приложениях AIR для iOS.

softKeyboardActivatingsoftKeyboardActivatesoftKeyboardDeactivate
softKeyboardInputAreaOfInterest Определяет область, которая должна оставаться на экране при отображении программной клавиатуры.flash.geom:RectangleОпределяет область отображения на экране, когда появляется экранная клавиатура. Определяет область, которая должна оставаться на экране при отображении программной клавиатуры.

Если для свойства needsSoftKeyboard этого объекта InteractiveObject задано значение true, то среда выполнения корректирует отображение, чтобы объект оставался в области отображения, когда пользователь вводит данные. Обычно среда выполнения использует границы объекта, полученные из метода DisplayObject.getBounds(). Можно указать другую область, используя свойство softKeyboardInputAreaOfInterest.

Укажите softKeyboardInputAreaOfInterest в координатах рабочей области.

Примечание. В ОС Android softKeyboardInputAreaOfInterest не учитывается с альбомной ориентацией.

flash.display.DisplayObject.getBounds()
tabEnabled Определяет, включен ли переход к этому объекту с помощью клавиши Tab.BooleanОпределяет, включен ли этот объект в последовательность перехода с помощью клавиши Tab. Определяет, включен ли переход к этому объекту с помощью клавиши Tab. Если объект включен в последовательность перехода с помощью клавиши Tab, значение — true; в противном случае — false. По умолчанию используется значение false, за исключением следующих случаев.
  • Для объекта SimpleButton используется значение true.
  • Для объекта TextField с type = "input" используется значение true.
  • Для объекта Sprite или MovieClip с buttonMode = true используется значение true.
tabIndex Задает последовательность перехода между объектами в SWF-файле.intИндекс при переходе с помощью клавиши Tab для этого объекта. Задает последовательность перехода между объектами в SWF-файле. Свойство tabIndex по умолчанию имеет значение -1, то есть для объекта не задан индекс при переходе с помощью клавиши Tab.

Если какой-либо отображаемый в данный момент объект в SWF-файле имеет свойство tabIndex, автоматическая последовательность перехода с помощью клавиши Tab отключается, и последовательность перехода вычисляется по свойствам tabIndex объектов SWF-файла. Пользовательская последовательность перехода с помощью клавиши Tab включает только объекты, имеющие свойство tabIndex.

Свойство tabIndex может быть выражено неотрицательным числом. Последовательность перехода определяется в соответствии со свойствами tabIndex объектов в восходящем порядке. Объект со значением 1 свойства tabIndex предшествует объекту со значением 2 свойства tabIndex. Нельзя использовать одинаковое значение tabIndex для нескольких объектов.

Пользовательская последовательность перехода с помощью клавиши Tab, определяемая свойством tabIndex, является линейной. Это значит, что иерархические отношения объектов в SWF-файле не учитываются. Все объекты в SWF-файле со свойствами tabIndex помещаются в последовательность перехода с помощью клавиши Tab, которая определяется последовательностью значений tabIndex.

Примечание. Чтобы установить порядок табуляции для экземпляров TLFTextField, передайте дочерний объект экранного объекта TLFTextField как InteractiveObject, затем задайте свойство tabIndex. Например:

	 InteractiveObject(tlfInstance.getChildAt(1)).tabIndex = 3;
	 
Чтобы изменить порядок табуляции по умолчанию на обратный для трех экземпляров объекта TLFTextField (tlfInstance1, tlfInstance2 и tlfInstance3), используйте:
	 InteractiveObject(tlfInstance1.getChildAt(1)).tabIndex = 3;
	 InteractiveObject(tlfInstance2.getChildAt(1)).tabIndex = 2;
	 InteractiveObject(tlfInstance3.getChildAt(1)).tabIndex = 1;
	 

GraphicsTrianglePath Задает упорядоченный набор треугольников, которые будут визуализироваться с использованием координат заливки (u,v) или с помощью обычной заливки.flash.display:IGraphicsPathflash.display:IGraphicsDataObject Задает упорядоченный набор треугольников, которые будут визуализироваться с использованием координат заливки (u,v) или с помощью обычной заливки. Каждый треугольник в контуре представлен тремя наборами координат (x, y) для каждой вершины треугольника.

Векторы треугольников могут не содержать координату z и не представлять трехмерные поверхности. Однако, контур треугольника может быть использован для визуализации трехмерных геометрических объектов в двухмерном пространстве.

flash.display.Graphics.drawTriangles()GraphicsTrianglePath Создает новый объект GraphicsTrianglePath.verticesnullВектор чисел, где каждая пара чисел рассматривается как точка (пара координат x, y). Обязательное. indicesnullВектор целых чисел или индексов, где каждые три индекса определяют треугольник. uvtDatanullВектор нормализованных координат, используемый для наложения текстуры. cullingStringnoneУказывает, производить ли визуализацию треугольников, которые повернуты в указанном направлении. Используется для предотвращения визуализации треугольников, которые не видны с текущей точки обзора. Может быть настроено на использование любого значения класса TriangleCulling. Создает новый объект GraphicsTrianglePath. отборflash.display.TriangleCullingindices Вектор целых чисел или индексов, где каждые три индекса определяют треугольник. Вектор целых чисел или индексов, где каждые три индекса определяют треугольник. Если параметру индексов задано значение null, то треугольник определяют каждые три вершины (шесть пар х,у в векторе вершин). В противном случае каждый индекс относится к вершине, представленной парой чисел в векторе вершин. Например, indexes[1] определяет точку с координатами (vertices[2], vertices[3]). uvtData Вектор нормализованных координат, используемый для наложения текстуры. Вектор нормализованных координат, используемый для наложения текстуры. Каждая координата определяет точку на растровом изображении, используемом для заливки. Для каждой вершины должна быть указана одна координата UV или одна координата UVT.

В координатах UV точка (0,0) — это верхняя левая точка, а точка (1,1) — нижняя правая точка растрового изображения.

Если длина этого вектора в два раза превышает длину вектора vertices, то нормализованные координаты используются без перспективной коррекции.

Если длина этого вектора в три раза превышает длину вектора vertices, то третья координата интерпретируется как «t», расстояние от глаза до текстуры в поле зрения. Это помогает средству визуализации правильно применить перспективу при наложении текстур в трехмерной графике.

vertices Вектор чисел, где каждая пара чисел рассматривается как точка (пара координат x, y). Вектор чисел, где каждая пара чисел рассматривается как точка (пара координат x, y). culling Указывает, производить ли визуализацию треугольников, которые повернуты в указанном направлении.String Указывает, производить ли визуализацию треугольников, которые повернуты в указанном направлении. Используется для предотвращения визуализации треугольников, которые не видны с текущей точки обзора.

Может быть настроено на использование любого значения класса TriangleCulling.

flash.display.TriangleCulling
DisplayObject Класс DisplayObject является базовым классом для всех объектов, которые можно поместить в список отображения.flash.display:IBitmapDrawableflash.events:EventDispatcher Класс DisplayObject является базовым классом для всех объектов, которые можно поместить в список отображения. Список отображения управляет всеми объектами, отображаемыми в средах выполнения Flash. Используйте класс DisplayObjectContainer, чтобы упорядочить экранные объекты в списке отображения. Объекты DisplayObjectContainer могут иметь дочерние экранные объекты, а другие экранные объекты, такие как Shape и TextField, являются конечными узлами, у которых есть только родительские элементы и элементы одного уровня, но нет дочерних.

Класс DisplayObject поддерживает базовые функции, такие как положение объекта по осям x и y, а также некоторые расширенные свойства объекта, такие как матрица преобразования.

DisplayObject — это абстрактный базовый класс, поэтому DisplayObject нельзя вызывать непосредственно. При вызове new DisplayObject() выдается исключение ArgumentError.

Все экранные объекты наследуют свойства и методы класса DisplayObject.

Сам класс DisplayObject не содержит API-интерфейсов для визуализации содержимого на экране По этой причине, если требуется создать пользовательский подкласс класса DisplayObject, нужно расширить один из его подклассов, в которых есть API-интерфейс для визуализации содержимого на экране, такие как классы Shape, Sprite, Bitmap, SimpleButton, TextField и MovieClip.

Класс DisplayObject содержит несколько многоадресных событий. Как правило, целью любого конкретного события является конкретный экземпляр DisplayObject. Например, целью события added является конкретный экземпляр DisplayObject, который был добавлен в список отображения. Единственный целевой объект предотвращает добавление прослушивателей событий для этого объекта, а иногда и его предков, в список отображения. Однако для многоадресных событий целью является не конкретный объект DisplayObject, а все экземпляры DisplayObject, в том числе и те, что не включены в список отображения. Это значит, что вы можете добавить прослушиватель к любому экземпляру DisplayObject для прослушивания многоадресных событий. В дополнение к многоадресным событиям, перечисленным в таблице событий класса DisplayObject, класс DisplayObject наследует также два многоадресных события от класса EventDispatcher: activate и deactivate.

Некоторые свойства, которые ранее использовались в ActionScript 1.0 и 2.0 в классах MovieClip, TextField и Button (такие как _alpha, _height, _name, _width, _x, _y и другие) имеют эквиваленты в классе DisplayObject ActionScript 3.0, но они переименованы и больше не начинаются с символа подчеркивания (_).

Дополнительные сведения см. в главе «Программирование экрана» Руководства разработчика по ActionScript 3.0.

В следующем примере с помощью класса DisplayObjectExample рисуется оранжевый квадрат в углу рабочей области, который затем реагирует на события, для каждого из которых отображается текстовая информация. Это можно сделать, выполнив следующие действия.
  1. Объявляются свойства класса для цвета и размера квадрата.
  2. Конструктор вызывает метод draw(), который рисует оранжевый квадрат на монтажном столе в точке с координатами по умолчанию x = 0, y = 0.
  3. Для квадрата добавляются следующие методы прослушивателей событий.
    • addedHandler() прослушивает события added, отправляемые при добавлении квадрата в список отображения.
    • enterFrameHandler() прослушивает события enterFrame, которые в данном примере не несут реальной нагрузки.
    • removedHandler() прослушивает события removed, отправляемые при удалении квадрата из списка отображения, что происходит при щелчке по нему.
    • clickHandler() прослушивает события click, отправляемые при щелчке по оранжевому квадрату.
    • renderHandler() прослушивает события render после обновления списка отображения.
package { import flash.display.Sprite; public class DisplayObjectExample extends Sprite { public function DisplayObjectExample() { var child:CustomDisplayObject = new CustomDisplayObject(); addChild(child); } } } import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; class CustomDisplayObject extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; public function CustomDisplayObject() { draw(); addEventListener(Event.ADDED, addedHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); addEventListener(Event.REMOVED, removedHandler); addEventListener(MouseEvent.CLICK, clickHandler); addEventListener(Event.RENDER, renderHandler); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, size, size); graphics.endFill(); } private function clickHandler(event:MouseEvent):void { trace("clickHandler: " + event); parent.removeChild(this); } private function addedHandler(event:Event):void { trace("addedHandler: " + event); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener("resize", resizeHandler); } private function enterFrameHandler(event:Event):void { trace("enterFrameHandler: " + event); removeEventListener("enterFrame", enterFrameHandler); } private function removedHandler(event:Event):void { trace("removedHandler: " + event); stage.removeEventListener("resize", resizeHandler); } private function renderHandler(event:Event):void { trace("renderHandler: " + event); } private function resizeHandler(event:Event):void { trace("resizeHandler: " + event); } }
flash.display.DisplayObjectContainerrender [многоадресное событие] Отправляется перед обновлением и визуализацией списка отображения.flash.events.Event.RENDERflash.events.Event [многоадресное событие] Отправляется перед обновлением и визуализацией списка отображения. Это событие дает последнюю возможность объектам, прослушивающим данное событие, внести изменения перед визуализацией списка отображения. Метод invalidate() объекта Stage необходимо вызывать каждый раз, когда нужно отправить событие render. События render отправляются объекту только при условии отношений доверия между ним и объектом, вызвавшим метод Stage.invalidate(). Это многоадресное событие, которое отправляется всеми экранными объектами, для которых зарегистрированы прослушиватели данного события.

Примечание. Это событие не отправляется, если дисплей не выполняет визуализацию. Это происходит, когда содержимое свернуто или скрыто.

removedFromStage Отправляется перед удалением экранного объекта из списка отображения либо напрямую, либо путем удаления поддерева, содержащего экранный объект.flash.events.Event.REMOVED_FROM_STAGEflash.events.Event Отправляется перед удалением экранного объекта из списка отображения либо непосредственно, либо путем удаления поддерева, содержащего экранный объект. Это событие генерируют два метода класса DisplayObjectContainer: removeChild() и removeChildAt().

Следующие методы объекта DisplayObjectContainer также генерируют это событие, если один объект должен быть удален с целью освобождения места для нового: addChild(), addChildAt() и setChildIndex().

removed Отправляется перед удалением экранного объекта из списка отображения.flash.events.Event.REMOVEDflash.events.Event Отправляется перед удалением экранного объекта из списка отображения. Это событие генерируют два метода класса DisplayObjectContainer: removeChild() и removeChildAt().

Следующие методы объекта DisplayObjectContainer также генерируют это событие, если один объект должен быть удален с целью освобождения места для нового: addChild(), addChildAt() и setChildIndex().

exitFrame [многоадресное событие] Отправляется, когда точка воспроизведения покидает текущий кадр.flash.events.Event.EXIT_FRAMEflash.events.Event [многоадресное событие] Отправляется, когда точка воспроизведения покидает текущий кадр. Все сценарии кадров выполнены. Если точка воспроизведения не перемещается или если используется только один кадр, это событие отправляется непрерывно в соответствии с частотой кадров. Это многоадресное событие, которое отправляется всеми экранными объектами, для которых зарегистрированы прослушиватели данного события. frameConstructed [многоадресное событие] Отправляется после завершения работы конструкторов экранных объектов кадра до выполнения сценариев кадра.flash.events.Event.FRAME_CONSTRUCTEDflash.events.Event [многоадресное событие] Отправляется после завершения работы конструкторов экранных объектов кадра до выполнения сценариев кадра. Если точка воспроизведения не перемещается или если используется только один кадр, это событие отправляется непрерывно в соответствии с частотой кадров. Это многоадресное событие, которое отправляется всеми экранными объектами, для которых зарегистрированы прослушиватели данного события. enterFrame [многоадресное событие] Отправляется, когда точка воспроизведения переходит в новый кадр.flash.events.Event.ENTER_FRAMEflash.events.Event [многоадресное событие] Отправляется, когда точка воспроизведения переходит в новый кадр. Если точка воспроизведения не перемещается или если используется только один кадр, это событие отправляется непрерывно в соответствии с частотой кадров. Это многоадресное событие, которое отправляется всеми экранными объектами, для которых зарегистрированы прослушиватели данного события. addedToStage Отправляется, когда экранный объект добавляется к списку отображения на монтажном столе либо непосредственно, либо путем добавления поддерева, содержащего экранный объект.flash.events.Event.ADDED_TO_STAGEflash.events.Event Отправляется, когда экранный объект добавляется к списку отображения на монтажном столе либо непосредственно, либо путем добавления поддерева, содержащего экранный объект. Это событие запускается следующими методами: DisplayObjectContainer.addChild(), DisplayObjectContainer.addChildAt(). flash.display.DisplayObjectContainer.addChild()flash.display.DisplayObjectContainer.addChildAt()added Отправляется, когда экранный объект добавляется в список отображения.flash.events.Event.ADDEDflash.events.Event Отправляется, когда экранный объект добавляется в список отображения. Это событие запускается следующими методами: DisplayObjectContainer.addChild(), DisplayObjectContainer.addChildAt(). flash.display.DisplayObjectContainer.addChild()flash.display.DisplayObjectContainer.addChildAt()getBounds Возвращает прямоугольник, определяющий область объекта отображения, которая относится к системе координат объекта targetCoordinateSpace.Прямоугольник, определяющий область экранного объекта относительно системы координат объекта targetCoordinateSpace. flash.geom:RectangletargetCoordinateSpaceflash.display:DisplayObjectЭкранный объект, определяющий используемую систему координат Возвращает прямоугольник, определяющий область экранного объекта, которая относится к системе координат объекта targetCoordinateSpace. На примере следующего кода рассмотрим, как возвращаемый прямоугольник может изменяться в зависимости от передаваемого методу параметра targetCoordinateSpace. var container:Sprite = new Sprite(); container.x = 100; container.y = 100; this.addChild(container); var contents:Shape = new Shape(); contents.graphics.drawCircle(0,0,100); container.addChild(contents); trace(contents.getBounds(container)); // (x=-100, y=-100, w=200, h=200) trace(contents.getBounds(this)); // (x=0, y=0, w=200, h=200)

Примечание. Используйте методы localToGlobal() и globalToLocal() для преобразования локальных координат экранного объекта в координаты экрана и наоборот.

Метод getBounds() похож на методgetRect(), однако прямоугольник, возвращаемый методом getBounds(), включает все штрихи на фигурах, а возвращаемый методом getRect() — нет. Пример см. в описании метода getRect().

getRect()globalToLocal()localToGlobal()
getRect Возвращает прямоугольник, определяющий границу объекта отображения по системе координат, определенной параметром targetCoordinateSpace за исключением линий фигур.Прямоугольник, определяющий область экранного объекта относительно системы координат объекта targetCoordinateSpace. flash.geom:RectangletargetCoordinateSpaceflash.display:DisplayObjectЭкранный объект, определяющий используемую систему координат Возвращает прямоугольник, определяющий границу объекта отображения по системе координат, определенной параметром targetCoordinateSpace за исключением линий фигур. Значения, возвращаемые методом getRect(), равны или меньше возвращаемых методом getBounds().

Примечание. Используйте методы localToGlobal() и globalToLocal() для преобразования локальных координат отображаемого объекта в координаты рабочей области и наоборот.

В следующем примере показано, как метод getBounds() возвращает прямоугольник большего размера, чем метод getRect(), потому что штрихи занимают дополнительное пространство. В данном случае спрайт triangle содержит дополнительные штрихи из-за параметров width и jointStyle метода lineStyle(). Вывод метода trace() (в двух последних строках) показывает различия между прямоугольниками getRect() и getBounds(). import flash.display.CapsStyle; import flash.display.JointStyle; import flash.display.LineScaleMode; import flash.display.Sprite; import flash.geom.Rectangle; var triangle:Sprite = new Sprite(); var color:uint = 0xFF0044; var width:Number = 20; var alpha:Number = 1.0; var pixelHinting:Boolean = true; var scaleMode:String = LineScaleMode.NORMAL; var caps:String = CapsStyle.SQUARE; var joints:String = JointStyle.MITER; triangle.graphics.lineStyle(width, color, alpha, pixelHinting, scaleMode, caps, joints); var triangleSide:Number = 100; triangle.graphics.moveTo(0, 0); triangle.graphics.lineTo(0, triangleSide); triangle.graphics.lineTo(triangleSide, triangleSide); triangle.graphics.lineTo(0, 0); addChild(triangle); trace(triangle.getBounds(this)); // (x=-10, y=-24.1, w=134.10000000000002, h=134.1) trace(triangle.getRect(this)); // (x=0, y=0, w=100, h=100)
getBounds()
globalToLocal3D Преобразует двумерный объект Point из координат рабочей области (глобальных) в координаты экранного трехмерного объекта (локальные).Объект Vector3D с координатами относительно трехмерного экранного объекта. flash.geom:Vector3Dpointflash.geom:PointДвухмерный объект Point, представляющий глобальные координаты x и y. Преобразует двумерный объект Point из координат рабочей области (глобальных) в координаты экранного трехмерного объекта (локальные).

Чтобы воспользоваться этим методом, сначала нужно создать экземпляр класса Point. Присвоенные объекту Point значения x и y представляют глобальные координаты, так как они указаны относительно исходной точки (0, 0) основной области отображения. Затем передайте объект Point методу globalToLocal3D() в виде параметра point. Данный метод возвращает трехмерные координаты в виде объекта Vector3D, содержащего значения x, y и z относительно исходной точки трехмерного экранного объекта.

globalToLocal Преобразует объект Point из координат рабочей области (глобальных) в координаты отображаемого объекта (локальные).Объект Point с координатами относительно отображаемого объекта. flash.geom:Pointpointflash.geom:PointОбъект, созданный с использованием класса Point. Объект Point задает координаты x и y в качестве свойств. Преобразует объект Point из координат рабочей области (глобальных) в координаты отображаемого объекта (локальные). Преобразует объект Point из координат рабочей области (глобальных) в координаты экранного объекта (локальные).

Чтобы воспользоваться этим методом, сначала нужно создать экземпляр класса Point. Присвоенные вами значения x и y представляют глобальные координаты, так как они указаны относительно исходной точки (0,0) основной области отображения. Затем экземпляр Point следует передать в качестве параметра методу globalToLocal(). Этот метод возвращает новый объект Point со значениями x и y, указанными относительно исходной точки отображаемого объекта, а не рабочей области.

Следующий код создает объект Shape и иллюстрирует результат вызова метода hitTestPoint(), в качестве параметров которого используются разные точки. Метод globalToLocal() переводит точку из координатной плоскости рабочей области в координатную плоскость фигуры. import flash.display.Shape; import flash.geom.Point; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.x = 10; addChild(circle); var point1:Point = new Point(0, 0); trace(circle.hitTestPoint(point1.x, point1.y, true)); // false trace(circle.hitTestPoint(point1.x, point1.y, false)); // false trace(circle.globalToLocal(point1)); // [x=-10, y=0] var point2:Point = new Point(10, 1); trace(circle.hitTestPoint(point2.x, point2.y, true)); // false trace(circle.hitTestPoint(point2.x, point2.y, false)); // true trace(circle.globalToLocal(point2)); // [x=0, y=1] var point3:Point = new Point(30, 20); trace(circle.hitTestPoint(point3.x, point3.y, true)); // true trace(circle.hitTestPoint(point3.x, point3.y, false)); // true trace(circle.globalToLocal(point3)); // [x=20, y=20]
localToGlobal()Класс flash.geom.Point
hitTestObject Вычисляет ограничительную рамку экранного объекта, чтобы определить, не перекрывает и не пересекает ли она ограничительную рамку экранного объекта obj.true, если ограничительные рамки экранных объектов пересекаются; false, если нет. Booleanobjflash.display:DisplayObjectЭкранный объект для сравнения. Вычисляет ограничительную рамку экранного объекта, чтобы определить, не перекрывает и не пересекает ли она ограничительную рамку экранного объекта, переданного в качестве параметра. Вычисляет ограничительную рамку экранного объекта, чтобы определить, не перекрывает и не пересекает ли она ограничительную рамку экранного объекта obj. Следующий код создает три объекта Shape и иллюстрирует результат вызова метода hitTestObject(). Обратите внимание на то, что хотя circle2 и circle3 не перекрывают друг друга, их ограничительные рамки пересекаются. Таким образом, проверка circle2 и circle3 на нажатие возвращает значение true. import flash.display.Shape; var circle1:Shape = new Shape(); circle1.graphics.beginFill(0x0000FF); circle1.graphics.drawCircle(40, 40, 40); addChild(circle1); var circle2:Shape = new Shape(); circle2.graphics.beginFill(0x00FF00); circle2.graphics.drawCircle(40, 40, 40); circle2.x = 50; addChild(circle2); var circle3:Shape = new Shape(); circle3.graphics.beginFill(0xFF0000); circle3.graphics.drawCircle(40, 40, 40); circle3.x = 100; circle3.y = 67; addChild(circle3); trace(circle1.hitTestObject(circle2)); // true trace(circle1.hitTestObject(circle3)); // false trace(circle2.hitTestObject(circle3)); // true hitTestPoint Вычисляет экранный объект, чтобы определить, перекрывает ли он точку, заданную координатами x и y, или пересекает ее.Значение — true, если экранный объект перекрывает заданный объект или пересекается с ним; в противном случае — false. BooleanxNumberКоордината x, сравниваемая с данным объектом. yNumberКоордината у, сравниваемая с данным объектом. shapeFlagBooleanfalseУказывает, следует ли выполнять тестирование по фактическим пикселям объекта (true) или по рамке (false). Вычисляет экранный объект, чтобы определить, перекрывает ли он точку, заданную координатами x и y, или пересекает ее. Вычисляет экранный объект, чтобы определить, перекрывает ли он точку, заданную координатами x и y, или пересекает ее. Параметры x и y задают точку в координатной плоскости рабочей области, а не контейнера экранных объектов, содержащего объект (если контейнером не является сама рабочая область). Следующий код создает объект Shape и иллюстрирует результат вызова метода hitTestPoint(), в качестве параметров которого используются разные точки. Метод globalToLocal() переводит точку из координатной плоскости рабочей области в координатную плоскость фигуры. import flash.display.Shape; import flash.geom.Point; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.x = 10; addChild(circle); var point1:Point = new Point(0, 0); trace(circle.hitTestPoint(point1.x, point1.y, true)); // false trace(circle.hitTestPoint(point1.x, point1.y, false)); // false trace(circle.globalToLocal(point1)); // [x=-10, y=0] var point2:Point = new Point(10, 1); trace(circle.hitTestPoint(point2.x, point2.y, true)); // false trace(circle.hitTestPoint(point2.x, point2.y, false)); // true trace(circle.globalToLocal(point2)); // [x=0, y=1] var point3:Point = new Point(30, 20); trace(circle.hitTestPoint(point3.x, point3.y, true)); // true trace(circle.hitTestPoint(point3.x, point3.y, false)); // true trace(circle.globalToLocal(point3)); // [x=20, y=20] opaqueBackgroundlocal3DToGlobal Преобразует трехмерный объект point из координат трехмерного экранного объекта (локальных) в двухмерный объект point с координатами рабочей области (глобальными).Двухмерный объект point, представляющий трехмерный объект point в двухмерном пространстве. flash.geom:Pointpoint3dflash.geom:Vector3DОбъект Vector3D, содержащий либо трехмерный объект point, либо координаты трехмерного экранного объекта. Преобразует трехмерный объект point из координат трехмерного экранного объекта (локальных) в двухмерный объект point с координатами рабочей области (глобальными).

Например, вы можете использовать только двухмерные координаты (x,y) для рисования при помощи методов display.Graphics. Чтобы нарисовать трехмерный объект, необходимо сопоставить трехмерные координаты экранного объекта двухмерным координатам. Сначала создайте экземпляр класса Vector3D с координатами x, y и z трехмерного экранного объекта. Затем передайте объект Vector3D методу local3DToGlobal() в виде параметра point3d. Метод возвращает двухмерный объект Point, который можно использовать с Graphics API для рисования трехмерного объекта.

Данный пример иллюстрирует рисование простого трехмерного куба в двухмерном пространстве при помощи методов display.Graphics. Расположение экранного объекта this смещено, поэтому точка фиксации куба находится в центре. Вектор объектов Vector3D содержит трехмерные координаты куба. Сначала рисуется верхняя грань куба, затем нижняя, затем соединяются верхние и нижние углы. Перед рисованием куба его необходимо добавить в контейнер экранных объектов, чтобы использовать метод local3DToGlobal(). package { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.Graphics; import flash.geom.*; public class Local3DToGlobalExample extends MovieClip { private var myCube:Sprite = new Sprite(); private var v8:Vector.<Vector3D> = new Vector.<Vector3D>(8); public function Local3DToGlobalExample():void { this.x = -(this.stage.stageWidth / 2); this.y = -(this.stage.stageWidth / 2); v8[0] = new Vector3D(-40,-40,-40); v8[1] = new Vector3D(40,-40,-40); v8[2] = new Vector3D(40,-40,40); v8[3] = new Vector3D(-40,-40,40); v8[4] = new Vector3D(-40,100,-40); v8[5] = new Vector3D(40,100,-40); v8[6] = new Vector3D(40,100,40); v8[7] = new Vector3D(-40,100,40); myCube.x = (this.stage.stageWidth / 2); myCube.y = (this.stage.stageWidth / 2); myCube.z = 1; addChild(myCube); Cube(); } private function Cube():void { var ps:Point = new Point(0,0); myCube.graphics.lineStyle(2,0xFF0000); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[1]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[2]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[3]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[5]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[6]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[7]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[1]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[5]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[2]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[6]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[3]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[7]); myCube.graphics.lineTo(ps.x, ps.y); } } }
localToGlobal Преобразует объект Point из координат экранного объекта (локальных) в координаты рабочей области (глобальные).Объект Point с координатами относительно рабочей области. flash.geom:Pointpointflash.geom:PointИмя или идентификатор точки, созданной с использованием класса Point, в качестве свойств которой заданы координаты x и y. Преобразует объект point из координат экранного объекта (локальных) в координаты рабочей области (глобальные).

Этот метод позволяет преобразовать заданные координаты x и y из значений относительно исходной точки (0, 0) конкретного объекта (локальных координат) в значения относительно исходной точки рабочей области (глобальные координаты).

Чтобы воспользоваться этим методом, сначала нужно создать экземпляр класса Point. Присвоенные вами значения x и y представляют локальные координаты, так как они указаны относительно исходной точки экранного объекта.

Затем созданный экземпляр Point передается в качестве параметра методу localToGlobal(). Этот метод возвращает новый объект Point со значениями x и y, указанными относительно исходной точки рабочей области, а не объекта отображения.

Следующий код создает объект Sprite. Свойства mouseX и mouseY спрайта представляют собой координатную плоскость экранного объекта. В этом коде используется метод localToGlobal() для преобразования этих свойств в глобальные координаты (координаты рабочей области). import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Point; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); square.x = 100; square.y = 200; addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates) function traceCoordinates(event:MouseEvent):void { var clickPoint:Point = new Point(square.mouseX, square.mouseY); trace("display object coordinates:", clickPoint); trace("stage coordinates:", square.localToGlobal(clickPoint)); }
globalToLocal()Класс flash.geom.Point
accessibilityProperties Текущие параметры специальных возможностей для данного экранного объекта.flash.accessibility:AccessibilityProperties Текущие параметры специальных возможностей для данного экранного объекта. Если модифицируется свойство accessibilityProperties или любые поля в accessibilityProperties, необходимо вызвать метод Accessibility.updateProperties(), чтобы изменения вступили в силу.

Примечание. Для объектов, созданных в среде разработки Flash, значение accessibilityProperties предварительно заполняется информацией, введенной на панели «Специальные возможности» данного объекта.

На следующем примере показывается, как присоединить простой объект AccessibilityProperties к экземпляру TextField. import flash.text.TextField; import flash.accessibility.AccessibilityProperties; import flash.accessibility.Accessibility; import flash.system.Capabilities; var tf:TextField = new TextField(); tf.text = "hello"; var accessProps:AccessibilityProperties = new AccessibilityProperties(); accessProps.name = "Greeting"; tf.accessibilityProperties = accessProps; if (Capabilities.hasAccessibility) { Accessibility.updateProperties(); } trace(tf.accessibilityProperties.name); // Greeting
flash.accessibility.Accessibility.updateProperties()flash.accessibility.AccessibilityProperties
alpha Указывает значение альфа-прозрачности заданного объекта.Number Указывает значение альфа-прозрачности заданного объекта. Допустимые значения находятся в диапазоне 0 (полностью прозрачный) — 1 (полностью непрозрачный). Значением по умолчанию является 1. Экранные объекты, для которых значение alpha равно 0, являются активными, несмотря на невидимость. Следующий код задает свойству спрайта alpha значение 50%, когда на него наводится мышь. import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFF0000); circle.graphics.drawCircle(40, 40, 40); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject); circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject); function dimObject(event:MouseEvent):void { event.target.alpha = 0.5; } function restoreObject(event:MouseEvent):void { event.target.alpha = 1.0; } blendMode Значение класса BlendMode, задающее режим наложения.String Значение класса BlendMode, задающее режим наложения. Растровое изображение может прорисовываться внутренними средствами двумя способами. Если включен режим наложения или внешняя маска обрезки, растровое изображение рисуется путем добавления квадрата, заполненного растровым изображением, к векторной визуализации. При попытке задать свойству недопустимое значение среда выполнения Flash использует значение BlendMode.NORMAL.

Свойство blendMode влияет на каждый пиксель экранного объекта. Каждый пиксель состоит из трех основных цветов (красного, зеленого и синего) со значениями в пределах 0x00 — 0xFF. Проигрыватель Flash Player или Adobe AIR сравнивает каждый цвет, составляющий один пиксель, во фрагменте ролика с соответствующим цветом пикселя фона. Например, если blendMode имеет значение BlendMode.LIGHTEN, Flash Player или Adobe AIR сравнивает значение красного для экранного объекта со значением красного для фона и использует более светлый из них в качестве красного компонента отображаемого цвета.

В следующей таблице описываются параметры blendMode. Класс BlendMode определяет строковые значения для использования. На иллюстрациях в таблице показаны значения blendMode, примененные к круглому экранному объекту (2) с наложением на другой экранный объект (1).

Константа BlendModeРисунокОписаниеBlendMode.NORMALЭкранный объект отображается перед фоном. Значения пикселей экранного объекта переопределяют значения пикселей фона. В прозрачных областях экранного объекта виден фон.BlendMode.LAYERИнициирует создание группы прозрачности для экранного объекта. Это означает, что перед дальнейшей обработкой экранный объект сначала составляется во временном буфере. Это выполняется автоматически, если экранный объект заранее сохраняется в кэше посредством кэширования растрового изображения или если экранный объект является контейнером экранных объектов, содержащим хотя бы один дочерний объект с параметром blendMode не в значении BlendMode.NORMAL. Не поддерживается при визуализации с использованием графического процессора. BlendMode.MULTIPLYУмножает значения составляющих цветов экранного объекта на значения цветов фона и затем нормализует их путем деления на 0xFF, в результате чего получаются более темные цвета. Этот параметр часто используется для затенения и создания эффекта глубины.

Например, если составляющий цвет (например, красный) одного пикселя в экранном объекте и соответствующий цвет пикселя в фоне имеют значение 0х88, то в результате умножения получается 0х4840. Деление на 0хFF дает значение 0х48 для данного составляющего цвета, принимающего более темный оттенок, чем в экранном объекте и фоне.

BlendMode.SCREENУмножает обратный код цвета экранного объекта на обратный код цвета фона, в результате чего получается эффект осветления. Этот параметр часто используется для высветления или удаления черных областей экранного объекта.BlendMode.LIGHTENВыбирает более светлые из составляющих цветов экранного объекта и цвета фона (цвета с большими значениями). Этот параметр часто используется как тип наложения.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0xFFF833 (так как 0xFF > 0xDD, 0xCC < 0xF8 и 0x33 > 0x00 = 33). Не поддерживается при визуализации с использованием графического процессора.

BlendMode.DARKENВыбирает более темные из составляющих цветов экранного объекта и цветов фона (цвета с меньшими значениями). Этот параметр часто используется как тип наложения.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0xDDCC00 (так как 0xFF > 0xDD, 0xCC < 0xF8 и 0x33 > 0x00 = 33). Не поддерживается при визуализации с использованием графического процессора.

BlendMode.DIFFERENCEСравнивает составляющие цвета экранного объекта с цветами его фона и вычитает более темное значение (из двух составляющих цветов) из более светлого значения. Этот параметр часто используется для получения более живых цветов.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0x222C33 (так как 0xFF - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C и 0x33 - 0x00 = 0x33).

BlendMode.ADDПрибавляет значения составляющих цветов экранного объекта к значениям цветов его фона (с максимальным значением 0xFF). Этот параметр часто используется для анимации растворения света между двумя объектами.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xAAA633, а RGB пиксела фона имеет значение 0xDD2200, то значением RGB отображаемого пиксела является 0xFFC833 (так как 0xAA + 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8 и 0x33 + 0x00 = 0x33).

BlendMode.SUBTRACTВычитает значения составляющих цветов экранного объекта из значений цвета фона (с минимальным значением 0). Этот параметр часто используется для анимации растворения затемнения между двумя объектами.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xAA2233, а RGB пиксела фона имеет значение 0xDDA600, то значением RGB отображаемого пиксела является 0x338400 (так как 0xDD - 0xAA = 0x33, 0xA6 - 0x22 = 0x84 и 0x00 - 0x33 < 0x00).

BlendMode.INVERTИнвертирует фон.BlendMode.ALPHAПрименяет альфа-значение каждого пикселя экранного объекта к фону. Для этого требуется, чтобы параметру blendMode родительского экранного объекта было задано значение BlendMode.LAYER. Например, на иллюстрации для родительского экранного объекта с белым фоном используется настройка blendMode = BlendMode.LAYER. Не поддерживается при визуализации с использованием графического процессора.BlendMode.ERASEСтирает фон на основе альфа-значения экранного объекта. Для этого требуется, чтобы настройке blendMode родительского экранного объекта было задано значение BlendMode.LAYER. Например, на иллюстрации для родительского экранного объекта с белым фоном используется настройка blendMode = BlendMode.LAYER. Не поддерживается при визуализации с использованием графического процессора.BlendMode.OVERLAYИзменяет цвет каждого пикселя в зависимости от того, насколько темный цвет используется для фона. Если фон светлее 50-процентного серого, цвета экранного объекта и фона отфильтровываются, в результате чего получается более светлый цвет. Если фон темнее 50-процентного серого, цвета умножаются, что дает более темный цвет. Этот параметр часто используется для эффектов затенения. Не поддерживается при визуализации с использованием графического процессора.BlendMode.HARDLIGHTИзменяет цвет каждого пикселя в зависимости от того, насколько темный цвет используется для экранного объекта. Если экранный объект светлее 50-процентного серого, цвета экранного объекта и фона отфильтровываются, в результате чего получается более светлый цвет. Если экранный объект темнее 50-процентного серого, цвета умножаются, что дает более темный цвет. Этот параметр часто используется для эффектов затенения. Не поддерживается при визуализации с использованием графического процессора.BlendMode.SHADERнетИзменяет цвета с использованием пользовательской подпрограммы затенения. Используемое затенение задано в качестве экземпляра Shader, присвоенного свойству blendShader. Применение свойства blendShader к экземпляру Shader автоматически приведет к смене значения свойства blendMode на BlendMode.SHADER. Если для свойства blendMode задано BlendMode.SHADER без предварительного задания свойства blendShader, то свойство blendMode примет значение BlendMode.NORMAL. Не поддерживается при визуализации с использованием графического процессора.
Следующий код создает два объекта sprite, квадрат и круг: для круга (в фоне) задается режим наложенияBlendMode.SUBTRACT, когда на него наводится указатель. import flash.display.Sprite; import flash.display.BlendMode; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF88CC); square.graphics.drawRect(0, 0, 80, 80); addChild(square); var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xAA0022); circle.graphics.drawCircle(40, 40, 40); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject); circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject); function dimObject(event:MouseEvent):void { event.target.blendMode = BlendMode.SUBTRACT; } function restoreObject(event:MouseEvent):void { event.target.blendMode = BlendMode.NORMAL; }
flash.display.BlendModeblendShader
cacheAsBitmapMatrix Если задано ненулевое значение, данный объект Matrix определяет способ визуализации экранного объекта, когда свойство cacheAsBitmap имеет значение true.flash.geom:MatrixМатрица преобразования, используемая при визуализации сохраненной в кэше версии растрового изображения данного экранного объекта. Если задано ненулевое значение, данный объект Matrix определяет способ визуализации экранного объекта, когда свойство cacheAsBitmap имеет значение true. Приложение использует эту матрицу как матрицу преобразования, которая применяется при визуализации растровой версии этого экранного объекта.

Поддержка профиля AIR: эта функция поддерживается на мобильных устройствах, но не поддерживается в компьютерных операционных системах. Поддержка также ограничена в среде AIR для телевизионных устройств. В частности, в среде AIR для телевизионных устройств поддерживаемые преобразования включают масштабирование и перенос, но не поворот или наклон. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

Когда задано свойство cacheAsBitmapMatrix, приложение сохраняет кэшированное растровое изображение на протяжении различных двухмерных преобразований, включая перенос, поворот и масштабирование. Если приложение использует аппаратное ускорение, то объект будет храниться в видеопамяти как текстура. Это позволяет графическому процессору применять поддерживаемые преобразования к объекту. Графический процессор может выполнять эти преобразования быстрее, чем ЦП.

Чтобы использовать аппаратное ускорение, во Flash Professional CS5 откройте диалоговое окно «Настройки iPhone», перейдите на вкладку «Общие» и задайте для параметра «Визуализация» значение «Графический процессор». Также можно задать свойству renderMode значение gpu в файле дескриптора приложения. Обратите внимание, что в среде AIR для телевизионных устройств автоматически используется аппаратное ускорение, если оно доступно.

Например, следующий код отправляет непреобразованное растровое представление экранного объекта в графический процессор:

matrix:Matrix = new Matrix(); // creates an identity matrix mySprite.cacheAsBitmapMatrix = matrix; mySprite.cacheAsBitmap = true;

Обычно достаточно использовать матрицу идентичности (new Matrix()). Однако также можно использовать другую матрицу, например уменьшенную, чтобы загрузить в графический процессор другое растровое изображение. В следующем примере применяется матрица cacheAsBitmapMatrix, масштаб которой изменен в 0,5 раза по осям Х и Y. Растровый объект, используемый графическим процессором, имеет меньший размер, однако он корректируется процессором в соответствии со свойством transform.matrix экранного объекта:

matrix:Matrix = new Matrix(); // creates an identity matrix matrix.scale(0.5, 0.5); // scales the matrix mySprite.cacheAsBitmapMatrix = matrix; mySprite.cacheAsBitmap = true;

Как правило, следует использовать такую матрицу, которая преобразует экранный объект до размера, используемого в программе. Например, если в приложении отображается вдвое уменьшенная растровая версия спрайта, следует использовать матрицу, которая в два раза уменьшает масштаб изображения. Если в приложении должен отображаться спрайт, размеры которого превышают текущие, используйте матрицу, которая выполняет масштабирование с требуемым коэффициентом.

Примечание. Свойство cacheAsBitmapMatrix может использоваться для двухмерных преобразований. Если требуется применить преобразования в трехмерном пространстве, для этого нужно установить свойство 3D объекта и задать требуемое значение для его свойства transform.matrix3D. Если приложение упаковано с использованием режима «Графический процессор», это позволяет применять к объекту 3D-преобразования с использованием графического процессора. Свойство cacheAsBitmapMatrix игнорируется для 3D-объектов.

В следующем примере свойство cacheAsBitmapMatrix используется для применения преобразований к растровой версии фрагмента ролика my_shape. import flash.geom.Matrix; import flash.display.*; import flash.utils.Timer; var my_shape:MovieClip = new MovieClip(); my_shape.graphics.beginFill(0xCCFF00); my_shape.graphics.drawRect(200, 0, 100, 100); addChild(my_shape); var my_timer:Timer = new Timer(250); my_timer.start(); my_timer.addEventListener(TimerEvent.TIMER, timerHandler); // make sure this Display Object remains cached for all 2D transforms my_shape.cacheAsBitmap = true; my_shape.cacheAsBitmapMatrix = new Matrix(); // rotation variables const initAngle:Number = 0; const pi:Number = 3.142; const incrAngle:Number = pi/10; // scaling variables const initScale:Number = 0.25; const incrScale: Number = 1.1; var initHeight : Number = my_shape.height; var initWidth : Number = my_shape.width; // translation variables var incrX : Number = root.width / 20; var incrY : Number = root.height / 10; // do some initial transforms var tempMat : Matrix = my_shape.transform.matrix; tempMat.rotate(initAngle); tempMat.scale(initScale, initScale); my_shape.transform.matrix = tempMat; function timerHandler(evt:TimerEvent):void { tempMat = my_shape.transform.matrix; tempMat.rotate(incrAngle); tempMat.translate(incrX, incrY); tempMat.scale(incrScale, incrScale); my_shape.transform.matrix = tempMat; // ensure we are still in a reasonable state or reset if(my_shape.height > stage.stageHeight/2) { my_shape.height = initHeight; } if(my_shape.width > stage.stageWidth/2) { my_shape.width = initWidth; } if(my_shape.x > stage.stageWidth) { my_shape.x = 0; } else if (my_shape.x < 0) { my_shape.x = stage.stageWidth; } if(my_shape.y > stage.stageHeight) { my_shape.y = 0; } else if (my_shape.y < 0) { my_shape.y = stage.stageHeight; } }
cacheAsBitmapflash.geom.Matrix3D
cacheAsBitmap При значении true среда выполнения Flash кэширует внутреннее растровое представление экранного объекта.BooleanЗадает необходимость кэширования этого объекта DisplayObject в виде растрового изображения. При значении true среда выполнения Flash кэширует внутреннее растровое представление экранного объекта. Такое кэширование может повысить производительность для экранных объектов со сложным векторным содержимым.

Все векторные данные для экранного объекта, имеющего кэшированный растр, вырисовываются в растровом изображении, а не в основной области отображения. Если cacheAsBitmapMatrix имеет значение null или не поддерживается, растровое изображение копируется на основной экран в виде нерастянутых и неповернутых пикселов, привязанных к границам ближайших пикселов. Пиксели отображаются в точном соответствии с родительским объектом. При изменении границ растрового изображения оно не растягивается, а создается повторно.

Если свойство cacheAsBitmapMatrix поддерживается и имеет ненулевое значение, объект отрисовывается на растровом изображении вне экрана с использованием этой матрицы, и результат его визуализации с растяжением и/или поворотом используется для отрисовки объекта на главном экране.

Внутреннее растровое представление создается, только если свойство cacheAsBitmap имеет значение true.

После задания свойству cacheAsBitmap значения true визуализация остается без изменений, однако экранный объект автоматически выполняет привязку к пикселям. Скорость анимации может значительно увеличиться в зависимости от сложности векторного содержимого.

Свойство cacheAsBitmap автоматически получает значение true каждый раз, когда к экранному объекту применяется фильтр (при непустом массиве filter). Если к экранному объекту применяется фильтр, его свойство cacheAsBitmap отражается в значении true, даже если ему было задано значение false. Если удалить все фильтры экранного объекта, параметр cacheAsBitmap вернется к последнему заданному значению.

В следующих случаях экранный объект не использует растровое изображение, даже если свойство cacheAsBitmap имеет значение true, а вместо этого визуализирует векторные данные:

  • Растровое изображение слишком большое. В AIR 1.5 и Flash Player 10 максимальный размер растрового изображения составляет 8,191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16,777,215. (Т.е. если ширина растрового изображения составляет 8,191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину.
  • Не удается выделить память для растрового изображения (с выдачей ошибки нехватки памяти).

Свойство cacheAsBitmap лучше всего использовать для фрагментов роликов, в которых преобладает статичное содержимое и редко используется масштабирование и поворот. Использование в таких фрагментах роликов свойства cacheAsBitmap может повысить производительность при преобразовании фрагмента ролика (при изменении координат x и y).

В следующем примере к экземпляру Shape применяется тень. Затем отслеживается значение свойства cacheAsBitmap, которое получает значение true при применении фильтра. import flash.display.Sprite; import flash.filters.DropShadowFilter var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xAA0022); circle.graphics.drawCircle(40, 40, 40); addChild(circle); trace(circle.cacheAsBitmap); // false var filter:DropShadowFilter = new DropShadowFilter(); circle.filters = [filter]; trace(circle.cacheAsBitmap); // true
cacheAsBitmapMatrixopaqueBackground
filters Индексированный массив, который содержит все объекты filter, связанные в настоящий момент с экранным объектом.ArrayЕсли в filters входит ShaderFilter, и тип выхода затенения не совместим с данной операцией (затенение должно задать выход pixel4). ArgumentErrorArgumentErrorЕсли в filters входит ShaderFilter и затенение не задает ни одного входного изображения или если первичный вход не является входом image4. ArgumentErrorArgumentErrorЕсли в filters входит ShaderFilter, и затенение задает неподдерживаемое входное изображение. ArgumentErrorArgumentErrorЕсли в filters входит экземпляр ShaderFilter, ByteArray или Vector.<Number> в качестве ввода затенения, а свойства width и height для ShaderInput не указаны, или их значения не соответствуют входным данным. Дополнительные сведения см. в описании ShaderInput.input. ArgumentErrorArgumentError Индексированный массив, который содержит все объекты filter, связанные в настоящий момент с экранным объектом. Пакет flash.filters содержит несколько классов, определяющих конкретные фильтры, доступные для использования.

Фильтры можно применять в ходе работы в инструменте разработки Flash Professional или во время выполнения с использованием кода ActionScript. Чтобы применить фильтр с помощью ActionScript, необходимо создать временную копию всего массива filters, внести в нее необходимые изменения, а затем присвоить полученное значение исходному массиву filters. Нельзя добавлять новый объект filter напрямую в массив filters.

Чтобы добавить фильтр с помощью ActionScript, выполните следующие действия (предположим, что целевой экранный объект называется myDisplayObject).

  1. Создайте новый объект filter с помощью метода конструктора выбранного класса фильтра.
  2. Присвойте значение массива myDisplayObject.filters временному массиву, например, массиву с именем myFilters.
  3. Добавьте новый объект filter во временный массив myFilters.
  4. Присвойте значение временного массива массивуmyDisplayObject.filters.

Если массив filters не определен, то временный массив использовать не требуется. Вместо этого можно напрямую присвоить литерал массива, содержащий один или несколько созданных вами объектов filter. В первом примере раздела «Примеры» добавляется фильтр «Тень» с помощью кода, обрабатывающего определенный и неопределенный массивы filters.

Чтобы изменить существующий объект filter, необходимо использовать прием изменения копии массива filters.

  1. Присвойте значение массива filters временному массиву, например, массиву с именем myFilters.
  2. Модифицируйте свойство с помощью временного массива с именем myFilters. Например, чтобы настроить свойство quality первого фильтра массива, можно использовать следующий код: myFilters[0].quality = 1;
  3. Присвойте значение временного массива массивуfilters.

Если экранный объект имеет соответствующий фильтр, то во время загрузки он помечается для кэширования в виде прозрачного растрового изображения. С этого момента проигрыватель кэширует экранный объект в виде растрового изображения, если этот объект имеет действительный список фильтров. Исходное растровое изображение используется в качестве источника для эффектов фильтра. Каждый экранный объект, как правило, имеет два растровых изображения: одно с исходным нефильтрованным экранным объектом, а другой для конечного изображения, полученного после фильтрации. Конечное изображение используется при визуализации. Если экранный объект не изменяется, конечное изображение не обновляется.

Пакет flash.filters включает классы фильтров. Например, чтобы создать фильтр DropShadow, необходимо использовать код:

import flash.filters.DropShadowFilter var myFilter:DropShadowFilter = new DropShadowFilter (distance, angle, color, alpha, blurX, blurY, quality, inner, knockout)

Можно использовать оператор is, чтобы определить тип фильтра, присвоенного для каждой позиции индекса в массиве filter. На примере следующего кода показывается, как определить положение первого фильтра в массиве filters — DropShadowFilter.

import flash.text.TextField; import flash.filters.~~; var tf:TextField = new TextField(); var filter1:DropShadowFilter = new DropShadowFilter(); var filter2:GradientGlowFilter = new GradientGlowFilter(); tf.filters = [filter1, filter2]; tf.text = "DropShadow index: " + filterPosition(tf, DropShadowFilter).toString(); // 0 addChild(tf) function filterPosition(displayObject:DisplayObject, filterClass:Class):int { for (var i:uint = 0; i < displayObject.filters.length; i++) { if (displayObject.filters[i] is filterClass) { return i; } } return -1; }

Примечание. Так как нельзя добавить новый объект filter напрямую в массив DisplayObject.filters, следующий код не окажет действия на целевой экранный объект с именемmyDisplayObject.

myDisplayObject.filters.push(myDropShadow);
пакет flash.filtersflash.display.ShaderInput.input
height Указывает высоту экранного объекта в пикселях.Number Указывает высоту экранного объекта в пикселях. Высота вычисляется на основе границ содержимого экранного объекта. Когда задается свойство height, соответствующим образом изменяется и свойство scaleY, как показано в следующем коде. var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleY) // 1; rect.height = 200; trace(rect.scaleY) // 2;

За исключением объектов TextField и Video, экранные объекты без содержимого (например, пустой спрайт), имеют высоту 0, даже если задать свойству height другое значение.

Следующий код создает два объекта TextField и изменяет свойство height каждого из них на основе их свойства textHeight; также путем задания свойства y определяется положение второго текстового поля. import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.wordWrap = true; tf1.width = 40; tf1.height = tf1.textHeight + 5; addChild(tf1); var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.wordWrap = true; tf2.width = 40; tf2.height = tf2.textHeight + 5; tf2.y = tf1.y + tf1.height + 5; addChild(tf2);
loaderInfo Возвращает объект LoaderInfo, содержащий сведения о загрузке файла, к которому принадлежит этот экранный объект.flash.display:LoaderInfo Возвращает объект LoaderInfo, содержащий сведения о загрузке файла, к которому принадлежит этот экранный объект. Свойство loaderInfo определяется только для корневого экранного объекта SWF-файла или для загруженного объекта Bitmap (а не нарисованного с помощью ActionScript). Чтобы найти объект loaderInfo, связанный с SWF-файлом, содержащим экранный объект с именем myDisplayObject, используйте myDisplayObject.root.loaderInfo.

Загрузку большого SWF-файла можно отслеживать с помощью метода this.root.loaderInfo.addEventListener(Event.COMPLETE, func).

Следующий код предполагает, что this относится к экранному объекту. Код выдает URL корневого SWF-файла для экранного объекта. trace (this.loaderInfo.url);
Класс LoaderInfo
mask Вызывающий экранный объект маскируется заданным объектом mask.flash.display:DisplayObjectЗадает маску для экранного объекта. Вызывающий экранный объект маскируется заданным объектом mask. Чтобы обеспечить маскирование при масштабировании рабочей области, экранный объект mask должен быть активным элементом списка отображения. Сам объект mask не отображается. Чтобы удалить маску, нужно задать для mask значение null.

Чтобы обеспечить масштабирование объекта mask, его необходимо добавить в список отображения. Чтобы обеспечить возможность перетаскивания маскирующего объекта Sprite (вызовом методаstartDrag()), его необходимо добавить в список отображения. Чтобы вызвать метод startDrag() для маскирующего спрайта при отправке им события mouseDown, задайте свойству спрайта buttonMode свойство true.

Когда экранные объекты кэшируются путем установки для свойства cacheAsBitmap значения true, а для свойства cacheAsBitmapMatrix — объекта «Matrix», и маска и отображаемый объект, на который накладывается маска, должны быть частью одного помещенного в кэш растрового изображения. Таким образом, если в кэш помещается отображаемый объект, маска должна быть дочерним элементом этого объекта. Если в кэш помещается предок объекта из списка отображения, маска должна быть дочерним элементом этого предка или одного из его потомков. Если в кэш помещается несколько предков объекта с наложенной маской, эта маска должна быть потомком кэшированного контейнера, самого близкого к объекту в списке отображения.

Примечание. Один объект mask не может использоваться для маскирования нескольких вызывающих экранных объектов. Когда mask назначается второму экранному объекту, он перестает быть маской первого, для которого свойство mask получает значение null.

Следующий код создает объект TextField и объект Sprite, назначенный в качестве маски объекту TextField. Когда пользователь щелкает текстовое поле, прослушиватель событий drag() вызывает метод startDrag() маскирующего объекта Sprite. import flash.text.TextField; import flash.display.Sprite; import flash.events.MouseEvent; var tf:TextField = new TextField(); tf.text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " tf.selectable = false; tf.wordWrap = true; tf.width = 150; addChild(tf); var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 40, 40); addChild(square); tf.mask = square; tf.addEventListener(MouseEvent.MOUSE_DOWN, drag); tf.addEventListener(MouseEvent.MOUSE_UP, noDrag); function drag(event:MouseEvent):void { square.startDrag(); } function noDrag(event:MouseEvent):void { square.stopDrag(); }
mouseX Указывает координату x мыши или курсора пользовательского ввода (в пикселах).Number Указывает координату x мыши или курсора пользовательского ввода (в пикселах).

Примечание. Для повернутого объекта DisplayObject возвращенная координата x будет характеризовать объект, поворот которого не выполнен.

Следующий код создает объект Sprite и отслеживает положения mouseX и mouseY, когда пользователь щелкает спрайт. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 200, 200); addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates); function traceCoordinates(event:MouseEvent):void { trace(square.mouseX, square.mouseY); }
mouseY Указывает координату y мыши или курсора пользовательского ввода (в пикселах).Number Указывает координату y мыши или курсора пользовательского ввода (в пикселах).

Примечание. Для повернутого объекта DisplayObject возвращенная координата y будет характеризовать объект, поворот которого не выполнен.

Следующий код создает объект Sprite и отслеживает положения mouseX и mouseY, когда пользователь щелкает спрайт. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 200, 200); addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates); function traceCoordinates(event:MouseEvent):void { trace(square.mouseX, square.mouseY); }
name Указывает имя экземпляра DisplayObject.StringПри попытке задать это свойство для объекта, помещенного на временную шкалу инструмента разработки Flash. IllegalOperationErrorflash.errors:IllegalOperationErrorИмя этого объекта DisplayObject. Указывает имя экземпляра DisplayObject. Объект можно найти в списке дочерних объектов родительского контейнера экранных объектов путем вызова метода getChildByName() контейнера. Следующий код создает два объекта Sprite и отслеживает соответствующее свойство name, когда пользователь щелкает один из них. import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFF0000); circle1.graphics.drawCircle(40, 40, 40); circle1.name = "circle1"; addChild(circle1); circle1.addEventListener(MouseEvent.CLICK, traceName); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x0000FF); circle2.graphics.drawCircle(140, 40, 40); circle2.name = "circle2"; addChild(circle2); circle2.addEventListener(MouseEvent.CLICK, traceName); function traceName(event:MouseEvent):void { trace(event.target.name); } opaqueBackground Определяет, является ли экранный объект непрозрачным с определенным цветом фона.Object Определяет, является ли экранный объект непрозрачным с определенным цветом фона. Прозрачное растровое изображение содержит данные альфа-канала и рисуется прозрачным. Непрозрачное растровое изображение не имеет альфа-канала (и визуализируется быстрее, чем прозрачное изображение). Если растровое изображение непрозрачное, требуется задать для него собственный цвет фона.

Если задать численное значение, поверхность будет непрозрачной, а RGB-цвет фона будет соответствовать заданному числу. Если оставить значение по умолчанию null, у экранного объекта будет прозрачный фон.

Свойство opaqueBackground предназначено, главным образом, для использования вместе со свойством cacheAsBitmap с целью оптимизации визуализации. Для экранных объектов со свойством cacheAsBitmap в значении true настройка свойства opaqueBackground может повысить производительность.

Непрозрачная область фона не сопоставляется при вызове метода hitTestPoint() с параметром shapeFlag в значении true.

Непрозрачная область фона не реагирует на события мыши.

Следующий код создает объект Shape с синим кругом и задает свойству opaqueBackground значение 0xFF0000 (красный). import flash.display.Shape; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.opaqueBackground = 0xFF0000; addChild(circle);
cacheAsBitmaphitTestPoint()
parent Указывает объект DisplayObjectContainer, содержащий данный экранный объект.flash.display:DisplayObjectContainerДанный родительский экранный объект принадлежит изолированной программной среде, к которой нет доступа. Чтобы избежать такой ситуации, родительский ролик должен вызвать метод Security.allowDomain(). SecurityErrorSecurityError Указывает объект DisplayObjectContainer, содержащий данный экранный объект. Используйте свойство parent, чтобы задать относительный путь к экранным объектам, находящимся на более высоких уровнях иерархии списка отображения, чем текущий объект.

Свойство parent можно использовать для перемещения объекта вверх на несколько уровней в списке отображения, как показано ниже.

this.parent.parent.alpha = 20;
Следующий код создает три объекта Sprite; на его примере видно, как свойство parent отражает иерархию списка отображения. import flash.display.Sprite; var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; var sprite3:Sprite = new Sprite(); sprite3.name = "sprite3"; sprite1.addChild(sprite2); sprite2.addChild(sprite3); trace(sprite2.parent.name); // sprite1 trace(sprite3.parent.name); // sprite2 trace(sprite3.parent.parent.name); // sprite1
root В случае с экранным объектом в загруженном SWF-файле свойством root является самый верхний экранный объект в части структуры дерева списка отображения, представленной этим SWF-файлом.flash.display:DisplayObjectВозвращает корневой экранный объект для данного объекта. В случае с экранным объектом в загруженном SWF-файле свойством root является самый верхний экранный объект в части структуры дерева списка отображения, представленной этим SWF-файлом. Для объекта Bitmap, представляющего файл загруженного изображения, свойством root является сам объект Bitmap. Для экземпляра основного класса первого загруженного SWF-файла свойством root является сам экранный объект. Свойством root объекта Stage является сам объект Stage. Свойство root имеет значение null для экранных объектов, не добавленных в список отображения, если они не добавлены в контейнер экранных объектов, не включенный в список отображения, но являющийся дочерним элементом экранного объекта верхнего уровня в загруженном SWF-файле.

Например, если создается новый объект Sprite путем вызова метода конструктора Sprite(), его свойство root имеет значение null до тех пор, пока он не будет добавлен в список отображения (или в контейнер экранных объектов, не включенный в список отображения, но являющийся дочерним объектом экранного объекта верхнего уровня в SWF-файле).

Для загруженного SWF-файла, несмотря на то, что объект Loader, использованный для загрузки, может не входить в список отображения, свойством root экранного объекта верхнего уровня этого файла является сам объект. Свойство root объекта Loader не задается, пока он не будет добавлен в качестве дочернего объекта экранного объекта, для которого уже задано свойство root.

На примере следующего кода показано различие между свойствами root объекта Stage, незагруженного экранного объекта (Loader) (до и после добавления в список отображения) и загруженного объекта (Bitmap). import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; trace(stage.root); // [object Stage] var ldr:Loader = new Loader(); trace (ldr.root); // null addChild(ldr); trace (ldr.root); // [object ...] var urlReq:URLRequest = new URLRequest("example.jpg"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { trace(ldr.content.root); // [object Bitmap] }
rotationX Обозначает поворот в градусах по оси x экземпляра DisplayObject относительно исходной ориентации по трехмерному вышестоящему контейнеру.Number Обозначает поворот в градусах по оси x экземпляра DisplayObject относительно исходной ориентации по трехмерному вышестоящему контейнеру. Значения от 0 до 180 задают поворот по часовой стрелке. Значения от 0 до -180 задают поворот против часовой стрелки. Значения за пределами этого диапазона, добавляются или вычитаются из 360 для получения допустимого значения. В данном примере два эллипса вращаются в соответствии со значениями свойств rotationX и rotationY. Точка регистрации первого эллипса находится в центре. Он вращается вокруг своей оси. Второй эллипс вращается вокруг внешней точки. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.display.Graphics; import flash.events.TimerEvent; import flash.utils.Timer; public class RotationExample1 extends MovieClip { private var ellipse:Shape = new Shape(); private var speed:int = 10; private var ellipse1:Shape; private var ellipse2:Shape; public function RotationExample1():void { ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); this.addChild(ellipse1); this.addChild(ellipse2); var t:Timer = new Timer(50); t.addEventListener(TimerEvent.TIMER, timerHandler); t.start(); } private function drawEllipse(x1, y1, x2, y2):Shape { var e:Shape = new Shape(); e.graphics.beginFill(0xFF0000); e.graphics.lineStyle(2); e.graphics.drawEllipse(x1, y1, 100, 80); e.graphics.endFill(); e.x = x2; e.y = y2; e.z = 1; return e; } private function timerHandler(event:TimerEvent):void { ellipse1.rotationY += speed; ellipse1.rotationX -= speed; ellipse2.rotationY += speed; ellipse2.rotationX -= speed; } } } В следующем примере показано, как с помощью Flash Professional, ActionScript 3.0 и Flash Player 10 выполнить 3D-поворот объекта Sprite вокруг его оси X, задав свойство rotationX объекта. Пример предоставлен ActionScriptExamples.com. //Requires: // - Slider control UI component in Flash library. // - Publish for Flash Player 10. // [SWF(width="400", height="300")] import fl.controls.Slider; import fl.controls.SliderDirection; import fl.events.SliderEvent; var slider:Slider = new Slider(); slider.direction = SliderDirection.HORIZONTAL; slider.minimum = 0; slider.maximum = 360; slider.value = 45; slider.tickInterval = 45; slider.snapInterval = 1; slider.liveDragging = true; slider.addEventListener(SliderEvent.CHANGE, slider_change); slider.move(10, 10); addChild(slider); var spr:Sprite = new Sprite(); spr.graphics.lineStyle(2, 0xFF0000); spr.graphics.drawRect(0, 0, 100, 80); spr.x = Math.round((stage.stageWidth - spr.width)/2); spr.y = Math.round((stage.stageHeight - spr.height)/2); spr.rotationX = 45; addChild(spr); function slider_change(evt:SliderEvent):void { spr.rotationX = evt.value; } rotationY Обозначает угол поворота в градусах по оси у экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру.Number Обозначает угол поворота в градусах по оси у экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру. Значения от 0 до 180 задают поворот по часовой стрелке. Значения от 0 до -180 задают поворот против часовой стрелки. Значения за пределами этого диапазона, добавляются или вычитаются из 360 для получения допустимого значения. В данном примере два эллипса вращаются в соответствии со значениями свойств rotationX и rotationY. Точка регистрации первого эллипса находится в центре. Он вращается вокруг своей оси. Второй эллипс вращается вокруг внешней точки. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.display.Graphics; import flash.events.TimerEvent; import flash.utils.Timer; public class RotationExample1 extends MovieClip { private var ellipse:Shape = new Shape(); private var speed:int = 10; private var ellipse1:Shape; private var ellipse2:Shape; public function RotationExample1():void { ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); this.addChild(ellipse1); this.addChild(ellipse2); var t:Timer = new Timer(50); t.addEventListener(TimerEvent.TIMER, timerHandler); t.start(); } private function drawEllipse(x1, y1, x2, y2):Shape { var e:Shape = new Shape(); e.graphics.beginFill(0xFF0000); e.graphics.lineStyle(2); e.graphics.drawEllipse(x1, y1, 100, 80); e.graphics.endFill(); e.x = x2; e.y = y2; e.z = 1; return e; } private function timerHandler(event:TimerEvent):void { ellipse1.rotationY += speed; ellipse1.rotationX -= speed; ellipse2.rotationY += speed; ellipse2.rotationX -= speed; } } } rotationZ Обозначает поворот в градусах по оси z экземпляра DisplayObject от исходной ориентации относительно трехмерного родительского контейнера.Number Обозначает угол поворота в градусах по оси z экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру. Значения от 0 до 180 задают поворот по часовой стрелке. Значения от 0 до -180 задают поворот против часовой стрелки. Значения за пределами этого диапазона, добавляются или вычитаются из 360 для получения допустимого значения. rotation Указывает поворот экземпляра DisplayObject относительно его исходной ориентации (в градусах).Number Указывает поворот экземпляра DisplayObject относительно его исходной ориентации (в градусах). Значения от 0 до 180 задают поворот по часовой стрелке. Значения от 0 до -180 задают поворот против часовой стрелки. Значения за пределами этого диапазона добавляются или вычитаются из 360 для получения допустимого значения. Например, инструкция my_video.rotation = 450 равносильна my_video.rotation = 90. В следующем примере создается объект Sprite, который поворачивается при щелчке пользователя. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(-50, -50, 100, 100); square.x = 150; square.y = 150; addChild(square); square.addEventListener(MouseEvent.CLICK, rotate); function rotate(event:MouseEvent):void { square.rotation += 15; } scale9Grid Текущая активная сетка масштабирования.flash.geom:RectangleЕсли методу передается недопустимый аргумент. ArgumentErrorArgumentError Текущая активная сетка масштабирования. Если установлено значение null, весь объект отображения масштабируется в обычном порядке при применении любых преобразований масштаба.

При определении свойства scale9Grid экранный объект разбивается на сетку с девятью областями на основе прямоугольника scale9Grid, определяющего центральную область сетки. Восемь остальных областей сетки:

  • Верхний левый угол за пределами прямоугольника
  • Область над прямоугольником
  • Верхний правый угол за пределами прямоугольника
  • Область слева от прямоугольника
  • Область справа от прямоугольника
  • Нижний левый угол за пределами прямоугольника
  • Область под прямоугольником
  • Нижний правый угол за пределами прямоугольника

Восемь областей за пределами центра (ограниченного прямоугольником) можно рассматривать как рамку изображения, к которому при масштабировании применяются особые правила.

При масштабировании объекта отображения с определенным свойством scale9Grid текст и градиенты масштабируются в обычном порядке, однако к остальным типам объектов применяются следующие правила.

  • Содержимое центральной области масштабируется как обычно.
  • Содержимое в углах не масштабируется.
  • Содержимое в верхней и нижней областях масштабируется только по горизонтали. Содержимое в правой и левой областях масштабируется только по вертикали.
  • Все заливки (включая растровые изображения, видео и градиенты) растягиваются в соответствии с новыми размерами.

При повороте экранного объекта последующее масштабирование выполняется в обычном режиме (и свойство scale9Grid игнорируется).

В качестве примера рассмотрим следующий экранный объект и прямоугольник, применяемый в качестве его свойства scale9Grid

Экранный объект.

Красный прямоугольник показывает scale9Grid.

При масштабировании или растягивании экранного объекта объекты в пределах прямоугольника масштабируются в обычном порядке, а объекты за его пределами масштабируются согласно правилам scale9Grid.

Масштабируется до 75%Масштабируется до 50%Масштабируется до 25%Вытягивается по горизонтали до 150%

Как правило, параметрscale9Grid используется для установки экранного объекта в качестве компонента, области краев которого сохраняют ширину при масштабировании компонента.

Следующий код создает объект Shape, в свойстве graphics которого отображается прямоугольник. Прямоугольник имеет границу шириной 20 пикселей и заполнен градиентом. Событие timer вызывает функцию scale(), которая масштабирует объект Shape путем корректировки свойств scaleX и scaleY. Применение scale9Grid к объекту Shape предотвращает масштабирование линий границ прямоугольника; масштабируется только заливка градиентом. import flash.display.Shape; import flash.display.GradientType; import flash.display.SpreadMethod; import flash.display.InterpolationMethod; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.utils.Timer; import flash.events.TimerEvent; var square:Shape = new Shape(); square.graphics.lineStyle(20, 0xFFCC00); var gradientMatrix:Matrix = new Matrix(); gradientMatrix.createGradientBox(15, 15, Math.PI, 10, 10); square.graphics.beginGradientFill(GradientType.RADIAL, [0xffff00, 0x0000ff], [100, 100], [0, 0xFF], gradientMatrix, SpreadMethod.REFLECT, InterpolationMethod.RGB, 0.9); square.graphics.drawRect(0, 0, 100, 100); var grid:Rectangle = new Rectangle(20, 20, 60, 60); square.scale9Grid = grid ; addChild(square); var tim:Timer = new Timer(100); tim.start(); tim.addEventListener(TimerEvent.TIMER, scale); var scaleFactor:Number = 1.01; function scale(event:TimerEvent):void { square.scaleX *= scaleFactor; square.scaleY *= scaleFactor; if (square.scaleX > 2.0) { scaleFactor = 0.99; } if (square.scaleX < 1.0) { scaleFactor = 1.01; } }
flash.geom.Rectangle
scaleX Указывает горизонтальное масштабирование объекта от точки регистрации (в процентах).Number Указывает горизонтальное масштабирование объекта от точки регистрации (в процентах). Точка регистрации по умолчанию — (0,0). 1,0 соответствует масштабу 100%.

Масштабирование локальной системы координат изменяет значения свойств x и y, определяемые в целых пикселях.

Следующий код создает объект Sprite, в свойстве graphics которого отображается прямоугольник. При щелчке пользователя спрайт масштабируется на 10%. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, scale); function scale(event:MouseEvent):void { square.scaleX *= 1.10; square.scaleY *= 1.10; }
scaleY Указывает вертикальное масштабирование объекта от точки регистрации (в процентах).Number Указывает вертикальное масштабирование объекта от точки регистрации (в процентах). Точка регистрации по умолчанию — (0,0). 1,0 соответствует масштабу 100%.

Масштабирование локальной системы координат изменяет значения свойств x и y, определяемые в целых пикселях.

Следующий код создает объект Sprite, в свойстве graphics которого отображается прямоугольник. При щелчке пользователя спрайт масштабируется на 10%. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, scale); function scale(event:MouseEvent):void { square.scaleX *= 1.10; square.scaleY *= 1.10; }
scaleZ Указывает глубину масштабирования объекта (в процентах) относительно точки регистрации этого объекта.Number Указывает глубину масштабирования объекта (в процентах) относительно точки регистрации этого объекта. Точка регистрации по умолчанию — (0,0). 1,0 соответствует масштабу 100%.

Масштабирование локальной системы координат изменяет значения свойств x, y и z, определяемые в целых пикселях.

z
scrollRect Прямоугольная область прокрутки экранного объекта.flash.geom:Rectangle Прямоугольная область прокрутки экранного объекта. Экранный объект обрезается до размера, определенного прямоугольником, и прокручивается в его границах при изменении свойств x и y объекта scrollRect.

Свойства объекта scrollRect объекта Rectangle используют координатную плоскость экранного объекта и масштабируются просто как общий экранный объект. Углы обрезанного окна на экранном объекте прокрутки являются исходной точкой экранного объекта (0,0) и точкой, определенной шириной и высотой прямоугольника. Они не центрируются по исходной точке, а используют ее для определения верхнего левого угла области. Прокручиваемый экранный объект всегда прокручивается прибавлениями по целым пикселям.

Можно прокручивать объект влево и вправо, настроив свойство x для scrollRect объекта Rectangle. Чтобы прокручивать объект вверх и вниз, нужно настроить свойство y для scrollRect объекта Rectangle. Если экранный объект, повернутый на 90°, прокручивается влево и вправо, на самом деле экранный объект прокручивается вверх и вниз.

Далее показан пример того, как свойство scrollRect задает область прокрутки экранного объекта circle. При щелчке по объекту circle метод обработчика событий clicked() корректирует свойство y свойства scrollRect объекта circle, в результате чего осуществляется прокрутка вниз. import flash.display.Sprite; import flash.geom.Rectangle; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(200, 200, 200); circle.scrollRect = new Rectangle(0, 0, 200, 200); addChild(circle); circle.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { var rect:Rectangle = event.target.scrollRect; rect.y -= 5; event.target.scrollRect = rect; }
flash.geom.Rectangle
stage Класс Stage экранного объекта.flash.display:Stage Класс Stage экранного объекта. Программа среды выполнения Flash имеет только один объект Stage. Например, можно создать и загрузить в список отображения несколько экранных объектов, и для каждого из них свойство stage будет ссылаться на один и тот же объект Stage (даже если экранный объект принадлежит загруженному SWF-файлу).

Если экранный объект не добавлен в список отображения, его свойство stage имеет значение null.

Следующий код создает два объекта TextField и использует свойство width объекта Stage для размещения текстовых полей. import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.x = 10; addChild(tf1); tf1.width = tf1.stage.stageWidth / 2 - 10; var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.x = tf1.x + tf1.width + 5; addChild(tf2); tf2.width = tf2.stage.stageWidth / 2 - 10; trace(stage.stageWidth);
transform Объект со свойствами, относящимися к матрице, преобразованию цвета и пиксельным границам экранного объекта.flash.geom:Transform Объект со свойствами, относящимися к матрице, преобразованию цвета и пиксельным границам экранного объекта. Конкретные свойства (matrix, colorTransform и три свойства только для чтения (concatenatedMatrix, concatenatedColorTransform и pixelBounds)) описываются в разделе, посвященном классу Transform.

Каждое из свойств объекта transform представляет собой объект. Это очень важно, так как единственным способом задать новые значения для объектов matrix или colorTransform является создание нового объекта и его копирование в свойство transform.matrix или transform.colorTransform.

Например, чтобы увеличить значение tx матрицы экранного объекта, необходимо скопировать весь объект matrix, а затем копировать новый объект в свойство matrix объекта transform.


    var myMatrix:Matrix = myDisplayObject.transform.matrix;  
    myMatrix.tx += 10; 
    myDisplayObject.transform.matrix = myMatrix;  
    

Свойство tx нельзя задавать напрямую. Следующий код не действует на myDisplayObject.


    myDisplayObject.transform.matrix.tx += 10;
    

Также можно копировать весь объект transform и назначить его свойству transform другого экранного объекта. Например, следующий код копирует весь объект transform из myOldDisplayObj в myNewDisplayObj.

myNewDisplayObj.transform = myOldDisplayObj.transform;

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

Обратите внимание, что в среде AIR для телевизионных устройств используется аппаратное ускорение, если оно доступно, для преобразований цветов.

Следующий код создает объект Sprite с именем square. Когда пользователь щелкает спрайт, метод transformer() корректирует свойства colorTransform и matrix свойства transform для спрайта. import flash.display.Sprite; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Transform; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.lineStyle(20, 0xFF2200); square.graphics.beginFill(0x0000DD); square.graphics.drawRect(0, 0, 100, 100); addChild(square); var resultColorTransform:ColorTransform = new ColorTransform(); resultColorTransform.alphaMultiplier = 0.5; resultColorTransform.redOffset = 155; resultColorTransform.greenMultiplier = 0.5; var skewMatrix:Matrix = new Matrix(1, 1, 0, 1); square.addEventListener(MouseEvent.CLICK, transformer); function transformer(event:MouseEvent):void { var transformation:Transform = square.transform; var tempMatrix:Matrix = square.transform.matrix; tempMatrix.concat(skewMatrix); square.transform.colorTransform = resultColorTransform; square.transform.matrix = tempMatrix; }
Класс Transform
visible Определяет видимость экранного объекта.Boolean Определяет видимость экранного объекта. Невидимые экранные объекты отключаются. Например, если visible=false для экземпляра InteractiveObject, то он не реагирует на щелчки мыши. В следующем коде используется объект Timer для вызова функции visible, которая периодически изменяет свойство экранного объекта, в результате чего создается эффект мигания. import flash.text.TextField; import flash.utils.Timer; import flash.events.TimerEvent; var tf:TextField = new TextField(); tf.text = "Hello."; addChild(tf); var tim:Timer = new Timer(250); tim.start(); tim.addEventListener(TimerEvent.TIMER, blinker); function blinker(event:TimerEvent):void { tf.visible = !tf.visible; } width Указывает ширину экранного объекта в пикселях.Number Указывает ширину экранного объекта в пикселях. Ширина вычисляется на основе границ содержимого экранного объекта. Когда задается свойство width, соответствующим образом изменяется и свойство scaleX, как показано в следующем коде. var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleX) // 1; rect.width = 200; trace(rect.scaleX) // 2;

За исключением объектов TextField и Video, экранные объекты без содержимого (например, пустой спрайт), имеют ширину 0, даже если задать свойству width другое значение.

Следующий код создает объект Sprite с именем square. Когда пользователь щелкает спрайт, метод widen() увеличивает значение его свойства width. import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, widen); function widen(event:MouseEvent):void { square.width += 10; }
x Указывает координату x экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer.Number Указывает координату x экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer. Если объект включен в DisplayObjectContainer с преобразованиями, то он находится в локальной системе координат содержащего его DisplayObjectContainer. Таким образом, если объект DisplayObjectContainer повернут на 90° против часовой стрелки, дочерние элементы наследуют систему координат с поворотом на 90° против часовой стрелки. Координаты объекта определяются относительно положения точки регистрации. Следующий код создает объект Sprite с именем circle. Объект Timer используется для изменения свойства x спрайта через каждые 50 миллисекунд. import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFF0000); circle.graphics.drawCircle(100, 100, 100); addChild(circle); var tim:Timer = new Timer(50); tim.start(); tim.addEventListener(TimerEvent.TIMER, bounce); var xInc:Number = 2; function bounce(event:TimerEvent):void { circle.x += xInc; if (circle.x > circle.width) { xInc = -2; } if (circle.x < 0) { xInc = 2; } } y Указывает координату y экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer.Number Указывает координату y экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer. Если объект включен в DisplayObjectContainer с преобразованиями, то он находится в локальной системе координат содержащего его DisplayObjectContainer. Таким образом, если объект DisplayObjectContainer повернут на 90° против часовой стрелки, дочерние элементы наследуют систему координат с поворотом на 90° против часовой стрелки. Координаты объекта определяются относительно положения точки регистрации. Следующий код создает два объекта TextField и изменяет свойство height каждого из них на основе их свойства textHeight; также путем задания свойства y определяется положение второго текстового поля. import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.wordWrap = true; tf1.width = 40; tf1.height = tf1.textHeight + 5; addChild(tf1); var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.wordWrap = true; tf2.width = 40; tf2.height = tf2.textHeight + 5; tf2.y = tf1.y + tf1.height + 5; addChild(tf2); z Указывает положение по оси z экземпляра DisplayObject относительно трехмерного родительского контейнера.Number Указывает положение по оси z экземпляра DisplayObject относительно трехмерного вышестоящего контейнера. Свойство z предназначено для работы с трехмерными системами координат, а не с экранными или пиксельными координатами.

При установке свойства z экранного объекта на значение, отличное от значения по умолчанию, равного 0, автоматически создается соответствующий объект Matrix3D. для регулирования положения и ориентации экранного объекта в трехмерном пространстве. При работе с осью z существующее поведение свойств х и у изменяется с экранных или пиксельных координат на положения относительно трехмерного вышестоящего контейнера.

Например, потомок объекта _root в положении x = 100, y = 100, z = 200 не отрисовывается в пиксельном положении (100,100). Потомок отображается в месте, определенном путем вычисления трехмерной проекции. Вычисление производится следующим образом:

(x~~cameraFocalLength/cameraRelativeZPosition, y~~cameraFocalLength/cameraRelativeZPosition)

Данный пример иллюстрирует рисование двух эллипсов, двигающихся туда и обратно (вниз и вверх по оси z) по направлению к точке схода. Один эллипс двигается быстрее другого. package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.events.Event; import flash.geom.*; public class ZAxisExample1 extends MovieClip { private var ellipse1Back:int = 1; private var ellipse2Back:int = 1; private var depth:int = 1000; public function ZAxisExample1():void { var ellipse1 = drawEllipse((this.stage.stageWidth / 2) - 100, (this.stage.stageHeight / 2), 100, 80, 10); var ellipse2 = drawEllipse((this.stage.stageWidth / 2) + 100, (this.stage.stageHeight / 2), 100, 80, 300); this.addChild(ellipse1); this.addChild(ellipse2); ellipse1.addEventListener(Event.ENTER_FRAME, ellipse1FrameHandler); ellipse2.addEventListener(Event.ENTER_FRAME, ellipse2FrameHandler); } private function drawEllipse(x:Number, y:Number, w:Number, h:Number, z:Number):Shape { var s:Shape = new Shape(); s.z = z; s.graphics.beginFill(0xFF0000); s.graphics.lineStyle(2); s.graphics.drawEllipse(x, y, w, h); s.graphics.endFill(); return s; } private function ellipse1FrameHandler(e:Event):void { ellipse1Back = setDepth(e, ellipse1Back); e.currentTarget.z += ellipse1Back * 10; } private function ellipse2FrameHandler(e:Event):void { ellipse2Back = setDepth(e, ellipse2Back); e.currentTarget.z += ellipse2Back * 20; } private function setDepth(e:Event, d:int):int { if(e.currentTarget.z > depth) { e.currentTarget.z = depth; d = -1; }else if (e.currentTarget.z < 0) { e.currentTarget.z = 0; d = 1; } return d; } } }
flash.geom.PerspectiveProjectionflash.geom.Matrix3Dtransform
blendShader Задает затенение, используемое при наложении переднего плана на фон.flash.display:ShaderЕсли тип выхода затенения несовместим с данной операцией (затенение должно указать выходpixel4). ArgumentErrorArgumentErrorЕсли затенение задает меньше двух входных изображений или если первые два входа не являются входами image4. ArgumentErrorArgumentErrorЕсли затенение задает неподдерживаемое входное изображение. ArgumentErrorArgumentErrorЕсли экземпляр ByteArray или Vector.<Number> используется в качестве ввода, а свойства width и height для ShaderInput не указаны либо указанные значения не соответствуют количеству данных во входном объекте. Дополнительные сведения см. в описании ShaderInput.input. ArgumentErrorArgumentError Задает затенение, используемое при наложении переднего плана на фон. Если свойство blendMode настроено на BlendMode.SHADER, то в качестве выхода режима наложения для экранного объекта используется объект Shader.

Применение свойства blendShader к экземпляру Shader автоматически приведет к смене значения свойства blendMode на BlendMode.SHADER. Если же свойство blendShader установлено (устанавливает blendMode на значение BlendMode.SHADER), то значение свойства blendMode изменяется. Режим наложения можно настроить на использование затенения для наложения, установив свойство blendMode на значение BlendMode.SHADER. Необходимость в повторной установке свойства blendShader отсутствует, за исключением тех случаев, когда требуется сменить затенение, используемое для режима наложения.

Присвоенный свойству blendShader объект Shader должен задавать как минимум пару входов image4. Отсутствует необходимость указания вводов в коде с помощью свойств input связанных объектов ShaderInput В качестве первого входного изображения используется экранный объект на заднем плане (вход со значением index 0). В качестве второго входного изображения используется экранный объект на переднем плане (вход со значением index 1). Затенение, используемое в качестве затенения наложения, может задавать больше двух входов. В этом случае все дополнительные входы следует задавать в свойстве input объекта ShaderInput.

При присвоении данному свойству экземпляра объекта Shader происходит копирование затенения на внутреннем уровне. При выполнении операции наложения используется эта копия, а не ссылка на исходное затенение. Изменения параметров затенения (изменение значения параметра, ввода или байт-кода) не влияют на используемую для наложения копию затенения.

flash.display.BlendModeflash.display.Shaderflash.display.ShaderInput
Loader Класс Loader используется для загрузки SWF-файлов либо файлов изображений (JPG, PNG или GIF).flash.display:DisplayObjectContainer Класс Loader используется для загрузки SWF-файлов либо файлов изображений (JPG, PNG или GIF). Используйте метод load() для инициации загрузки. Загруженный экранный объект добавляется в качестве дочернего объекта объекта Loader.

Используйте класс URLLoader для загрузки текстовых или двоичных данных.

Класс Loader переопределяет следующие наследуемые методы, так как объект Loader может иметь только один дочерний объект отображения — объект, загруженный им. При вызове следующих методов создается исключение: addChild(), addChildAt(), removeChild(), removeChildAt() и setChildIndex(). Для удаления загруженного объекта отображения необходимо удалить объект Loader из дочернего массива родительского объекта DisplayObjectContainer.

Примечание. Классы ActionScript 2.0 MovieClipLoader и LoadVars не используются в ActionScript 3.0. Они заменяются классами Loader и URLLoader.

При использовании класса Loader необходимо продумать модель безопасности Flash Player и Adobe AIR.

  • Можно загружать содержимое из любого доступного источника.
  • Загрузка запрещена, если вызов SWF-файла осуществляется в изолированной программной среде сети, а файл для загрузки сохранен на локальном компьютере.
  • Если загружаемое содержимое является SWF-файлом, созданным с использованием ActionScript 3.0, его нельзя использовать вместе с SWF-файлом из другой изолированной программной среды безопасности, если не было разрешено перекрестное выполнение сценариев путем вызова метода System.allowDomain() или System.allowInsecureDomain() в загруженном файле.
  • Если загруженное содержимое является SWF-файлом версии AVM1 (написанным с использованием ActionScript 1.0 или 2.0), нельзя выполнять перекрестные сценарии совместно с SWF-файлом версии AVM2 (написанным на ActionScript 3.0). Однако можно передавать данные между двумя SWF-файлами с помощью класса LocalConnection.
  • Если загруженное содержимое является изображением, его данные не будут доступны для SWF-файлов за пределами изолированной программной среды безопасности, если домен этого SWF-файла не включен в файл политики URL-адресов на исходном домене изображения.
  • Фрагменты роликов в изолированной программной среде файловой системы не могут выполнять перекрестные сценарии вместе с фрагментами роликов в изолированной программной среде сети, и наоборот.
  • Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).

Однако в AIR эти ограничения по безопасности не распространяются на содержимое в изолированной программной среде безопасности application (содержимое, установленное с приложением AIR).

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Возможно, при загрузке SWF-файла из ненадежного источника (такого как домен, не являющийся доменом корневого SWF-файла объекта Loader) потребуется определить маску для объекта Loader, чтобы предотвратить отрисовку загруженного содержимого (например, дочернего объекта объекта Loader) в областях рабочей области, находящихся за пределами этой маски, как показано в следующем коде:

import flash.display.~~; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); rect.graphics.endFill(); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr);
В следующем примере класс LoaderExample служит для иллюстрации использования различных прослушивателей событий. Это можно сделать, выполнив следующие действия.
  1. Создается свойство url, описывающее местоположение и имя файла изображения.
  2. В конструкторе LoaderExample создается новый объект Loader с именем loader и затем передается методу configureListeners(), описанному в шаге 3.
  3. Конструктор создает новый экземпляр объекта URLRequest, request, и передает url, чтобы сообщить имя и местоположение файла.
  4. Объект request передается методу load() объекта loader для загрузки изображения в список отображения.
  5. Прослушиватель событий clickHandler зарегистрировал событие click для средства загрузки. После щелчка мыши загруженное изображение выгружается.
  6. Метод configureListeners() добавляет семь прослушивателей событий с помощью следующих методов:
    • Метод completeHandler() выполняется по завершении загрузки изображения.
    • Метод httpStatusHandler() выполняется, если изображение загружено не локально и только если доступен сетевой запрос и проигрыватель Flash Player может его обнаружить.
    • Метод initHandler() выполняется перед методом completeHandler() и после метода progressHandler(). Как правило, событие init более полезно при загрузке SWF-файлов.
    • Метод ioErrorHandler() выполняется, если файла изображения нет или он недоступен.
    • Метод openHandler() выполняется при первом открытии изображения.
    • Метод progressHandler() выполняется, когда начинается и когда заканчивается загрузка файла изображения.
    • Метод unLoadHandler() выполняется при выгрузке с использованием метода unload(), когда пользователь нажимает на изображение.

Необходимо учитывать следующие требования.

  • В этом примере требуется поместить файл с именем Image.gif в тот же каталог, что и компилированный SWF-файл. Используйте изображение, область которого соответствует размерам основного SWF-файла.
  • Хотя в этом примере используются все события, доступные для объекта LoaderInfo, в большинстве случаев требуется только та или иная подгруппа. В частности, при загрузке только файла изображения можно использовать только событие complete (и, возможно, событие ioError), если загружается локальное изображение.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; public class LoaderExample extends Sprite { private var url:String = "Image.gif"; public function LoaderExample() { var loader:Loader = new Loader(); configureListeners(loader.contentLoaderInfo); loader.addEventListener(MouseEvent.CLICK, clickHandler); var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(Event.INIT, initHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(Event.UNLOAD, unLoadHandler); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function initHandler(event:Event):void { trace("initHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function unLoadHandler(event:Event):void { trace("unLoadHandler: " + event); } private function clickHandler(event:MouseEvent):void { trace("clickHandler: " + event); var loader:Loader = Loader(event.target); loader.unload(); } } }
flash.display.LoaderInfoflash.net.URLLoaderflash.display.DisplayObjectLoader Создает объект Loader, с помощью которого можно загружать файлы, например: SWF, JPEG, GIF или PNG. Создает объект Loader, с помощью которого можно загружать файлы, например: SWF, JPEG, GIF или PNG. Вызовите метод load(), чтобы загрузить ресурс в качестве дочернего объекта экземпляра Loader. После этого можно добавить объект Loader в список отображения (например, с помощью метода addChild() экземпляра DisplayObjectContainer). Ресурс отображается в рабочей области по мере загрузки.

Экземпляр Loader можно также использовать автономно, то есть без добавления в контейнер объекта в списке отображения. В этом режиме экземпляр Loader может использоваться для загрузки SWF-файла, содержащего дополнительные модули приложения.

О завершении загрузки SWF-файла можно узнать, используя события объекта LoaderInfo, связанные со свойством contentLoaderInfo объекта Loader. На этом этапе можно выполнить код в модуле SWF-файла, чтобы инициализировать и запустить модуль. В автономном режиме экземпляр Loader можно использовать для загрузки SWF-файла, содержащего компоненты и мультимедийные ресурсы. О завершении загрузки компонентов можно узнать с помощью оповещений о событиях объекта LoaderInfo. На этом этапе приложение может начать использовать компоненты и мультимедийные ресурсы в библиотеке SWF-файла, создав экземпляры классов ActionScript 3.0 для их представления.

Чтобы узнать состояние объекта Loader, отслеживайте следующие события, которые объект LoaderInfo связал со свойством contentLoaderInfo объекта Loader.

  • Событие open передается после начала загрузки.
  • Событие ioError или securityError передается, если загрузка файла невозможна или если в процессе загрузки произошла ошибка.
  • Событие progress отправляется постоянно по ходу загрузки файла.
  • Событие complete передается после завершения загрузки файла, но до того, как станут доступны методы и свойства загруженного фрагмента ролика.
  • Событие init передается после того, как станут доступны свойства и методы загруженного SWF-файла, чтобы можно было приступать к работе с ним. Это событие передается перед обработчиком complete. В потоковых SWF-файлах событие init может происходить намного раньше, чем событие complete. Для большинства целей следует использовать обработчик init.
flash.display.Loader.load()flash.display.LoaderInfo
close Отменяет операцию выполняемого в данный момент метода load() для экземпляра класса Loader. Отменяет операцию выполняемого в данный момент метода load() для экземпляра класса Loader. flash.display.Loader.load()loadBytes Выполняет загрузку из двоичных данных, которые хранятся в объекте ByteArray.Если свойство length объекта ByteArray меньше 0. ArgumentErrorArgumentErrorЕсли свойство checkPolicyFile или securityDomain параметра context имеет значение, отличное от 0. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли свойство requestedContentParent параметра context равно Loader. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли параметр LoaderContext.parameters устанавливается не равным null и имеет некоторые значения, отличные от типа String. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли переданное свойство applicationDomain параметраcontext находится на запрещенном домене. SecurityErrorSecurityErrorНельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0). SecurityErrorSecurityErrorbytesflash.utils:ByteArrayОбъект ByteArray. Содержимое объекта ByteArray может иметь любой формат, поддерживаемый классом Loader: SWF, GIF, JPEG или PNG. contextflash.system:LoaderContextnullОбъект LoaderContext. Применяется только свойство applicationDomain объекта LoaderContext; свойства checkPolicyFile и securityDomain объекта LoaderContext не применяются.

Если параметр context не задан или ссылается на несуществующий объект, содержимое загружается в текущий домен защиты — процесс, обозначенный как «загрузка-импорт» в документации о безопасности проигрывателя Flash Player. В частности, если загружаемый SWF-файл установил отношения доверия с удаленным SWF-файлом, встроив удаленный SWF-файл в свой код, то загружаемый SWF-файл может импортировать удаленный файл непосредственно в собственный домен защиты.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Выполняет загрузку из двоичных данных, которые хранятся в объекте ByteArray.

Метод loadBytes() является асинхронным. Прежде чем обращаться к свойствам загруженного объекта, необходимо дождаться события инициации.

При использовании данного метода необходимо учесть модель безопасности проигрывателя Flash Player, рассмотренную в описании класса Loader.

flash.utils.ByteArrayflash.system.LoaderContext.applicationDomainasyncErrorflash.events:AsyncErrorEventОтправляется объектом contentLoaderInfo, если свойство LoaderContext.requestedContentParent было указано и невозможно добавить загруженное содержимое как дочерний объект к указанному контейнеру DisplayObjectContainer. Это могло произойти, если загруженное содержимое — flash.display.AVM1Movie или при вызове addChild() к requestedContentParent выдается ошибка. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и он не возможен добавить загруженное содержимое как дочернего элемента к указанному DisplayObjectContainer.completeflash.events:EventОтправляется объектом contentLoaderInfo после завершения операции. Событие complete всегда отправляется после события init. Отправляется объектом contentLoaderInfo после завершения операции.initflash.events:EventОтправляется объектом contentLoaderInfo, когда становятся доступны свойства и методы загруженных данных. Событие init всегда предшествует событию complete. Отправляется объектом contentLoaderInfo, когда становятся доступны свойства и методы загруженных данных.ioErrorflash.events:IOErrorEventОтправляется объектом contentLoaderInfo, когда среда выполнения не может выполнить синтаксический анализ данных в массиве байт. Отправляется объектом contentLoaderInfo, когда среда выполнения не может выполнить синтаксический анализ данных в массиве байт.openflash.events:EventОтправляется объектом contentLoaderInfo после начала операции. Отправляется объектом contentLoaderInfo после начала операции.progressflash.events:ProgressEventОтправляется объектом contentLoaderInfo при передаче данных в памяти. Отправляется объектом contentLoaderInfo при передаче данных в памяти.securityErrorflash.events:SecurityErrorEventОтправленный contentLoaderInfo объект, если LoaderContext.requestedContentParent свойства были указаны и "песочница" системы защиты LoaderContext.requestedContentParent не имеет доступа к загруженному SWF. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и у "песочницы" системы защиты LoaderContext.requestedContentParent нет доступа к загруженному SWF.unloadflash.events:EventОтправляется объектом contentLoaderInfo при удалении загруженного объекта. Отправляется объектом contentLoaderInfo при удалении загруженного объекта.
loadFilePromise Загружает экземпляр IFilePromise.Если свойство requestedContentParent параметра context равно Loader. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли параметр LoaderContext.parameters устанавливается не равным null и имеет некоторые значения, отличные от типа String. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли IFilePromise объект передавал, поскольку параметр - null ArgumentErrorArgumentErrorpromiseflash.desktop:IFilePromiseОбъект IFilePromise. Источник данных объекта может иметь любой формат файла, поддерживаемый классом Loader: SWF, GIF, JPEG или PNG. contextflash.system:LoaderContextnullОбъект LoaderContext. Применяется только свойство applicationDomain объекта LoaderContext; свойства checkPolicyFile и securityDomain объекта LoaderContext не применяются.

Если параметр context не задан или ссылается на несуществующий объект, содержимое загружается в текущий домен защиты — процесс, обозначенный как «загрузка-импорт» в документации о безопасности проигрывателя Flash Player. В частности, если загружаемый SWF-файл установил отношения доверия с удаленным SWF-файлом, встроив удаленный SWF-файл в свой код, то загружаемый SWF-файл может импортировать удаленный файл непосредственно в собственный домен защиты.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Загружает экземпляр IFilePromise.

Метод loadFilePromise принимает объект IFilePromise и загружает бинарные данные. Если данные являются последовательным потоком, например видео, дождитесь событий инициализации или хода выполнения перед доступом к свойствам загруженного объекта. Или дождитесь события завершения, чтобы убедиться, что данные полностью загружены.

При использовании данного метода необходимо учесть модель безопасности проигрывателя Flash Player, рассмотренную в описании класса Loader.

MediaPromiseCameraRoll.browseForImage()CameraUIasyncErrorflash.events:AsyncErrorEventОтправляется объектом contentLoaderInfo, если свойство LoaderContext.requestedContentParent было указано и невозможно добавить загруженное содержимое как дочерний объект к указанному контейнеру DisplayObjectContainer. Это могло произойти, если загруженное содержимое — flash.display.AVM1Movie или при вызове addChild() к requestedContentParent выдается ошибка. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и он не возможен добавить загруженное содержимое как дочернего элемента к указанному DisplayObjectContainer.completeflash.events:EventОтправляется объектом contentLoaderInfo после завершения операции. Событие complete всегда отправляется после события init. Отправляется объектом contentLoaderInfo после завершения операции.initflash.events:EventОтправляется объектом contentLoaderInfo, когда становятся доступны свойства и методы загруженных данных. Событие init всегда предшествует событию complete. Отправляется объектом contentLoaderInfo, когда становятся доступны свойства и методы загруженных данных.ioErrorflash.events:IOErrorEventОтправляется объектом contentLoaderInfo, когда среде выполнения не удается проанализировать данные в источнике данных или невозможно прочитать поток источника данных. Отправляется объектом contentLoaderInfo, когда среде выполнения не удается проанализировать данные в источнике данных или невозможно прочитать поток источника данных.openflash.events:EventОтправляется объектом contentLoaderInfo после начала операции. Отправляется объектом contentLoaderInfo после начала операции.progressflash.events:ProgressEventОтправляется объектом contentLoaderInfo при передаче данных в памяти. Отправляется объектом contentLoaderInfo при передаче данных в памяти.securityErrorflash.events:SecurityErrorEventОтправленный contentLoaderInfo объект, если LoaderContext.requestedContentParent свойства были указаны и "песочница" системы защиты LoaderContext.requestedContentParent не имеет доступа к загруженному SWF. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и у "песочницы" системы защиты LoaderContext.requestedContentParent нет доступа к загруженному SWF.unloadflash.events:EventОтправляется объектом contentLoaderInfo при удалении загруженного объекта. Отправляется объектом contentLoaderInfo при удалении загруженного объекта.
load Загружает SWF-, JPEG-, прогрессивные JPEG-, неанимированные GIF- или PNG-файлы в объект, являющийся дочерним для объекта Loader.Значением свойства digest объекта request не является null. Свойство digest объекта URLRequest следует задавать только при вызове метода URLLoader.load() во время загрузки SWZ-файла (компонент платформы Adobe). IOErrorflash.errors:IOErrorЗначение для LoaderContext.securityDomain должно быть null или SecurityDomain.currentDomain. Оно говорит о том, что загруженный мультимедийный файл можно поместить только в его натуральную изолированную программную среду безопасности или в вашу собственную (для этого требуется файл политики). SecurityErrorSecurityErrorДля локальных SWF-файлов нельзя задавать для LoaderContext.securityDomain других значений, кроме null. Не разрешается импортировать нелокальные мультимедийные файлы в локальную изолированную программную среду или помещать другие локальные мультимедийные файлы в не собственную изолированную программную среду. SecurityErrorSecurityError Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0). SecurityErrorSecurityErrorЕсли свойства applicationDomain или securityDomain параметра context передаются с запрещенного домена. SecurityErrorSecurityErrorЕсли локальный SWF-файл пытается использовать свойствоsecurityDomain параметра context. SecurityErrorSecurityErrorЕсли свойство requestedContentParent параметра context равно Loader. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли параметр LoaderContext.parameters устанавливается не равным null и имеет некоторые значения, отличные от типа String. IllegalOperationErrorflash.errors:IllegalOperationErrorrequestflash.net:URLRequest Абсолютный или относительный URL-адрес загружаемого SWF-, JPEG-, GIF- или PNG-файла. Относительный путь должен относиться к главному SWF-файлу. Абсолютные URL-адреса должны содержать название протокола, например http:// или file:///. Имена файлов не должны содержать имена жестких дисков. contextflash.system:LoaderContextnullОбъект LoaderContext, имеющий свойства, которые определяют следующее:
  • нужно ли проверять наличие файла политики при загрузке объекта;
  • ApplicationDomain для загруженного объекта;
  • SecurityDomain для загруженного объекта.
  • ImageDecodingPolicy для загруженного объекта изображения

Если параметр context не задан или ссылается на несуществующий объект, загружаемое содержимое остается в собственном домене защиты.

Полные сведения см. в описании свойств класса LoaderContext.

Загружает SWF-файл или файл изображения в DisplayObject, являющийся дочерним объектом этого экземпляра Loader.
Загружает SWF-, JPEG-, прогрессивные JPEG-, неанимированные GIF- или PNG-файлы в объект, являющийся дочерним для объекта Loader. Если загружается анимированный GIF-файл, отображается только первый кадр. Так как объект Loader может содержать только один дочерний объект, отправка последующего запроса load() прекращает обработку предыдущего, если он еще ожидает выполнения, и начинается новая загрузка.

Примечание. В AIR 1.5 и Flash Player 10 максимальный размер загруженного изображения составляет 8,191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16,777,215. (Т. е. если ширина загруженного изображения составляет 8,191 пикселей, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину.

SWF-файл или изображение, загруженное в объект Loader наследует свойства положения, поворота и масштаба родительских экранных объектов объекта Loader.

Используйте метод unload() для удаления роликов или изображений, загруженных с помощью этого метода, или для отмены выполняемой операции загрузки.

Можно запретить использование SWF-файлом этого метода путем установки параметра allowNetworking для тегов object и embed на странице HTML, содержащей SWF-содержимое.

При использовании данного метода необходимо учесть модель безопасности проигрывателя Flash Player, рассмотренную в описании класса Loader.

В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится загрузка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для загрузок:

  • Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
  • Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.

Кроме того, все объекты типа содержимого multipart должны иметь допустимый синтаксис (в соответствии со стандартом RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

contentLoaderInfoflash.net.URLRequestflash.display.DisplayObjectflash.display.Loader.unload()flash.display.LoaderInfoflash.system.LoaderContextasyncErrorflash.events:AsyncErrorEventОтправляется объектом contentLoaderInfo, если свойство LoaderContext.requestedContentParent было указано и невозможно добавить загруженное содержимое как дочерний объект к указанному контейнеру DisplayObjectContainer. Это могло произойти, если загруженное содержимое — flash.display.AVM1Movie или при вызове addChild() к requestedContentParent выдается ошибка. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и он не возможен добавить загруженное содержимое как дочернего элемента к указанному DisplayObjectContainer.completeflash.events:EventПередается объектом contentLoaderInfo по завершении загрузки файла. Событие complete всегда отправляется после события init. Передается объектом contentLoaderInfo по завершении загрузки файла.httpStatusflash.events:HTTPStatusEventПередается объектом contentLoaderInfo, когда совершается сетевой запрос по протоколу HTTP, а проигрыватель Flash Player может определить код состояния HTTP. Отправляется объектом contentLoaderInfo, когда совершается сетевой запрос по протоколу HTTP, а проигрыватель Flash Player может определить код состояния HTTP.initflash.events:EventПередается объектом contentLoaderInfo когда становятся доступны свойства и методы загруженного SWF-файла. Событие init всегда предшествует событию complete. Отправляется объектом contentLoaderInfo, когда становятся доступны свойства и методы загруженного SWF-файла.ioErrorflash.events:IOErrorEventОтправляется объектом contentLoaderInfo, когда происходит ошибка ввода-вывода, приводящая к сбою операции загрузки. Отправляется объектом contentLoaderInfo, когда происходит ошибка ввода-вывода, приводящая к сбою операции загрузки.openflash.events:EventОтправляется объектом contentLoaderInfo после начала операции загрузки. Отправляется объектом contentLoaderInfo после начала операции загрузки.progressflash.events:ProgressEventОтправляется объектом contentLoaderInfo по мере получения данных во время операции загрузки. Отправляется объектом contentLoaderInfo по мере получения данных во время операции загрузки.securityErrorflash.events:SecurityErrorEventОтправляется объектом contentLoaderInfo, если SWF-файл в изолированной программной среде файловой системы пытается загрузить содержимое из изолированной программной среды сети и наоборот. Отправляется объектом contentLoaderInfo, если SWF-файл в изолированной программной среде файловой системы пытается загрузить содержимое из изолированной программной среды сети и наоборот.securityErrorflash.events:SecurityErrorEventОтправленный contentLoaderInfo объект, если LoaderContext.requestedContentParent свойства были указаны и "песочница" системы защиты LoaderContext.requestedContentParent не имеет доступа к загруженному SWF. Отправленный contentLoaderInfo объектом, если свойства LoaderContext.requestedContentParent были указаны и у "песочницы" системы защиты LoaderContext.requestedContentParent нет доступа к загруженному SWF.unloadflash.events:EventОтправляется объектом contentLoaderInfo при удалении загруженного объекта. Отправляется объектом contentLoaderInfo при удалении загруженного объекта.
unloadAndStop Пытается выгрузить содержимое дочернего SWF-файла и прекращает выполнение команд из загруженных SWF-файлов.gcBooleantrueПредоставляет инструкции для сборщика мусора относительно того, требуется (true) или не требуется (false) выполнять действия в дочерних объектах SWF. При асинхронной выгрузке нескольких объектов производительность приложения можно повысить, задав для параметра gc значение false. Однако, если для этого параметра задано значение false, мультимедийные объекты и экранные объекты дочернего SWF-файла могут остаться в памяти после выполнения команды unloadAndStop(). Пытается выгрузить содержимое дочернего SWF-файла и прекращает выполнение команд из загруженных SWF-файлов. Данный метод пытается выгрузить SWF-файлы, загруженные при помощи метода Loader.load() или Loader.loadBytes(), удалив ссылки на объекты EventDispatcher, NetConnection, Timer, Sound или Video дочернего SWF-файла. В результате для дочернего файла SWF и его списка отображения выполняются следующие действия:
  • Останавливается воспроизведение звука.
  • Удаляются прослушиватели событий рабочей области.
  • Удаляются прослушиватели событий enterFrame, frameConstructed, exitFrame, activate и deactivate.
  • Останавливаются таймеры.
  • Отсоединяются экземпляры Camera и Microphone.
  • Прекращается воспроизведение видеороликов.
flash.display.DisplayObjectflash.display.Loader.load()
unload Удаляет дочерний объект этого объекта Loader, загруженный с помощью метода load(). Удаляет дочерний объект этого объекта Loader, загруженный с помощью метода load(). Параметр property связанного объекта LoaderInfo сброшен до значения null. Дочерний объект не обязательно удаляется, так как на него могут ссылаться другие объекты. Однако он больше не является дочерним для объекта Loader.

Перед загрузкой дочернего SWF-файла лучше всего явно закрыть все потоки объектов дочернего SWF-файла, таких как LocalConnection, NetConnection, NetStream и Sound. В противном случае в дочернем SWF-файле может продолжаться воспроизведение звука, несмотря на его загрузку. Чтобы закрыть потоки в дочернем SWF-файле, добавьте для него прослушиватель события unload. Когда родительский объект вызывает Loader.unload(), дочернему объекту отправляется событие unload. Следующий код показывает, как это делается.

function closeAllStreams(evt:Event) { 
    myNetStream.close();
    mySound.close();
    myNetConnection.close();
    myLocalConnection.close();
}

myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, closeAllStreams);
Loader.load()flash.media.Sound.close()flash.net.LocalConnection.close()flash.net.NetConnection.close()flash.net.NetStream.close()оператор delete
contentLoaderInfo Возвращает объект LoaderInfo, соответствующий загружаемому объекту.flash.display:LoaderInfo Возвращает объект LoaderInfo, соответствующий загружаемому объекту. Объекты LoaderInfo совместно используются объектом Loader и загруженным объектом содержимого. Объект LoaderInfo предоставляет сведения о процессе загрузки и статистику по загружаемому файлу.

События, связанные с загрузкой, отправляются объектом LoaderInfo, на который ссылается свойство contentLoaderInfo объекта Loader. Свойство contentLoaderInfo задается для действительного объекта LoaderInfo, даже если содержимое еще не загружено, чтобы можно было добавить прослушиватели событий объекта перед загрузкой.

Чтобы обнаружить неперехваченные ошибки, которые происходят в загруженном SWF, используйте свойство Loader.uncaughtErrorEvents, а не Loader.contentLoaderInfo.uncaughtErrorEvents.

В следующем примере демонстрируется загрузка и размещение изображения в ActionScript 3.0 с использованием класса Loader и события complete свойства contentLoaderInfo объекта Loader. Пример предоставлен ActionScriptExamples.com. var url:String = "http://www.helpexamples.com/flash/images/image2.jpg"; var urlRequest:URLRequest = new URLRequest(url); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete); loader.load(urlRequest); addChild(loader); function loader_complete(evt:Event):void { var target_mc:Loader = evt.currentTarget.loader as Loader; target_mc.x = (stage.stageWidth - target_mc.width) / 2; target_mc.y = (stage.stageHeight - target_mc.height) / 2; }
flash.display.LoaderInfo
content Содержит корневой экранный объект SWF-файла или изображения (JPG, PNG или GIF), загруженного с помощью методов load() или loadBytes().flash.display:DisplayObjectЗагруженный SWF-файл или файл изображения принадлежит изолированной программной среде безопасности, к которой у вас нет доступа. Чтобы избежать такой ситуации, при вызове метода load() или loadBytes() загружаемый SWF-файл должен вызвать метод Security.allowDomain() либо загружающий файл должен указать параметр loaderContext со свойством securityDomain в значении SecurityDomain.currentDomain. SecurityErrorSecurityError Содержит корневой экранный объект SWF-файла или изображения (JPG, PNG или GIF), загруженного с помощью методов load() или loadBytes(). flash.display.DisplayObjectflash.display.Loader.load()uncaughtErrorEvents Объект, который отправляет событие uncaughtError при возникновении необработанной ошибки в SWF-файле, загруженном объектом Loader.flash.events:UncaughtErrorEvents Объект, который отправляет событие uncaughtError при возникновении необработанной ошибки в SWF-файле, загруженном объектом Loader. Неперехваченные ошибки возникают, когда ошибка выдается за пределами блока try..catch или когда отправляется объект ErrorEvent, для которого не зарегистрирован прослушиватель.

Обратите внимание, что свойство uncaughtErrorEvents объекта Loader отправляет события, которые передаются по восходящей цепочке через него, а не создаются им непосредственно. Оно никогда не отправляет событие uncaughtErrorEvent в фазе цели. Оно только отправляет события в фазах захвата и восхождения по цепочке. Чтобы обнаружить неперехваченную ошибку в текущем SWF (SWF-файле, в котором определен объект Loader), используйте свойство LoaderInfo.uncaughtErrorEvents.

Если содержимое, загруженное объектом Loader, является SWF-файлом версии AVM1 (ActionScript 2), неперехваченные ошибки в этом файле не приводят к отправке события uncaughtError.

Следующий пример демонстрирует использование обработчика для обнаружения неперехваченных ошибок в загруженном SWF-файле. В примере определяется обработчик событий uncaughtError для обнаружения неперехваченных ошибок.

В конструкторе код создает объект Loader и регистрирует прослушиватель события uncaughtError, отправляемого свойством uncaughtErrorEvents объекта Loader.

В методе uncaughtErrorHandler() код проверяет тип данных свойства error и реагирует соответствующим образом.

package { import flash.display.Loader; import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.UncaughtErrorEvent; import flash.net.URLRequest; public class LoaderUncaughtErrorEventExample extends Sprite { private var ldr:Loader; public function LoaderUncaughtErrorEventExample() { ldr = new Loader(); ldr.load(new URLRequest("child.swf")); ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } } }
UncaughtErrorEventLoaderInfo.uncaughtErrorEvents
NativeMenuItem Класс NativeMenuItem представляет один элемент в меню.flash.events:EventDispatcher Класс NativeMenuItem представляет один элемент в меню.

Элементом меню может быть команда, подменю или разделительная линия.

  • Чтобы создать элемент команды, вызовите конструктор NativeMenuItem, передайте строку для ярлыка и значение false для параметра isSeparator.
  • Чтобы создать подменю, создайте элемент команды для родительского меню и назначьте объект подменю NativeMenu свойству элемента submenu. Также можно создать метод addSubmenu() родительского объекта NativeMenu, чтобы создать элемент и одновременно задать свойство submenu.
  • Чтобы создать разделитель, вызовите конструктор NativeMenuItem, передайте пустую строку для подписи и значение true для параметра isSeparator.

Прослушивайте события select для элемента или родительского меню, чтобы узнать, когда будет выбрана команда меню. Ни подменю, ни разделители не передают события select Прослушивайте события preparing, чтобы определить, когда элемент меню будет показан или активирован с помощью эквивалентной комбинации клавиш.

flash.display.NativeMenuflash.display.NativeMenu.addSubmenu()preparing Отправляется этим объектом NativeMenuItem при нажатии его эквивалентной комбинации клавиш и непосредственно перед отображением содержащего его меню.flash.events.Event.PREPARINGflash.events.Event Отправляется этим объектом NativeMenuItem при нажатии его эквивалентной комбинации клавиш и непосредственно перед отображением содержащего его меню.

Прослушивайте это событие, чтобы обновить элемент перед отображением содержащего его меню или когда пользователь нажимает его эквивалентную комбинацию клавиш. Событие preparing отправляется прежде, чем будет завершена оценка эквивалентной комбинации клавиш. Можно включить, отключить или удалить элемент из меню с помощью обработчика события preparing, и эти изменения вступят в силу при нажатии эквивалентной комбинации клавиш. Например, при удалении или отключении этого элемента меню последовательность событий отменяется, и событие select не отправляется. Событие preparing также отправляется другими элементами меню.

Событие preparing предшествует событию displaying и предоставляет дополнительную функциональность. Прослушивайте только одно из событий: preparing или displaying.

displaying Передается этим объектом NativeMenuItem непосредственно перед показом меню, содержащего элемент.flash.events.Event.DISPLAYINGflash.events.Event Передается этим объектом NativeMenuItem непосредственно перед показом меню, содержащего элемент.

Событие preparing предшествует событию displaying и предоставляет дополнительную функциональность. Прослушивайте только одно из событий: preparing или displaying.

select Передается каждый раз, когда пользователь выбирает элемент меню.flash.events.Event.SELECTflash.events.Event Передается каждый раз, когда пользователь выбирает элемент меню.

Событие select переходит по восходящей цепочке из данного элемента в содержащее его меню и дальше вверх к корневому объекту меню. Свойство target объекта события ссылается на данный объект NativeMenuItem, а свойство currentTarget ссылается на передающий объект (либо данный объект NativeMenuItem, либо предшествующий ему NativeMenu).

Примечание. Если окно, содержащее меню, показывается в полноэкранном режиме (stage.displayState == StageDisplayState.FULL_SCREEN), то объект NativeMenuItem не передает событие select, когда пользователь вводит комбинацию клавиш, эквивалентную элементу меню.

NativeMenuItem Создает новый объект NativeMenuItem.labelStringЭкранная подпись для элемента или пустая строка для разделителей. isSeparatorBooleanfalseЗадайте true, чтобы создать разделитель; в противном случае задайте false. Создает новый объект NativeMenuItem.

Чтобы создать команду меню, задайте параметр label строке, содержащей экранную подпись, а для isSeparator укажите значение false.

Чтобы создать команду подменю, создайте элемент команды, а затем назначьте объект подменю NativeMenu свойству элемента submenu. Добавьте элемент в родительское меню.

Чтобы создать разделитель, задайте параметр label пустой строке, а для isSeparator укажите значение true.

Добавляйте и удаляйте элементы из меню с помощью методов NativeMenu addItem() и removeItem().

flash.display.NativeMenu.addSubmenu()
clone Создает копию объекта NativeMenuItem.flash.display:NativeMenuItem Создает копию объекта NativeMenuItem. toString Возвращает строку, содержащую все свойства объекта NativeMenuItem.Строка, содержащая все свойства объекта Event. String Возвращает строку, содержащую все свойства объекта NativeMenuItem. checked Управляет отображением флажка для данного элемента меню.Boolean Управляет отображением флажка для данного элемента меню. data Объект произвольных данных, связанный с данным элементом меню.Object Объект произвольных данных, связанный с данным элементом меню.

Этому свойству можно назначить любой объект. Назначенный объект не используется системой меню, но доступен для кода обработки события (через свойство target объекта событий). По умолчанию в качестве значения этого свойства выбраноnull

enabled Управляет включением данного элемента меню.Boolean Управляет включением данного элемента меню. isSeparator Сообщает, является ли данный элемент разделительной линией меню.Boolean Сообщает, является ли данный элемент разделительной линией меню.

Создайте разделительную линию, задав для параметра isSeparator в конструкторе NativeMenuItem значение true.

keyEquivalentModifiers Массив кодов клавиш для модификаторов эквивалентной комбинации клавиш.Array Массив кодов клавиш для модификаторов эквивалентной комбинации клавиш.

Используйте константы, определенные в классе Keyboard, чтобы указать коды клавиш для модификаторов. Допускаются следующие клавиши-модификаторы:

  • Keyboard.ALTERNATE
  • Keyboard.COMMAND
  • Keyboard.CONTROL

Если не назначено других модификаторов, по умолчанию в Windows или Linux указывается клавиша Keyboard.CONTROL, а в Mac OS X — Keyboard.COMMAND. Если эти модификаторы не должны входить в эквивалентную комбинацию клавиш, установите это свойство на пустой массив.

Если свойству keyEquivalent назначается заглавная буква, то в качестве модификатора автоматически используется клавиша Shift. Назначение свойству keyEquivalentModifier пустого массива не приведет к отмене использования модификатора Shift.

flash.ui.Keyboard
keyEquivalent Эквивалентная комбинация клавиш для данного элемента меню.String Эквивалентная комбинация клавиш для данного элемента меню.

Задайте keyEquivalent, используя строчную букву, чтобы назначить комбинацию клавиш без модификатора клавиши Shift. Задайте заглавную букву, чтобы назначить комбинацию клавиш с использованием модификатора клавиши Shift.

По умолчанию в комбинацию клавиш включается модификатор эквивалентной комбинации клавиш (Ctrl для Windows или Linux и Command для Mac OS X). Если в эквивалентную комбинацию клавиш не должны входить модификаторы, установите свойство keyEquivalentModifiers на пустой массив.

label Строка отображения данного элемента меню.String Строка отображения данного элемента меню. menu Меню, содержащее данный элемент.flash.display:NativeMenu Меню, содержащее данный элемент. mnemonicIndex Положение мнемонического символа в ярлыке элемента меню.int Положение мнемонического символа в ярлыке элемента меню.

Символ в указанном положении является мнемоническим для элемента меню. Индекс строится с нуля, поэтому первый символ имеет индекс 0.

Данное свойство игнорируется в операционных системах, не использующих мнемосхемы меню.

name Имя данного элемента меню.String Имя данного элемента меню.

Значение имени не отображается, его можно использовать в качестве идентификатора, независимого от локали. Имя не назначается автоматически.

submenu Подменю, связанное с данным элементом меню.flash.display:NativeMenu Подменю, связанное с данным элементом меню.

Назначение объекта NativeMenu данному свойству изменяет вид и поведение элемента меню. Элемент подменю отображает значок подменю и перестает передавать события select.

Примечание. Добавление меню в качестве подменю для самого себя (по циклической ссылке) может привести к зависанию приложения.

flash.display.NativeMenu.addSubmenu()
NativeMenu Класс NativeMenu содержит методы и свойства для определения собственных меню.flash.events:EventDispatcher Класс NativeMenu содержит методы и свойства для определения собственных меню.

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается на мобильных устройствах или в средах AIR для телевизионных устройств. Используйте свойство NativeMenu.isSupported, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

Собственное меню — это меню, которое управляется и отображается операционной системой, а не программой. AIR поддерживает следующие типы собственных меню:

  • Меню программы поддерживаются в ОС Mac OS X. Используйте свойство NativeApplication.supportsMenu, чтобы узнать, поддерживаются ли меню программы в операционной системе хоста. Меню программы отображается в строке меню вверху рабочего стола Mac. ОС Mac OS X меню по умолчанию для каждой программы, но многие из перечисленных в нем команд нефункциональны. Можно добавить прослушивателей событий для пунктов по умолчанию, заменить отдельные меню и пункты, а также полностью заменить меню по умолчанию. Для доступа к объекту меню программы служит свойство menu экземпляра NativeApplication.
  • Меню окон поддерживаются в ОС Windows и ОС Linux. Используйте свойство NativeWindow.supportsMenu, чтобы проверить, поддерживаются ли меню окна в операционной системе хоста. Меню окна отображается под строкой заголовка окна. Область, занимаемая меню, не входит в состав рабочей области окна. Программы не могут использовать эту область для рисования. Чтобы назначить окну меню, используйте свойство menu экземпляра NativeWindow.
  • Меню значков на панели Dock поддерживаются в ОС Mac OS X. Используйте свойство NativeApplication.supportsDockIcon, чтобы узнать, поддерживаются ли значки на панели Dock в операционной системе хоста. Пункты в меню значка на панели Dock отображаются над элементами по умолчанию, предусмотренными в операционной системе. Доступ к пунктам по умолчанию нельзя получить посредством кода программы. Задайте меню для свойства menu объекта DockIcon программы.
  • Меню значков на панели задач поддерживаются в ОС Windows и в большинстве версий ОС Linux. Используйте свойство NativeWindow.supportsSystemTrayIcon, чтобы проверить, поддерживаются ли значки на панели задач в операционной системе хоста. Меню значка на панели задач отображается в ответ на щелчок правой кнопкой мыши по значку, как и контекстное меню. Задайте меню для свойства menu объекта SystemTrayIcon программы.
  • Контекстные меню поддерживаются во всех операционных системах. Контекстные меню отображаются в ответ на событие пользовательского интерфейса, например на нажатие правой кнопки мыши или на нажатие кнопки мыши одновременно с клавишей Command над объектом InteractiveObject, отображаемым в программе. Механизм пользовательского интерфейса, используемый для отображения меню, может быть разным в зависимости от операционной системы и аппаратных средств компьютера. Задайте меню для свойства contextMenu объекта InteractiveObject. В AIR контекстное меню можно создать с помощью класса NativeMenu или ContextMenu. В Flash Player для этого можно использовать только класс ContextMenu. Объекты ContextMenu в AIR не имеют встроенных элементов; контекстное меню по умолчанию не отображается.
  • Раскрывающиеся меню поддерживаются во всех операционных системах. Раскрывающиеся меню выполняют те же функции, что и контекстные меню, но отображаются они с использованием метода display() объекта меню, а не в ответ на событие пользовательского ввода. Раскрывающееся меню не присоединяются к другим объектам. Просто необходимо создать собственное меню и вызвать метод display().

Объект меню содержит элементы меню. Элементом меню может быть команда, подменю или разделительная линия. Добавить элементы в меню можно с помощью метода addItem() или addItemAt(). Порядок отображения элементов меню соответствует порядку элементов в массиве items меню.

Чтобы создать подменю, добавьте элемент меню в родительский объект меню. Назначьте объект меню, представляющий подменю, свойству submenu соответствующего элемента родительского меню.

Примечание. Корневое меню окна и меню программы должны содержать только элементы подменю. Элементы, не представляющие собой подменю, не показываются, так как они противоречат ожиданиям пользователей от меню такого типа.

Меню отправляют события select, когда в меню или подменю выбирается элемент команды. (Подменю и разделители выбрать нельзя.) Свойство target объекта события ссылается на выбранный элемент.

Меню отправляют события preparing непосредственно перед отображением меню и при нажатии эквивалентной комбинации клавиш, назначенной для одного из элементов меню. Это событие можно использовать для обновления содержимого меню на основе текущего состояния приложения.

Примечание. Если используется ПО Flex Framework, рекомендуется использовать класс FlexNativeMenu. Обычно легче определить меню путем объявления в MXML, чем писать код ActionScript для создания каждого элемента структуры меню

flash.display.InteractiveObject.contextMenuflash.display.NativeMenuItemflash.display.NativeWindow.menuflash.desktop.DockIconflash.desktop.SystemTrayIconflash.desktop.NativeApplication.menuflash.desktop.NativeApplication.iconmx.controls.FlexNativeMenupreparing Отправляется объектом NativeMenu при нажатии его эквивалентной комбинации клавиш и непосредственно перед отображением меню.flash.events.Event.PREPARINGflash.events.Event Отправляется объектом NativeMenu при нажатии его эквивалентной комбинации клавиш и непосредственно перед отображением меню.

Прослушивайте это событие, чтобы обновить перед его отображением или когда пользователь нажимает его эквивалентную комбинацию клавиш. Событие preparing отправляется прежде, чем будет завершена оценка эквивалентной комбинации клавиш. Можно включить, отключить или удалить элементы из меню с помощью обработчика события preparing, и эти изменения вступят в силу при нажатии эквивалентной комбинации клавиш. Например, при удалении или отключении элемента меню, для которого назначена нажатая комбинация клавиш, последовательность событий отменяется, и событие select не отправляется. Событие preparing также отправляется элементами меню.

Событие preparing предшествует событию displaying и предоставляет дополнительную функциональность. Прослушивайте только одно из событий: preparing или displaying.

displaying Отправляется этим объектом NativeMenu непосредственно перед показом меню.flash.events.Event.DISPLAYINGflash.events.Event Отправляется этим объектом NativeMenu непосредственно перед показом меню.

Прослушивайте это событие для обновления меню перед показом. Событие displaying также отправляется элементами меню.

Событие preparing предшествует событию displaying и предоставляет дополнительную функциональность. Прослушивайте только одно из событий: preparing или displaying.

Примечание. До версии AIR 2.6 для Mac OS X меню и элементы меню отправляли событие displaying, когда пользователь нажимал эквивалентную комбинацию клавиш. (Это событие не отправлялось при нажатии эквивалентной комбинации клавиш в других операционных системах.) Начиная с версии AIR 2.6 события displaying больше не отправляются, когда пользователь нажимает эквивалентную комбинацию клавиш. Вместо этого следует использовать событие preparing.

select Отправляется этим объектом NativeMenu при выборе одного из элементов меню или элемента одного из подменю.flash.events.Event.SELECTflash.events.Event Отправляется этим объектом NativeMenu при выборе одного из элементов меню или элемента одного из подменю.

Событие select переходит по восходящей цепочке из данного элемента в содержащее его меню и дальше вверх к корневому объекту меню. Свойство target объекта событий ссылается на выбранный объект NativeMenuItem. Свойство currentTarget ссылается на данный объект NativeMenu.

NativeMenu Создает новый объект NativeMenu. Создает новый объект NativeMenu. addItemAt Вставляет элемент меню в указанное положение.Если item имеет значение null. ArgumentErrorArgumentErrorЕсли item является составным элементом другого меню. ArgumentErrorArgumentErrorЕсли индекс находится за пределами массива items меню. RangeErrorRangeErrorflash.display:NativeMenuItemitemflash.display:NativeMenuItemВставляемый объект NativeMenuItem. indexintПоложение в меню (от нуля), выбранное для вставки элемента меню.

Примечание. Добавление элемента к меню может привести к зависанию приложения, если подменю элемента установлено на собственное меню (вызывает циклическую ссылку).

Вставляет элемент меню в указанное положение. Положение индексируется начиная сверху. Установите для параметра index значение «0», чтобы вставить элемент в начале меню. Индексация позиции всех типов меню (окно, приложение, значок в панели задач, значок в доке, контекстное и всплывающее меню) начинается сверху.
addItem Добавляет элемент в конец меню.Если item имеет значение null. ArgumentErrorArgumentErrorЕсли item является составным элементом другого меню. ArgumentErrorArgumentErrorflash.display:NativeMenuItemitemflash.display:NativeMenuItemОбъект NativeMenuItem для добавления в конец меню. Добавляет элемент в конец меню.

При создании контекстного меню можно добавлять объекты NativeMenuItem или ContextMenuItem. Однако рекомендуется использовать только один тип объектов в контекстном меню, чтобы все элементы меню имели одинаковые свойства.

Примечание. Добавление элемента к меню может привести к зависанию приложения, если подменю элемента установлено на собственное меню (вызывает циклическую ссылку).

addSubmenuAt Добавляет подменю в меню, вставляя новый элемент меню в заданное положение.Объект NativeMenuItem, созданный для подменю. flash.display:NativeMenuItemsubmenuflash.display:NativeMenuОбъект NativeMenu, определяющий добавляемое подменю. indexintПозиция массива items данного меню, в которую требуется вставить добавляемый элемент меню. labelStringЯрлык отображения для добавляемого элемента меню. Добавляет подменю в меню, вставляя новый элемент меню в заданное положение.

Вызов метода addSubMenuAt() равносилен созданию нового элемента меню, вставке его в желаемое положение в меню и назначению объекта NativeMenu свойству submenu элемента.

Примечание. Добавление меню в качестве подменю для самого себя (по циклической ссылке) может привести к зависанию приложения.

addSubmenu Добавляет подменю в меню путем вставки нового элемента меню.Объект NativeMenuItem, созданный для подменю. flash.display:NativeMenuItemsubmenuflash.display:NativeMenuОбъект NativeMenu, определяющий добавляемое подменю. labelStringЯрлык отображения для добавляемого элемента меню. Добавляет подменю в меню путем вставки нового элемента меню.

Вызов метода addSubMenu() равносилен созданию нового элемента меню, его добавлению в меню и назначению объекта NativeMenu свойству submenu элемента.

Примечание. Добавление меню в качестве подменю для самого себя (по циклической ссылке) может привести к зависанию приложения.

clone Создает копию меню и всех элементов.flash.display:NativeMenu Создает копию меню и всех элементов. containsItem Сообщает, содержит ли меню указанный элемент.true, если item есть в этом меню. Booleanitemflash.display:NativeMenuItemОбъект NativeMenuItem, который требуется найти. Сообщает, содержит ли меню указанный элемент. display Добавляет раскрывающееся меню в заданном положении.stageflash.display:StageОбъект Stage, на котором будет отображаться данное меню. stageXNumberЧисло пикселей по горизонтали относительно начала рабочей области, на котором будет отображаться данное меню. stageYNumberЧисло пикселей по вертикали относительно начала рабочей области, на котором будет отображаться данное меню. Добавляет раскрывающееся меню в заданном положении. getItemAt Определяет элемент меню, расположенный по заданному индексу.Если index находится за пределами массива items меню. RangeErrorRangeErrorОбъект NativeMenuItem, расположенный в заданном положении в меню. flash.display:NativeMenuItemindexintПоложение (от нуля) возвращаемого элемента. Определяет элемент меню, расположенный по заданному индексу. getItemByName Определяет элемент меню с заданным именем.Объект NativeMenuItem с заданным именем или значение null, если такого элемента в меню не существует. flash.display:NativeMenuItemnameStringИскомая строка. Определяет элемент меню с заданным именем.

Примечание. Свойство name элементов меню не назначается по умолчанию.

getItemIndex Определяет положение заданного элемента.Положение (от нуля) указанного элемента в данном меню или -1, если элемент отсутствует в меню. intitemflash.display:NativeMenuItemОбъект NativeMenuItem, который требуется найти. Определяет положение заданного элемента. removeAllItems Удаляет все пункты меню. Удаляет все пункты меню. removeItemAt Удаляет и возвращает элемент меню в заданный индекс.Если index находится за пределами массива items этого меню. RangeErrorRangeErrorУдаленный объект NativeMenuItem. flash.display:NativeMenuItemindexintПоложение (от нуля) удаляемого элемента. Удаляет и возвращает элемент меню в заданный индекс. removeItem Удаляет заданный элемент меню.Если item нет в этом меню. RangeErrorRangeErrorflash.display:NativeMenuItemitemflash.display:NativeMenuItemОбъект NativeMenuItem для удаления из данного меню. Удаляет заданный элемент меню. setItemIndex Перемещает элемент меню в заданное положение.Если index находится за пределами массива items меню. RangeErrorRangeErroritemflash.display:NativeMenuItemПеремещаемый объект NativeMenuItem. indexintПоложение (от нуля) в меню, в которое нужно переместить item. Перемещает элемент меню в заданное положение. Если элемент еще не находится в меню, вызов этого метода добавляет элемент к меню. isSupported Указывает, поддерживается ли в клиентской системе какая-либо форма собственного меню.Boolean Указывает, поддерживается ли в клиентской системе какая-либо форма собственного меню. flash.display.NativeWindow.supportsMenuflash.desktop.NativeApplicationitems Массив объектов NativeMenuItem в данном меню.Array Массив объектов NativeMenuItem в данном меню.

Массив сортируется в порядке отображения.

Примечание. Это свойство доступно только для чтения в AIR 1.0. Оно становится доступным для чтения или записи в AIR 1.1.

numItems Количество объектов NativeMenuItem в данном меню.int Количество объектов NativeMenuItem в данном меню. parent Родительское меню.flash.display:NativeMenu Родительское меню.

parent корневого объекта меню (верхнего уровня) является null.

StageOrientation Класс StageOrientation определяет константы, перечисляющие возможные ориентации рабочей область и устройства.Класс StageOrientation передает значения для свойства orientation класса Stage и для других свойств и методов, содержащих ссылку на это свойство. Object Класс StageOrientation определяет константы, перечисляющие возможные ориентации рабочей область и устройства. flash.display.Stage.orientationflash.display.Stage.setOrientation()flash.display. Stage.deviceOrientationflash.events.StageOrientationEvent.afterOrientationflash.events.StageOrientationEvent.beforeOrientationDEFAULT Указывает, что рабочая область в данный момент находится в ориентации, используемой устройством по умолчанию (правой стороной вверх).defaultString Указывает, что рабочая область в данный момент находится в ориентации, используемой устройством по умолчанию (правой стороной вверх). ROTATED_LEFT Указывает, что в текущий момент рабочая область повернута влево относительно ориентации по умолчанию.rotatedLeftString Указывает, что в текущий момент рабочая область повернута влево относительно ориентации по умолчанию.

Примечание:: Когда ориентация устройства вращается слева, ориентация рабочей область должна вращаться правая, чтобы остаться вертикальной.

ROTATED_RIGHT Указывает, что в текущий момент рабочая область повернута вправо относительно ориентации по умолчанию.rotatedRightString Указывает, что в текущий момент рабочая область повернута вправо относительно ориентации по умолчанию.

Примечание:: Когда ориентация устройства вращается правая, ориентация рабочей область должна вращаться слева, чтобы остаться вертикальной.

UNKNOWN Указывает, что ориентация устройства не задана.unknownString Указывает, что ориентация устройства не задана. Это состояние может иметь место, когда устройство лежит плашмя на таблице и также в то время как программа калибрует. UPSIDE_DOWN Указывает, что в текущий момент рабочая область перевернута относительно ориентации по умолчанию.upsideDownString Указывает, что в текущий момент рабочая область перевернута относительно ориентации по умолчанию.
DisplayObjectContainer Класс DisplayObjectContainer является базовым классом для всех объектов, которые могут быть контейнерами для экранных объектов в списке отображения.Абстрактный базовый класс для всех экранных объектов, которые могут содержать дочерние объекты. flash.display:InteractiveObject Класс DisplayObjectContainer является базовым классом для всех объектов, которые могут быть контейнерами для экранных объектов в списке отображения. Список отображения управляет всеми объектами, отображаемыми в средах выполнения Flash. Используйте класс DisplayObjectContainer, чтобы упорядочить экранные объекты в списке отображения. Каждый объект DisplayObjectContainer имеет собственный список дочерних объектов для построения z-последовательности объектов. Z-последовательность — это порядок расположения с переднего на задний план, определяющий, какой объект будет нарисован на переднем плане, какой за ним и т.д.

DisplayObject — это абстрактный базовый класс, поэтому DisplayObject нельзя вызывать непосредственно. При вызове new DisplayObject() выдается исключение ArgumentError.

Класс DisplayObjectContainer — это абстрактный базовый класс для всех объектов, содержащих дочерние объекты. Он не поддерживает непосредственное создание экземпляров. При вызове конструктора new DisplayObjectContainer() выдается исключение ArgumentError.

Дополнительные сведения см. в главе «Программирование экрана» Руководства разработчика по ActionScript 3.0.

В следующем примере с помощью класса DisplayObjectContainerExample создается последовательность из пяти оранжевых квадратов. Это можно сделать, выполнив следующие действия.
  1. Конструктор вызывает метод configureAssets().
  2. Метод configureAssets() создает объекты Sprite с именами child и lastChild.
  3. Цикл for создает пять оранжевых квадратов и располагает их один за другим.
  4. Каждый раз при создании объекта CustomSprite конструктор вызывает его метод draw(), который рисует квадрат размером 50 х 50 пикселей путем вызова методов beginFill(), drawRect() и endFill() класса Graphics. Метод addChild() добавляет каждый квадрат в список отображения.
package { import flash.display.DisplayObject; import flash.display.Sprite; public class DisplayObjectContainerExample extends Sprite { private var gutter:uint = 5; private var childCount:uint = 5; public function DisplayObjectContainerExample() { configureAssets(); } private function configureAssets():void { var child:Sprite = new CustomSprite(); var lastChild:Sprite = child; for (var i:uint = 1; i <= childCount; i++) { child = new CustomSprite(); child.x = lastChild.x + lastChild.width + gutter; addChild(child); lastChild = child; } } } } import flash.display.Sprite; class CustomSprite extends Sprite { private var size:uint = 50; private var bgColor:uint = 0xFFCC00; public function CustomSprite() { draw(size, size); } private function draw(w:uint, h:uint):void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, w, h); graphics.endFill(); } }
flash.display.DisplayObjectDisplayObjectContainer При вызове нового DisplayObjectContainer() конструктор выдает исключение ArgumentError. При вызове нового DisplayObjectContainer() конструктор выдает исключение ArgumentError. Однако можно вызывать конструкторы для следующих подклассов DisplayObjectContainer:
  • new Loader()
  • new Sprite()
  • new MovieClip()
addChildAt Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer.Исключение выдается, если позиция в индексе не существует в списке дочерних элементов. RangeErrorRangeErrorИнициирует, если дочерний элемент тот же, что и родительский. Также выдается исключение, если вызывающий объект является дочерним элементом первого уровня (или второго и так далее уровней) добавляемого дочернего элемента. ArgumentErrorArgumentErrorЭкземпляр DisplayObject, передаваемый в параметр child. flash.display:DisplayObjectchildflash.display:DisplayObjectЭкземпляр DisplayObject для добавления в качестве нижестоящего элемента экземпляра DisplayObjectContainer. indexintПозиция индекса для добавления нижестоящего элемента. При указании занятой в настоящее время позиции индекса существующий в данной позиции дочерний объект и все вышестоящие позиции перемещаются по списку на одну позицию вверх. Добавляет дочерний объект к данному экземпляру DisplayObjectContainer. Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer. Дочерний элемент добавляется к указанной позиции индекса. Индекс 0 представляет собой заднюю (нижнюю) часть списка отображения для объекта DisplayObjectContainer.

Так, в следующем примере представлено три объекта отображения с метками а, b и c в позициях индекса 0, 1 и 2 соответственно.

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

В следующем примере создается контейнер экранных объектов container, и в его список отображения добавляется экранный объект circle1. Затем посредством вызова container.addChildAt(circle2, 0) добавляется объект circle2 в позицию индекса 0 (задний план) и перемещает объект circle1 в позицию индекса 1. import flash.display.Sprite; var container:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); var circle2:Sprite = new Sprite(); container.addChild(circle1); container.addChildAt(circle2, 0); trace(container.getChildAt(0) == circle2); // true trace(container.getChildAt(1) == circle1); // true
addChild()addedflash.events:EventОтправляется, когда экранный объект добавляется в список отображения. Отправляется, когда экранный объект добавляется в список отображения.
addChild Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer.Инициирует, если дочерний элемент тот же, что и родительский. Также выдается исключение, если вызывающий объект является дочерним элементом первого уровня (или второго и так далее уровней) добавляемого дочернего элемента. ArgumentErrorArgumentErrorЭкземпляр DisplayObject, передаваемый в параметр child. flash.display:DisplayObjectchildflash.display:DisplayObjectЭкземпляр DisplayObject для добавления в качестве нижестоящего элемента экземпляра DisplayObjectContainer. Добавляет дочерний объект к данному экземпляру DisplayObjectContainer. Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer. Дочерний элемент добавляется перед (сверху) всеми остальными дочерними элементами в данном экземпляре DisplayObjectContainer. (Чтобы добавить дочерний элемент в конкретную позицию в индексе, используйте метод addChildAt().)

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

Примечание. Команда stage.addChild() может вызвать проблемы с опубликованным SWF-файлом, включая проблемы безопасности и конфликты с другими загруженными SWF-файлами. В экземпляре среды выполнения Flash есть только одна рабочая область независимо от числа загружаемых SWF-файлов. Так, как правило, объекты совсем не следует добавлять в рабочую область напрямую. Рабочая область должна содержать только корневой объект. Создайте объект DisplayObjectContainer, который будет содержать все элементы списка отображения. Затем, при необходимости, добавьте этот экземпляр DisplayObjectContainer в рабочую область.

В следующем примере настраиваются два объекта Sprite с именами container1 и container2. Спрайт — это тип контейнера экранных объектов. В примере вызывается метод addChild() для создания иерархии отображения: container1 является дочерним элементомcontainer2, а два других экранных объекта, circle1 и circle2, являются дочерними элементами container1. При вызове метода trace() показывается число дочерних элементов каждого объекта. Обратите внимание, что дочерние элементы второго уровня не включены в счетчик numChildren. import flash.display.Sprite; var container1:Sprite = new Sprite(); var container2:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(80, 40, 40); container2.addChild(container1); container1.addChild(circle1); container1.addChild(circle2); trace(container1.numChildren); // 2 trace(container2.numChildren); // 1 trace(circle1.numChildren); // 0 trace(circle2.numChildren); // 0
addChildAt()addedflash.events:EventОтправляется, когда экранный объект добавляется в список отображения. Отправляется, когда экранный объект добавляется в список отображения.
areInaccessibleObjectsUnderPoint Показывает, могут ли ограничения безопасности привести к пропуску каких-либо экранных объектов в списке, возвращаемом в результате вызова метода DisplayObjectContainer.getObjectsUnderPoint() с заданной точкой point.Значение true, если точка содержит дочерние экранные объекты с ограничениями по безопасности. Booleanpointflash.geom:PointТочка, под которой следует выполнить поиск. Показывает, могут ли ограничения безопасности привести к пропуску каких-либо экранных объектов в списке, возвращаемом в результате вызова метода DisplayObjectContainer.getObjectsUnderPoint() с заданной точкой point. По умолчанию содержимое из одного домена не имеет доступ к объектам из другого домена, если это не разрешено посредством вызова метода Security.allowDomain(). Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

Параметр point находится в координатной плоскости рабочей области, которая может отличаться от координатной плоскости контейнера объектов отображения (если это не рабочая область). Можно использовать методы globalToLocal() и localToGlobal() для преобразования точек между этими координатными плоскостями.

Следующий код создает контейнер экранных объектов container. В следующем блоке кода используется объект Loader для загрузки файла JPEG с именем test.jpg с удаленного файлового сервера. Обратите внимание, что свойство checkPolicyFile объекта LoaderContext, использованного в качестве параметра в методе load(), имеет значение false. По завершении загрузки файла код вызывает метод loaded(), который в свою очередь вызывает метод container.areInaccessibleObjectsUnderPoint(), возвращающий значение true, так как загруженное содержимое находится на недоступном домене. import flash.display.Sprite; import flash.display.Loader; import flash.system.LoaderContext; import flash.net.URLRequest; import flash.events.Event; import flash.geom.Point; var container:Sprite = new Sprite(); var urlReq:URLRequest = new URLRequest("http://localhost/RemoteFile.swf"); var ldr:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); context.checkPolicyFile = false; ldr.load(urlReq, context); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound); function loaded(event:Event):void { var pt:Point = new Point(1, 1); trace(container.areInaccessibleObjectsUnderPoint(pt)); // true } function urlNotFound(event:Event):void { trace("The URL was not found."); } В данном примере предполагается, что SWF-файл, созданный этим кодом, загружается не с того домена, что файл JPEG, и что загруженный файл JPEG занимает точку с координатами (1, 1).
flash.system.Security.allowDomain()getObjectsUnderPoint()DisplayObject.globalToLocal()DisplayObject.localToGlobal()
contains Определяет, является ли указанный объект отображения дочерним объектом экземпляра DisplayObjectContainer или самим экземпляром.Значение true, если объект child является дочерним элементом объекта DisplayObjectContainer или самого контейнера, в противном случае значение false. Booleanchildflash.display:DisplayObjectТестируемый нижестоящий объект. Определяет, является ли указанный объект отображения дочерним объектом экземпляра DisplayObjectContainer или самим экземпляром. Область поиска охватывает весь список отображения, включая данный экземпляр DisplayObjectContainer. Нижестоящие элементы второго, третьего и последующих уровней возвращают значение true. В следующем примере настраивается ряд объектов Sprite, одни из которых добавляются в списки дочерних элементов относительно других. (Объект Sprite — это тип контейнера объектов отображения.) Отношения между различными объектами можно проследить, вызвав метод contains(). import flash.display.Sprite; var sprite1:Sprite = new Sprite(); var sprite2:Sprite = new Sprite(); var sprite3:Sprite = new Sprite(); var sprite4:Sprite = new Sprite(); sprite1.addChild(sprite2); sprite2.addChild(sprite3); trace(sprite1.contains(sprite1)); // true trace(sprite1.contains(sprite2)); // true trace(sprite1.contains(sprite3)); // true trace(sprite1.contains(sprite4)); // false getChildAt Возвращает экземпляр дочернего экранного объекта, существующий в заданной позиции индекса.Исключение выдается, если индекс не существует в списке дочерних элементов. RangeErrorRangeErrorДанный дочерний объект отображения принадлежит изолированной программной среде, к которой нет доступа. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain(). SecurityErrorSecurityErrorДочерний экранный объект в заданной позиции индекса. flash.display:DisplayObjectindexintПозиция индекса дочернего объекта. Возвращает экземпляр дочернего экранного объекта, существующий в заданной позиции индекса. В следующем примере создается контейнер экранных объектов с именем container, а затем добавляются три экранных объекта в список дочерних элементов объекта container. После вызова метода getChildAt() отображаются позиции дочерних объектов. import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); var sprite2:Sprite = new Sprite(); var sprite3:Sprite = new Sprite(); container.addChild(sprite1); container.addChild(sprite2); container.addChildAt(sprite3, 0); trace(container.getChildAt(0) == sprite3); // true trace(container.getChildAt(1) == sprite1); // true trace(container.getChildAt(2) == sprite2); // true getChildByName()getChildByName Возвращает экземпляр дочернего экранного объекта с заданным именем.Данный дочерний объект отображения принадлежит изолированной программной среде, к которой нет доступа. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain(). SecurityErrorSecurityErrorДочерний экранный объект с заданным именем. flash.display:DisplayObjectnameStringИмя возвращаемого нижестоящего элемента. Возвращает экземпляр дочернего экранного объекта с заданным именем. Если заданное имя соответствует нескольким дочерним экранным объектам, метод возвращает первый из списка.

Метод getChildAt() работает быстрее метода getChildByName(). Метод getChildAt() обращается к дочернему элементу из кэшированного массива, а методу getChildByName() приходится искать дочерний элемент через связанный список.

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляются два дочерних экранных объекта. Затем код вызывает методы getChildByName() и getChildIndex() для получения позиции индекса дочернего объекта container с именем "sprite1". import flash.display.Sprite; import flash.display.DisplayObject; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); var target:DisplayObject = container.getChildByName("sprite1"); trace(container.getChildIndex(target)); // 0
getChildAt()flash.display.DisplayObject.name
getChildIndex Возвращает позицию индекса для экземпляра DisplayObject child.Инициируется, если дочерний параметр не является дочерним элементом данного объекта. ArgumentErrorArgumentErrorПозиция индекса для искомого дочернего экранного объекта. intchildflash.display:DisplayObjectИскомый экземпляр DisplayObject. Возвращает номер позиции индекса для экземпляра дочернего объекта DisplayObject. Возвращает позицию индекса для экземпляра DisplayObject child. В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляются два дочерних экранных объекта. Затем код вызывает методы getChildByName() и getChildIndex() для получения позиции индекса дочернего объекта container с именем "sprite1". import flash.display.Sprite; import flash.display.DisplayObject; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); var target:DisplayObject = container.getChildByName("sprite1"); trace(container.getChildIndex(target)); // 0 getObjectsUnderPoint Возвращает массив объектов, расположенных ниже указанной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer.Массив объектов, расположенных ниже указанной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer. Arraypointflash.geom:PointТочка, под которой следует выполнить поиск. Возвращает массив объектов, расположенных ниже указанной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer. Дочерние объекты, недоступные по соображениям безопасности, опускаются из возвращенного массива. Чтобы определить, затрагивается ли возвращенный массив ограничением с целью обеспечения безопасности, вызовите метод areInaccessibleObjectsUnderPoint().

Параметр point находится в координатной плоскости рабочей области, которая может отличаться от координатной плоскости контейнера объектов отображения (если это не рабочая область). Можно использовать методы globalToLocal() и localToGlobal() для преобразования точек между этими координатными плоскостями.

В следующем примере создается контейнер объектов отображения с именем container, а затем в него добавляется два пересекающихся дочерних объекта отображения. Затем код дважды вызывает метод getObjectsUnderPoint(): один раз с использованием точки, касающейся только одного объекта, а затем с использованием точки, в которой объекты пересекаются. Свойство length возвращаемого массива показывает количество объектов контейнера в каждой точке. import flash.display.Sprite; import flash.geom.Point; var container:Sprite = new Sprite(); var square1:Sprite = new Sprite(); square1.graphics.beginFill(0xFFCC00); square1.graphics.drawRect(0, 0, 40, 40); var square2:Sprite = new Sprite(); square2.graphics.beginFill(0x00CCFF); square2.graphics.drawRect(20, 0, 30, 40); container.addChild(square1); container.addChild(square2); var pt:Point = new Point(10, 20); var objects:Array = container.getObjectsUnderPoint(pt); trace(objects.length); // 1 pt = new Point(35, 20); objects = container.getObjectsUnderPoint(pt); trace(objects.length); // 2
areInaccessibleObjectsUnderPoint()DisplayObject.globalToLocal()DisplayObject.localToGlobal()
removeChildAt Удаляет дочерний DisplayObject из заданной позиции индекса в списке дочерних элементов DisplayObjectContainer.Данный дочерний экранный объект принадлежит изолированной программной среде, к которой нет доступа у вызывающего объекта. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain(). SecurityErrorSecurityErrorИсключение выдается, если индекс не существует в списке дочерних элементов. RangeErrorRangeErrorУдаленный экземпляр DisplayObject. flash.display:DisplayObjectindexintУдаляемый индекс нижестоящего элемента DisplayObject. Удаляет дочерний экранный объект в заданной позиции index из экземпляра DisplayObjectContainer. Удаляет дочерний DisplayObject из заданной позиции index в списке дочерних объектов DisplayObjectContainer. Свойство parent удаленного дочернего элемента получает значение null, а сам объект очищается, если нет других ссылок на дочерние элементы. Позиции индекса экранных объектов, расположенных над дочерним элементом в DisplayObjectContainer уменьшаются на 1.

Сборщик мусора перераспределяет неиспользуемый объем памяти. Когда на переменную или объект больше нет ссылок или он хранится в другом месте, сборщик мусора очищает и утилизирует память, которую он занимал, при условии отсутствия ссылок

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляются два дочерних экранных объекта. Затем код показывает, что при вызове метода removeChildAt() для удаления элемента на самой нижней позиции индекса (0) все остальные дочерние объекты в списке перемещаются на одну позицию вниз. import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); trace(container.numChildren) // 2 container.removeChildAt(0); trace(container.numChildren) // 1 trace(container.getChildAt(0).name); // sprite2
removeChild Удаляет заданный объект child DisplayObject из списка дочерних элементов экземпляра DisplayObjectContainer.Инициируется, если дочерний параметр не является дочерним элементом данного объекта. ArgumentErrorArgumentErrorЭкземпляр DisplayObject, передаваемый в параметр child. flash.display:DisplayObjectchildflash.display:DisplayObjectУдаляемый экземпляр DisplayObject. Удаляет дочерний экранный объект из экземпляра DisplayObjectContainer. Удаляет заданный объект child DisplayObject из списка дочерних элементов экземпляра DisplayObjectContainer. Свойство parent удаленного дочернего элемента получает значение null, а сам объект утилизуется в ходе «сборки мусора», если отсутствуют другие ссылки на дочерний элемент. Позиции индекса экранных объектов, расположенных над дочерним элементом в DisplayObjectContainer уменьшаются на 1.

Сборщик мусора перераспределяет неиспользуемый объем памяти. Когда на переменную или объект больше нет ссылок или он хранится в другом месте, сборщик мусора очищает и утилизирует память, которую он занимал, при условии отсутствия ссылок

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляются два дочерних экранных объекта. Для объекта container добавляется прослушиватель событий, чтобы при нажатии пользователем на дочерний объект контейнера, метод removeChild() удалял его из списка дочерних объектов контейнера. import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); addChild(container); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(120, 40, 40); container.addChild(circle1); container.addChild(circle2); container.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { container.removeChild(DisplayObject(event.target)); }
setChildIndex Изменяет положение существующего дочернего элемента в DisplayObjectContainer.Исключение выдается, если индекс не существует в списке дочерних элементов. RangeErrorRangeErrorИнициируется, если дочерний параметр не является дочерним элементом данного объекта. ArgumentErrorArgumentErrorchildflash.display:DisplayObjectДочерний экземпляр DisplayObject, для которого нужно изменить номер индекса. indexintПолученный в результате номер индекса для дочернего экранного объекта child. Изменяет номер позиции индекса для существующего дочернего элемента. Изменяет положение существующего дочернего элемента в DisplayObjectContainer. Это отражается на иерархическом представлении дочерних объектов. Так, в следующем примере показано три разных объекта с именами a, b и c в позициях индекса 0, 1 и 2 соответственно.

Когда используется метод setChildIndex() и указывается уже занятая позиция индекса, меняются только позиции между прежней и новой позицией экранного объекта. Все остальные остаются без изменения. Если дочерний объект перемещается на более НИЗКУЮ позицию, позиции всех дочерних объектов между этими позициями станут на 1 ВЫШЕ. Если дочерний объект перемещается на более ВЫСОКУЮ позицию, позиции всех дочерних объектов между этими позициями станут на 1 НИЖЕ. Например, если контейнер экранных объектов из предыдущего примера имеет имя container, можно поменять позициями экранные объекты с именами a и b, вызвав следующий код:

container.setChildIndex(container.getChildAt(1), 0);

В результате этого объекты выстраиваются следующим образом:

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется три немного пересекающихся дочерних экранных объекта. Когда пользователь нажимает на один из этих объектов, метод clicked() вызывает метод setChildIndex(), чтобы переместить нажатый объект на верхнюю позицию в списке отображения объекта container. import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); addChild(container); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFF0000); circle1.graphics.drawCircle(40, 40, 40); circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00FF00); circle2.graphics.drawCircle(100, 40, 40); circle2.addEventListener(MouseEvent.CLICK, clicked); var circle3:Sprite = new Sprite(); circle3.graphics.beginFill(0x0000FF); circle3.graphics.drawCircle(70, 80, 40); circle3.addEventListener(MouseEvent.CLICK, clicked); container.addChild(circle1); container.addChild(circle2); container.addChild(circle3); addChild(container); function clicked(event:MouseEvent):void { var circle:Sprite = Sprite(event.target); var topPosition:uint = container.numChildren - 1; container.setChildIndex(circle, topPosition); }
addChildAt()getChildIndex()
swapChildrenAt Меняет местами (в порядке «от начала к концу») дочерние объекты, расположенные в двух заданных позициях индекса в списке дочерних элементов.Если ни один индекс не существует в списке дочерних элементов. RangeErrorRangeErrorindex1intПозиция индекса первого дочернего объекта. index2intПозиция индекса второго дочернего объекта. Меняет местами (в порядке «от начала к концу») дочерние объекты, расположенные в двух заданных позициях индекса в списке дочерних объектов. Все остальные дочерние объекты в контейнере экранных объектов остаются на прежних позициях. В следующем примере создается контейнер экранных объектов с именем container, затем в него добавляются три дочерних экранных объекта, после чего показывается, как вызов методаswapChildrenAt() изменяет список отображения контейнера. import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; var sprite3:Sprite = new Sprite(); sprite3.name = "sprite3"; container.addChild(sprite1); container.addChild(sprite2); container.addChild(sprite3); trace(container.getChildAt(0).name); // sprite1 trace(container.getChildAt(1).name); // sprite2 trace(container.getChildAt(2).name); // sprite3 container.swapChildrenAt(0, 2); trace(container.getChildAt(0).name); // sprite3 trace(container.getChildAt(1).name); // sprite2 trace(container.getChildAt(2).name); // sprite1 swapChildren Меняет местами (в порядке «от начала к концу») два заданных дочерних объекта.Выдается исключение, если любой из дочерних параметров не является дочерним для данного объекта. ArgumentErrorArgumentErrorchild1flash.display:DisplayObjectПервый дочерний объект. child2flash.display:DisplayObjectВторой дочерний объект. Меняет местами (в порядке «от начала к концу») два заданных дочерних объекта. Все остальные дочерние объекты в контейнере экранных объектов остаются на прежних позициях. В следующем примере создается контейнер экранных объектов с именем container, затем в него добавляются два дочерних экранных объекта, после чего иллюстрируется результат вызова метода swapChildren(). import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); trace(container.getChildAt(0).name); // sprite1 trace(container.getChildAt(1).name); // sprite2 container.swapChildren(sprite1, sprite2); trace(container.getChildAt(0).name); // sprite2 trace(container.getChildAt(1).name); // sprite1 mouseChildren Определяет, поддерживают ли дочерние объекты события мыши или других устройств пользовательского ввода.Boolean Определяет, поддерживают ли дочерние объекты события мыши или других устройств пользовательского ввода. Если объект поддерживает эти события, пользователь может взаимодействовать с ним с помощью мыши или другого устройства ввода. Значение по умолчанию — true.

Это свойство удобно использовать, когда кнопка создается с помощью экземпляра класса Sprite (а не класса SimpleButton). Когда для создания кнопки используется экземпляр Sprite, при желании можно украсить кнопку с помощью метода addChild(), добавив дополнительные экземпляры Sprite. Этот процесс может вызывать непредвиденное поведение событий мыши, так как целевым объектом события мыши вместо родительского экземпляра могут стать экземпляры Sprite, добавленные в качестве дочерних. Чтобы родительский экземпляр гарантированно был целевым объектом событий мыши, можно задать его свойству mouseChildren значение false.

При настройке данного свойства события не отправляются. Чтобы создать интерактивные функции, необходимо использовать метод addEventListener().

В следующем примере настраивается объект Sprite (тип контейнера экранных объектов) с именем container и показывается, что когда свойству mouseChildren задается значение false, целью события mouseClick является объект container, а не его дочерние элементы. import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); container.name = "container"; addChild(container); var circle:Sprite = new Sprite(); circle.name = "circle"; circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(40, 40, 40); container.addChild(circle); container.mouseChildren = false; container.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace(event.target.name); // container }
flash.display.Sprite.buttonModeflash.events.EventDispatcher.addEventListener()
numChildren Возвращает число дочерних элементов данного объекта.int Возвращает число дочерних элементов данного объекта. В следующем примере настраиваются два объекта Sprite с именами container1 и container2. Спрайт — это тип контейнера экранных объектов. В примере вызывается метод addChild() для создания иерархии отображения: container1 является дочерним элементомcontainer2, а два других экранных объекта, circle1 и circle2, являются дочерними элементами container1. При вызове метода trace() показывается число дочерних элементов каждого объекта. Обратите внимание, что дочерние элементы второго уровня не включены в счетчик numChildren. import flash.display.Sprite; var container1:Sprite = new Sprite(); var container2:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(80, 40, 40); container2.addChild(container1); container1.addChild(circle1); container1.addChild(circle2); trace(container1.numChildren); // 2 trace(container2.numChildren); // 1 trace(circle1.numChildren); // 0 trace(circle2.numChildren); // 0 tabChildren Определяет, включен ли переход между нижестоящими элементами объекта с помощью клавиши Tab.BooleanПри вызове данного свойства объекта Stage выдается исключение. Объект Stage не реализует это свойство. IllegalOperationErrorflash.errors:IllegalOperationError Определяет, включен ли переход между дочерними элементами объекта с помощью клавиши Tab. Включает или отключает переход между дочерними объектами с помощью клавиши Tab. Значение по умолчанию — true.

Примечание. Свойство tabChildren не следует использовать с Flex. Вместо него следует использовать свойство mx.core.UIComponent.hasFocusableChildren.

В следующем примере создается контейнер экранных объектов container1 и в его список отображения добавляется два экранных объекта: circle1 и circle2. В этом примере для tabChildren дочерних объектов задается значение false, чтобы последовательностью перехода посредством клавиши Tab можно было управлять с помощью tabIndex. import flash.display.Sprite; var container:Sprite = new Sprite(); container.tabChildren = false; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.tabIndex = 1; var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(120, 40, 40); circle2.tabIndex = 0; container.addChild(circle1); container.addChild(circle2); Чтобы просмотреть результаты данного примера, файл нужно скомпилировать и запустить. Выбрав один из кругов, можно нажать клавишу TAB, чтобы перевести фокус на другой экранный объект (на что указывает желтый прямоугольник).
textSnapshot Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer.flash.text:TextSnapshot Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer. Следующий пример поддерживается только в среде разработки Flash. Flex не имеет возможностей добавления статического текста в файл. Чтобы соответствующим образом подготовить файл Flash, нужно добавить одно или несколько текстовых полей в первый кадр ролика. Затем вставьте следующий сценарий в первый кадр и запустите файл. Будет выведен добавленный вами статический текст. trace(this.textSnapshot.getText(0, this.textSnapshot.charCount)); flash.text.TextSnapshot
GraphicsGradientFill Определяет заливку градиентом.flash.display:IGraphicsFillflash.display:IGraphicsDataObject Определяет заливку градиентом.

Используйте объект GraphicsGradientFill совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsGradientFill эквивалентно вызову метода Graphics.beginGradientFill().

flash.display.Graphics.beginGradientFill()flash.display.Graphics.drawGraphicsData()GraphicsGradientFill Создает новый объект GraphicsGradientFill.typeStringlinearЗначение из класса GradientType, определяющее, какой тип градиента должен использоваться: GradientType.LINEAR или GradientType.RADIAL. colorsArraynullМассив шестнадцатеричных значений цвета RGB, который должен использоваться в градиенте; например, красный — 0xFF0000, синий — 0x0000FF и т.д. Можно указать до 15 цветов. Для каждого цвета необходимо указать соответствующее значение в параметрах альфа-канала и пропорций. alphasArraynullМассив значений альфа-канала для соответствующих цветов в массиве цветов. Действительные значения — от 0 до 1. Если значение меньше 0, то используется 0. Если значение больше 1, то используется 1. ratiosArraynullМассив значений распределения цветов; действительными являются значения от 0 до 255. Это значение определяет процент ширины, на которой цвет представлен на 100% Значение 0 обозначает левую позицию окна градиента, а 255 — правую. matrixnullМатрица преобразования, определенная классом flash.geom.Matrix. Класс flash.geom.Matrix включает метод createGradientBox(), позволяющий удобно настроить матрицу для использования с методом beginGradientFill(). spreadMethodpadЗначение из класса SpreadMethod, определяющее метод нанесения, который должен использоваться: SpreadMethod.PAD, SpreadMethod.REFLECT или SpreadMethod.REPEAT. interpolationMethodStringrgbЗначение из класса InterpolationMethod, указывающее, какое значение должно использоваться: InterpolationMethod.LINEAR_RGB или InterpolationMethod.RGB focalPointRatioNumber0.0Число, управляющее местоположением фокуса градиента. Значение 0 устанавливает фокус в центр. Значение 1 означает, что фокус находится у одного края окружности градиента. Значение -1 устанавливает фокус у другого края окружности градиента. Значение меньше -1 или больше 1 округляется до -1 или 1 соответственно. Создает новый объект GraphicsGradientFill. flash.display.Graphics.beginGradientFill()flash.display.GradientTypeflash.geom.Matrixflash.display.SpreadMethodflash.display.InterpolationMethodalphas Массив значений альфа-канала для соответствующих цветов в массиве цветов.Array Массив значений альфа-канала для соответствующих цветов в массиве цветов. Действительны значения от 0 до 1. Если значение меньше 0, то используется 0. Если значение больше 1, то используется 1. colors Массив шестнадцатеричных значений цвета RGB для применения в градиенте.Array Массив шестнадцатеричных значений цвета RGB для применения в градиенте. Например, красный задается значением 0xFF0000, синий — значением 0x0000FF и т.д. Можно указать до 15 цветов. Для каждого цвета необходимо указать соответствующее значение в свойствах альфа-канала и пропорций. focalPointRatio Число, управляющее местоположением фокуса градиента.Number Число, управляющее местоположением фокуса градиента. Значение 0 устанавливает фокус в центр. Значение 1 устанавливает фокус у одного края окружности градиента. Значение -1 устанавливает фокус у другого края окружности градиента. Значение меньше -1 или больше 1 округляется до -1 или 1 соответственно. Следующий пример иллюстрирует случай, когда для focalPointRatio задано значение 0,75:

matrix Матрица преобразования, определенная классом Matrix.flash.geom:Matrix Матрица преобразования, определенная классом Matrix. Класс flash.geom.Matrix включает метод createGradientBox(), позволяющий настроить матрицу для использования с методом beginGradientFill(). flash.geom.Matrix.createGradientBox()ratios Массив значений распределения цветов.Array Массив значений распределения цветов. Действительны значения от 0 до 255. Это значение определяет процент ширины, на которой цвет представлен на 100% Значение 0 обозначает левую позицию окна градиента, а 255 — правую.

Примечание. Это значение показывает позиции в окне градиента, а не в координатной плоскости конечного градиента, которая может быть шире или уже окна градиента. Укажите величину каждого значения в свойстве colors.

Например, для линейного градиента, состоящего из двух цветов (синего и зеленого) приводится пример, в котором представлено размещение цветов в градиенте, созданном с использованием разных значений массива ratios:

ratiosГрадиент[0, 127][0, 255][127, 255]

Значения в массиве должны увеличиваться последовательно, например [0, 63, 127, 190, 255].

interpolationMethod Значение класса InterpolationMethod, определяющее, какое должно использоваться значение.String Значение класса InterpolationMethod, определяющее, какое значение должно использоваться. Допустимыми значениями являются: InterpolationMethod.LINEAR_RGB или InterpolationMethod.RGB

Например, рассмотрим простой линейный градиент между двумя цветами (когда параметру spreadMethod задано значение SpreadMethod.REFLECT). Разные методы интерполяции влияют на внешний вид следующим образом:

InterpolationMethod.LINEAR_RGBInterpolationMethod.RGB
flash.display.InterpolationMethod
spreadMethod Значение класса SpreadMethod, указывающее метод нанесения.String Значение класса SpreadMethod, указывающее метод нанесения. Допустимыми значениями являются: SpreadMethod.PAD, SpreadMethod.REFLECT или SpreadMethod.REPEAT.

Ниже приведен пример простого линейного градиента между двумя цветами:

import flash.geom.* import flash.display.* var fillType:String = GradientType.LINEAR; var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [1, 1]; var ratios:Array = [0x00, 0xFF]; var matr:Matrix = new Matrix(); matr.createGradientBox(20, 20, 0, 0, 0); var spreadMethod:String = SpreadMethod.PAD; this.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod); this.graphics.drawRect(0,0,100,100);

В этом примере используется метод нанесения SpreadMethod.PAD, и заливка градиентом выглядит следующим образом:

При использовании метода нанесения SpreadMethod.REFLECT заливка градиентом выглядит следующим образом:

При использовании метода нанесения SpreadMethod.REPEAT заливка градиентом выглядит следующим образом:

flash.display.SpreadMethod
type Значение из класса GradientType, определяющее, какой тип градиента должен использоваться.String Значение из класса GradientType, определяющее, какой тип градиента должен использоваться. Допустимыми значениями являются GradientType.LINEAR или GradientType.RADIAL. flash.display.GradientType
Sprite Класс Sprite является базовым стандартным блоком списка отображения: это узел списка отображения, который способен отображать графику, а также может содержать дочерние элементы.Базовые экранный объект для объектов, создаваемых ActionScript. flash.display:DisplayObjectContainer Класс Sprite является базовым стандартным блоком списка отображения: это узел списка отображения, который способен отображать графику, а также может содержать дочерние элементы.

Объект Sprite напоминает фрагмент ролика, но не имеет временной шкалы. Sprite — это подходящий базовый класс для объектов, не требующих временной шкалы. Например, будет логично использовать класс Sprite в качестве базы для компонентов пользовательского интерфейса, для которых обычно не используется временная шкала.

Класс Sprite является новым в ActionScript 3.0. Это альтернатива для функций класса MovieClip, сохраняющая все возможности предыдущих версий ActionScript с целью обеспечения совместимости.

В следующем примере класс SpriteExample используется для отображения оранжевого квадрата в рабочей области, и при каждом щелчке или перетаскивании квадрата пользователем отправляется событие. Это можно сделать, выполнив следующие действия.
  1. Объявите свойство size (100 x 100 пикселей) и цвет фона (оранжевый) для дальнейшего использования при рисовании квадрата.
  2. После этого конструктор создает новый объект Sprite child и использует его для добавления двух прослушивателей событий и связанных с ними методов: mouseDownHandler() и mouseUpHandler().
  3. Затем объект Sprite child передается методу draw(), который рисует оранжевый квадрат.
  4. После этого дочерний объект помещается в список отображения через вызов метода addChild().
  5. Прослушиватели событий работают следующим образом.
    • mouseDownHandler(): когда пользователь щелкает объект Sprite, этот метод добавляет прослушиватель события mouseMove, метод mouseMoveHandler(), обрабатывающий перемещение мыши. Затем вызывается метод startDrag(), позволяющий перетаскивать объект Sprite.
    • mouseUpHandler(): когда кнопка мыши отпускается, прослушиватель события mouseMove удаляется и вызывается метод stopDrag(), фиксирующий оранжевый квадрат на месте.
    • mouseMoveHandler: пока удерживается левая кнопка мыши, этот метод предписывает проигрывателю непрерывное перерисовывание оранжевого квадрата.

Примечание. Каждый метод прослушивателя событий объявляет локальную переменную sprite, которая назначается свойству target события.

package { import flash.display.Sprite; import flash.events.*; public class SpriteExample extends Sprite { private var size:uint = 100; private var bgColor:uint = 0xFFCC00; public function SpriteExample() { var child:Sprite = new Sprite(); child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); draw(child); addChild(child); } private function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler"); var sprite:Sprite = Sprite(event.target); sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.startDrag(); } private function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler"); var sprite:Sprite = Sprite(event.target); sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.stopDrag(); } private function mouseMoveHandler(event:MouseEvent):void { trace("mouseMoveHandler"); event.updateAfterEvent(); } private function draw(sprite:Sprite):void { sprite.graphics.beginFill(bgColor); sprite.graphics.drawRect(0, 0, size, size); sprite.graphics.endFill(); } } }
Sprite Создает новый экземпляр Sprite. Создает новый экземпляр Sprite. Создав экземпляр Sprite вызовите метод DisplayObjectContainer.addChild() или DisplayObjectContainer.addChildAt(), чтобы добавить Sprite в родительский объект DisplayObjectContainer. startDrag Позволяет пользователю перетаскивать заданный спрайт (растровый графический объект, легко перемещаемый по экрану).lockCenterBooleanfalseОпределяет, фиксируется ли перетаскиваемый спрайт в центре положения указателя (true) или в точке спрайта, на которой впервые щелкнул мышью пользователь (false). boundsflash.geom:RectanglenullЗначение относительно координат родительского объекта Sprite, задающее для него закрепленный прямоугольник. Позволяет пользователю перетаскивать заданный спрайт (растровый графический объект, легко перемещаемый по экрану). Спрайт можно перетаскивать до явной остановки через вызов метода Sprite.stopDrag() или до того, как можно будет перетаскивать другой спрайт. Одновременно можно перетаскивать только один спрайт.

Трехмерные объекты отображения управляются указателем, а метод Sprite.startDrag() позволяет перемещать объект в трехмерной плоскости, определенной экранным объектом. Или, если экранный объект является двумерным объектом и дочерним элементом трехмерного объекта, двумерный объект перемещается в трехмерной плоскости, определенной трехмерным родительским объектом.

В следующем примере создается спрайт circle и два спрайта target. Метод startDrag() вызывается для спрайта circle, когда пользователь помещает курсор на спрайт и нажимает кнопку мыши, а метод stopDrag() вызывается, когда пользователь отпускает кнопку мыши. Это позволяет пользователю перетащить спрайт. При отпускании кнопки мыши вызывается метод mouseRelease(), который в свою очередь отслеживает name объекта, dropTarget, к которому пользователь перетащил спрайт circle: import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
dropTargetstopDrag()
startTouchDrag Позволяет перетаскивать указанный спрайт на устройстве с сенсорным экраном.touchPointIDintЦелое число, которое необходимо назначить точке прикосновения. lockCenterBooleanfalseОпределяет, фиксируется ли перетаскиваемый спрайт в центре положения указателя (true) или в точке спрайта, на которой впервые щелкнул мышью пользователь (false). boundsflash.geom:RectanglenullЗначение относительно координат родительского объекта Sprite, задающее для него закрепленный прямоугольник. Позволяет перетаскивать указанный спрайт на устройстве с сенсорным экраном. Спрайт можно перетаскивать до явной остановки через вызов метода Sprite.stopTouchDrag() или до того, как можно будет перетаскивать другой спрайт. Одновременно можно перетаскивать только один спрайт.

Трехмерные объекты отображения управляются указателем, а метод Sprite.stopTouchDrag() позволяет перемещать объект в трехмерной плоскости, определенной экранным объектом. Или, если экранный объект является двумерным объектом и дочерним элементом трехмерного объекта, двумерный объект перемещается в трехмерной плоскости, определенной трехмерным родительским объектом.

Следующий пример демонстрирует функции, использующие свойства startTouchDrag и stopTouchDrag для обработки событий touchBegin и touchEnd. В качестве значения touchPointID используется значение, заданное объекту события. Параметр bounds представляет собой прямоугольник, определяющий границы родительского экранного объекта (bg является экранным объектом, содержащим MySprite). MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); }
dropTargetstopTouchDrag()flash.ui.Multitouchflash.events.TouchEvent
stopDrag Завершает метод startDrag(). Завершает метод startDrag(). Спрайт, созданный перетаскиваемым с помощью метода startDrag(), остается таковым до добавления метода stopDrag() или до того, как другой спрайт станет перетаскиваемым. Одновременно можно перетаскивать только один спрайт. В следующем примере создается спрайт circle и два спрайта target. Метод startDrag() вызывается для спрайта circle, когда пользователь помещает курсор на спрайт и нажимает кнопку мыши, а метод stopDrag() вызывается, когда пользователь отпускает кнопку мыши. Это позволяет пользователю перетащить спрайт. При отпускании кнопки мыши вызывается метод mouseRelease(), который в свою очередь отслеживает name объекта, dropTarget, к которому пользователь перетащил спрайт circle: import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); } dropTargetstartDrag()stopTouchDrag Завершает выполнение метода startTouchDrag(), используется для устройств с сенсорным экраном.touchPointIDintЦелое число, назначенное точке прикосновения в методе startTouchDrag. Завершает выполнение метода startTouchDrag(), используется для устройств с сенсорным экраном. Спрайт, сделанный перетаскиваемым с помощью метода startTouchDrag(), остается таковым до добавления метода stopTouchDrag() или до того, как другой спрайт станет перетаскиваемым. Одновременно можно перетаскивать только один спрайт. Следующий пример демонстрирует функции, использующие свойства startTouchDrag и stopTouchDrag для обработки событий touchBegin и touchEnd. В качестве значения touchPointID используется значение, заданное объекту события. Параметр bounds представляет собой прямоугольник, определяющий границы родительского экранного объекта (bg является экранным объектом, содержащим MySprite). MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); } dropTargetstartTouchDrag()flash.ui.Multitouchflash.events.TouchEventbuttonMode Задает режим кнопки данного спрайта.BooleanЗадает режим кнопки данного спрайта. Задает режим кнопки данного спрайта. При значении true этот спрайт ведет себя как кнопка, то есть запускает отображение курсора в виде руки, когда над ним проходит указатель, и может получать событие click при нажатии клавиш Enter и «Пробел», когда спрайт находится в фокусе. Можно отменить отображение курсора в виде руки, задав свойству useHandCursor значение false, в этом случае будет отображаться указатель.

В целом, для создания кнопок лучше использовать класс SimpleButton, однако свойство buttonMode можно использовать для придания спрайту некоторых функций кнопок. Чтобы включить спрайт в последовательность перехода посредством клавиши Tab, задайте свойству tabEnabled (унаследованному от класса InteractiveObject и имеющему по умолчанию значение false) значение true. Кроме того, подумайте, должны ли дочерние элементы спрайта реагировать на пользовательский ввод. Большинство кнопок блокируют воздействие пользовательского ввода на дочерние объекты, так как это препятствует нормальному потоку событий. Чтобы отключить воздействие пользовательского ввода на дочерние объекты, необходимо задать свойству mouseChildren (унаследованному от класса DisplayObjectContainer) значение false.

Если свойство buttonMode используется с классом MovieClip (подклассом класса Sprite), кнопка может получить дополнительные функции. Если включить кадры с подписями _up, _over и _down, проигрыватель Flash Player передает автоматические изменения состояния (функция, подобная возможностям фрагментов роликов, используемых в качестве кнопок, в предыдущих версиях ActionScript). Эти автоматические изменения состояния недоступны для спрайтов, так как у них нет временной шкалы и, следовательно, кадров для добавления подписей.

В следующем примере создается два спрайта, для одного из которых свойству buttonMode задается значение true, а для другого — false. Когда приложение компилируется и запускается, оба спрайта реагируют на события мыши, но только тот, для которого buttonMode имеет значение true, использует курсор в виде руки и включается в последовательность перехода посредством клавиши Tab. import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
SimpleButtonSprite.useHandCursorInteractiveObject.tabEnabledDisplayObjectContainer.mouseChildren
dropTarget Определяет экранный объект, над которым перетаскивается спрайт либо на котором спрайт был отпущен.flash.display:DisplayObjectОпределяет объект DisplayObject, над которым или на который перетаскивается спрайт. Определяет экранный объект, над которым перетаскивается спрайт либо на котором спрайт был отпущен. В следующем примере создается спрайт circle и два спрайта target. Метод startDrag() вызывается для спрайта circle, когда пользователь помещает курсор на спрайт и нажимает кнопку мыши, а метод stopDrag() вызывается, когда пользователь отпускает кнопку мыши. Это позволяет пользователю перетащить спрайт. При отпускании кнопки мыши вызывается метод mouseRelease(), который в свою очередь отслеживает name объекта, dropTarget, к которому пользователь перетащил спрайт circle: import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); } startDrag()stopDrag()graphics Задает объект Graphics, принадлежащий данному спрайту, в котором могут выполняться команды векторного рисования.flash.display:GraphicsЗадает объект Graphics. Задает объект Graphics, принадлежащий данному спрайту, в котором могут выполняться команды векторного рисования. В следующем примере создается спрайт circle и используется его свойство graphics для отрисовки круга с желтой заливкой (0xFFCC00). import flash.display.Sprite; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(40, 40, 40); addChild(circle); hitArea Определяет другой спрайт в качестве области щелчка для спрайта.flash.display:Sprite Определяет другой спрайт в качестве области щелчка для спрайта. Если свойство hitArea не существует или ему задано значение null или undefined, то в качестве области щелчка используется сам спрайт. Значение свойства hitArea может быть ссылкой на объект Sprite.

Свойство hitArea можно изменить в любой момент; модифицированный спрайт немедленно начинает использовать новое поведение области щелчка. Спрайт, настроенный в качестве области щелчка не обязательно должен быть видимым; его графическая форма, оставаясь невидимой, все равно обнаруживается в качестве области щелчка.

Примечание. Необходимо задать значение false свойству mouseEnabled спрайта, настроенного в качестве области щелчка. В противном случае кнопка спрайта может не работать, так как спрайт, настроенный в качестве области щелчка, получает события пользовательского ввода вместо кнопки спрайта.

В следующем примере создается спрайт circle и спрайт square. Спрайт square является областью щелчка hitArea для спрайтаcircle. Поэтому когда пользователь нажимает на спрайт square, спрайт circle отправляет событие click. import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var square:Sprite = new Sprite(); square.graphics.beginFill(0xCCFF00); square.graphics.drawRect(200, 0, 100, 100); circle.hitArea = square; square.mouseEnabled = false; circle.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void{ trace(event.target == circle); // true trace(event.target == square); // false } addChild(circle); addChild(square);
soundTransform Управляет звуком в данном спрайте.flash.media:SoundTransform Управляет звуком в данном спрайте.

Примечание. Это свойство не затрагивает содержимое HTML объекта HTMLControl (в Adobe AIR).

В следующем примере создается спрайт с именем container, и в его список дочерних объектов добавляется объект Loader. Объект Loader загружает SWF-файл. Когда пользователь щелкает ссылку в текстовом поле tf со значением true, метод mute() задает свойство volume свойства soundTransform спрайта container. import flash.display.Sprite; import flash.display.Loader; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.text.TextField; import flash.media.SoundTransform; var container:Sprite = new Sprite(); addChild(container); var ldr:Loader = new Loader; var urlReq:URLRequest = new URLRequest("SoundPlayer.swf"); ldr.load(urlReq); container.addChild(ldr); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound); var tf:TextField = new TextField(); tf.htmlText = "<a href = 'event:Mute'>Mute / Unmute</a>"; addChild(tf); var mySoundTransform:SoundTransform = new SoundTransform(); mySoundTransform.volume = 1; tf.addEventListener(MouseEvent.CLICK, mute); function mute(event:MouseEvent):void { if (mySoundTransform.volume == 0) { mySoundTransform.volume = 1; } else { mySoundTransform.volume = 0; } container.soundTransform = mySoundTransform; } function urlNotFound(event:IOErrorEvent):void { trace("The URL was not found."); }
flash.media.SoundTransform
useHandCursor Логическое значение, определяющее, должен ли отображаться курсор в виде руки при наведении указателя мыши на спрайт, в котором свойство buttonMode имеет значение true.BooleanЛогическое значение, определяющее, должен ли отображаться курсор в виде руки при наведении указателя мыши на спрайт, в котором свойство buttonMode имеет значение true. Логическое значение, определяющее, должен ли отображаться курсор в виде руки при наведении указателя мыши на спрайт, в котором свойство buttonMode имеет значение true. Свойство useHandCursor по умолчанию имеет значение true. Когда useHandCursor имеет значение true, курсор в виде руки, используемый для кнопок, появляется при наведении указателя на спрайт-кнопку. Если же useHandCursor имеет значение false, используется указатель «стрелка».

Свойство useHandCursor можно изменить в любое время; модифицированный спрайт немедленно принимает новый вид курсора.

Примечание. Если во Flex или Flash Builder спрайт имеет дочерние спрайты, может потребоваться задание для свойства mouseChildren значения false. Например, если необходимо, чтобы курсор в виде руки отображался над элементом управления Flex <mx:Label>, задайте для свойств useHandCursor и buttonMode значение true, а для свойства mouseChildren значение false.

В следующем примере создается два спрайта, и свойству buttonMode обоих задается значение true, однако для одного из них свойство useHandCursor имеет значение true, а для другого — false. При компиляции и запуске приложения оба спрайта ведут себя как кнопки (включенные в последовательность перехода с помощью клавиши Tab), но только курсор в виде руки использует спрайт со свойством useHandCursor в значении true. import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.useHandCursor = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = true; circle2.useHandCursor = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
buttonModeDisplayObjectContainer.mouseChildren
GraphicsBitmapFill Определяет заливку растровым изображением.flash.display:IGraphicsFillflash.display:IGraphicsDataObject Определяет заливку растровым изображением. Растровое изображение может смягчаться, повторяться или располагаться в виде мозаики для заполнения области. Его также можно изменять с помощью матрицы преобразования.

Используйте объект GraphicsBitmapFill совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsBitmapFill эквивалентно вызову метода Graphics.beginBitmapFill().

flash.display.Graphics.drawGraphicsData()flash.display.Graphics.beginBitmapFill()GraphicsBitmapFill Создает новый объект GraphicsBitmapFill.bitmapDataflash.display:BitmapDatanullПрозрачное или матовое растровое изображение, содержащее отображаемые биты. matrixflash.geom:MatrixnullОбъект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в растровом изображении. repeatBooleantrueПри значении true растровое изображение повторяется по шаблону мозаики. При значении false растровое изображение не повторяется, а его края используются для заливки всей области, выходящей за его пределы. smoothBooleanfalseПри выборе значения false визуализируются растровые изображения, увеличенные при помощи алгоритма ближайшего соседнего пикселя, которые могут выглядеть нечетко. При выборе значения true увеличенное растровое изображение визуализируется с помощью билинейного алгоритма. Обычно процедура визуализации с помощью алгоритма ближайшего соседа требует меньше времени. Создает новый объект GraphicsBitmapFill. flash.display.Graphics.beginBitmapFill()bitmapData Прозрачное или матовое растровое изображение.flash.display:BitmapData Прозрачное или матовое растровое изображение. flash.display.BitmapDatamatrix Объект матрицы (из класса flash.geom.Matrix), определяющий преобразования в растровом изображении.flash.geom:Matrix Объект матрицы (из класса flash.geom.Matrix), определяющий преобразования в растровом изображении. Например, следующая матрица поворачивает растровое изображение на 45 градусов (пи/4 радиан): matrix = new flash.geom.Matrix(); matrix.rotate(Math.PI / 4); flash.geom.Matrixrepeat Указывает, будет ли растровое изображение повторяться по шаблону мозаики.Boolean Указывает, будет ли растровое изображение повторяться по шаблону мозаики.

При значении true растровое изображение повторяется по шаблону мозаики. При значении false растровое изображение не повторяется, а его края используются для заливки всей области, выходящей за его пределы.

Например, рассмотрим следующее растровое изображение (рисунок «шахматная доска» 20 х 20 пикселей):

Когда для repeat задано значение true (как в следующем примере), в заливке повторяется растровое изображение:

Когда для repeat задано значение false, в заливке растровым изображением используются краевые пиксели, чтобы залить область, выходящую за пределы изображения:

smooth Указывает, применять ли алгоритм смягчения к растровому изображению.Boolean Указывает, применять ли алгоритм смягчения к растровому изображению.

При выборе значения false визуализируются растровые изображения, увеличенные при помощи алгоритма ближайшего соседнего пикселя, которые могут выглядеть нечетко. При выборе значения true увеличенное растровое изображение визуализируется с помощью билинейного алгоритма. Обычно процедура визуализации с помощью алгоритма ближайшего соседнего пикселя требует меньше времени.

GraphicsStroke Задает стиль линии или штриха.flash.display:IGraphicsStrokeflash.display:IGraphicsDataObject Задает стиль линии или штриха.

Используйте объект GraphicsStroke совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsStroke эквивалентно вызову одного из методов класса Graphics, задающего стиль линии, таких как Graphics.lineStyle(), Graphics.lineBitmapStyle() или Graphics.lineGradientStyle().

flash.display.Graphics.lineStyle()flash.display.Graphics.lineBitmapStyle()flash.display.Graphics.lineGradientStyle()flash.display.Graphics.drawGraphicsData()GraphicsStroke Создает новый объект GraphicsStroke.thicknessNumberunknownЦелое число, определяющее толщину линии в точках; допустимыми являются значения от 0 до 255. Если число не указано или параметр не определен, то линия не будет проведена. Если передается значение меньше 0, по умолчанию задается 0. Значение 0 обозначает толщину одного волоса, максимальная толщина составляет 255. Если передается значение больше 255, по умолчанию задается 255. pixelHintingBooleanfalseЛогическое значение, определяющее, следует ли выполнять хинтинг штрихов до полных пикселей. Оно влияет на позицию привязок кривой и на размер штриха линии как таковой. Если для pixelHinting задано значение true, проигрыватель Flash Player доводит ширину линии до полного пикселя. Если для pixelHinting задано значение false, в кривых и прямых линиях могут возникать разрывы. Например, на следующих рисунках показано, как проигрыватель Flash Player визуализирует два одинаковых округленных прямоугольника, которые отличаются только настройкой параметра pixelHinting в методе lineStyle() (с целью наглядности изображения увеличены на 200%):

Если значение не задано, для линии не используется хинтинг пикселей.

scaleModeStringnormalЗначение класса LineScaleMode, задающее режим масштабирования:
  • LineScaleMode.NORMAL — Всегда масштабировать толщину линии при масштабировании объекта (по умолчанию).
  • LineScaleMode.NONE — Никогда не масштабировать толщину линии.
  • LineScaleMode.VERTICAL — Не масштабировать толщину линии, если объект масштабируется только по вертикали. Например, рассмотрим следующие окружности, нарисованные линией толщиной в 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.VERTICAL. Масштаб окружности слева изменен только по вертикали, а окружности справа — и по вертикали и по горизонтали.

  • LineScaleMode.HORIZONTAL — Не масштабировать толщину линии, если объект масштабируется только по горизонтали. Например, рассмотрим следующие окружности, нарисованные линией толщиной 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.HORIZONTAL. Масштаб окружности слева изменен только по горизонтали, а окружности справа — и по вертикали и по горизонтали.

capsStringnoneЗначение класса CapsStyle, задающее тип концов линии. Допустимые значения: CapsStyle.NONE, CapsStyle.ROUND и CapsStyle.SQUARE. Если значение не указано, Flash Player использует круглые концы.

Следующий пример иллюстрирует разные параметры класса capsStyle. На рисунке представлено три синих линии толщиной 30 (к которым применяется capsStyle), а поверх них нанесена черная линия толщиной 1 (к которой capsStyle не применяется):

jointsStringroundЗначение класса JointStyle, задающее тип стыка на углах. Допустимые значения: JointStyle.BEVEL, JointStyle.MITER и JointStyle.ROUND. Если значение не указано, Flash Player использует круглые стыки.

Следующий пример иллюстрирует разные параметры joints. На рисунке представлено три синих линии толщиной 30 (к которым применяется jointStyle), а поверх них нанесена черная линия толщиной 1 (к которой jointStyle не применяется):

Примечание. Для joints типа JointStyle.MITER можно использовать параметр miterLimit, чтобы ограничить длину уголка.

miterLimitNumber3.0Число, указывающее предел усечения уголка. Допустимыми являются значения в диапазоне 1-255 (остальные значения округляются до 1 или 255). Это значение используется, только если для jointStyle выбран тип "miter". Значение miterLimit – это длина, до которой может продлеваться уголок после точки стыка. Значение выражает фактор толщины линии. Например, при факторе miterLimit, равном 2,5, и толщине в 10 пикселов длина уголка достигает 25 пикселов.

Рассмотрим следующие углы, все составленные из линий с thickness 20, но с разными значениями miterLimit: 1, 2 и 4. Поверх углов для наглядности нанесены черные линии, показывающие точки стыка:

Обратите внимание, что данное значение miterLimit имеет специфический максимальный угол для усечения «уголка». В следующей таблице приводится несколько примеров.

Значение miterLimit:Углы, меньше этого, усекаются:1.41490 градусов260 градусов430 градусов815 градусов
fillflash.display:IGraphicsFillnullЭкземпляр IGraphicsFill содержащий данные для заливки штриха. Экземпляр IGraphicsFill может представлять собой последовательность команд для заливки.
Создает новый объект GraphicsStroke.
flash.display.LineScaleModeflash.display.CapsStyleflash.display.JointStyleflash.display.IGraphicsFill
fill Указывает экземпляр, содержащий данные для заливки штриха.flash.display:IGraphicsFill Указывает экземпляр, содержащий данные для заливки штриха. Экземпляр IGraphicsFill может представлять собой последовательность команд для заливки. flash.display.IGraphicsFillmiterLimit Указывает предел усечения уголка.Number Указывает предел усечения уголка. Допустимыми являются значения в диапазоне 1-255 (остальные значения округляются до 1 или 255). Это значение используется, только если для jointStyle выбран тип "miter". Значение miterLimit – это длина, до которой может продлеваться уголок после точки стыка. Значение выражает фактор толщины линии. Например, при факторе miterLimit, равном 2,5, и толщине в 10 пикселов длина уголка достигает 25 пикселов.

Рассмотрим следующие углы, все составленные из линий с thickness 20, но с разными значениями miterLimit: 1, 2 и 4. Поверх углов для наглядности нанесены черные линии, показывающие точки стыка:

Обратите внимание, что данное значение miterLimit имеет специфический максимальный угол для усечения «уголка». В следующей таблице приводится несколько примеров.

Значение miterLimit:Углы, меньше этого, усекаются:1.41490 градусов260 градусов430 градусов815 градусов
pixelHinting Указывает, следует ли выполнять хинтинг до полных пикселей.Boolean Указывает, следует ли выполнять хинтинг до полных пикселей. Оно влияет на позицию привязок кривой и на размер штриха линии как таковой. Если для pixelHinting задано значение true, проигрыватель Flash Player доводит ширину линии до полного пикселя. Если для pixelHinting задано значение false, в кривых и прямых линиях могут возникать разрывы. Например, на следующих рисунках показано, как проигрыватель Flash Player визуализирует два одинаковых округленных прямоугольника, которые отличаются только настройкой параметра pixelHinting в методе lineStyle() (с целью наглядности изображения увеличены на 200%):

thickness Указывает толщину линии в точках; допустимыми являются значения от 0 до 255.Number Указывает толщину линии в точках; допустимыми являются значения от 0 до 255. Если число не указано или параметр не определен, то линия не будет проведена. Если передается значение меньше 0, по умолчанию задается 0. Значение 0 обозначает толщину одного волоса, максимальная толщина составляет 255. Если передается значение больше 255, по умолчанию задается 255. caps Указывает тип концов линии.String Указывает тип концов линии. Допустимые значения: CapsStyle.NONE, CapsStyle.ROUND и CapsStyle.SQUARE. Если значение не указано, Flash Player использует круглые концы.

Следующий пример иллюстрирует разные параметры класса capsStyle. На рисунке представлено три синих линии толщиной 30 (к которым применяется capsStyle), а поверх них нанесена черная линия толщиной 1 (к которой capsStyle не применяется):

flash.display.CapsStyle
joints Задает тип стыка на углах.String Задает тип стыка на углах. Допустимые значения: JointStyle.BEVEL, JointStyle.MITER и JointStyle.ROUND. Если значение не указано, Flash Player использует круглые стыки.

Следующий пример иллюстрирует разные параметры joints. На рисунке представлено три синих линии толщиной 30 (к которым применяется jointStyle), а поверх них нанесена черная линия толщиной 1 (к которой jointStyle не применяется):

Примечание. Для joints типа JointStyle.MITER можно использовать параметр miterLimit, чтобы ограничить длину уголка.

flash.display.JointStyle
scaleMode Задает масштаб толщины штриха.String Задает масштаб толщины штриха. Допустимые значения:
  • LineScaleMode.NORMAL — Всегда масштабировать толщину линии при масштабировании объекта (по умолчанию).
  • LineScaleMode.NONE — Никогда не масштабировать толщину линии.
  • LineScaleMode.VERTICAL — Не масштабировать толщину линии, если объект масштабируется только по вертикали. Например, рассмотрим следующие окружности, нарисованные линией толщиной в 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.VERTICAL. Масштаб окружности слева изменен только по вертикали, а окружности справа — и по вертикали и по горизонтали.

  • LineScaleMode.HORIZONTAL — Не масштабировать толщину линии, если объект масштабируется только по горизонтали. Например, рассмотрим следующие окружности, нарисованные линией толщиной 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.HORIZONTAL. Масштаб окружности слева изменен только по горизонтали, а окружности справа — и по вертикали и по горизонтали.

flash.display.LineScaleMode
GraphicsEndFill Указывает на завершение графической заливки.flash.display:IGraphicsFillflash.display:IGraphicsDataObject Указывает на завершение графической заливки. Используйте объект GraphicsEndFill совместно с методом Graphics.drawGraphicsData().

Рисование объекта GraphicsEndFill эквивалентно вызову метода Graphics.endFill().

flash.display.Graphics.drawGraphicsData()flash.display.Graphics.endFill()GraphicsEndFill Создает объект для использования с методом Graphics.drawGraphicsData(), чтобы явным образом завершить загрузку. Создает объект для использования с методом Graphics.drawGraphicsData(), чтобы явным образом завершить загрузку. flash.display.Graphics.drawGraphicsData()flash.display.Graphics.endFill()
ShaderPrecision Этот класс содержит константы, представляющие возможные значения для свойства precisionHint класса Shader.Object Этот класс содержит константы, представляющие возможные значения для свойства precisionHint класса Shader. Каждая константа представляет один из режимов точности для выполнения операций затенения.

Выбор режима точности затенения влияет на следующие операции затенения. При использовании процессора Intel с набором инструкций SSE данные операции выполняются быстрее:

  • sin(x)
  • cos(x)
  • tan(x)
  • asin(x)
  • acos(x)
  • atan(x)
  • atan(x, y)
  • exp(x)
  • exp2(x)
  • log(x)
  • log2(x)
  • pow(x, y)
  • reciprocal(x)
  • sqrt(x)
flash.display.Shader.precisionHintFAST Представляет быстрый режим точности.fastString Представляет быстрый режим точности.

Быстрый режим точности предусмотрен для максимального повышения производительности, но он дает несогласованные результаты для разных платформ и индивидуальных конфигураций ЦП. Во многих случаях этого уровня точности достаточно для создания графических эффектов без видимых искажений.

Часто быстрый режим точности дает больше производительности, чем при использовании справочных таблиц.

flash.display.Shader.precisionHint
FULL Представляет режим максимальной точности.fullString Представляет режим максимальной точности.

При выполнении операции затенения в режиме максимальной точности вычисления производятся по 32-разрядному стандарту IEEE с плавающей запятой. Работа в данном режиме поддерживается всеми платформами. Вычисление некоторых математических функций в этом режиме, например тригонометрических и экспонентных, может выполняться очень медленно.

flash.display.Shader.precisionHint
BlendMode Класс, который передает значения констант для визуальных эффектов режима наложения.Object Класс, который передает значения констант для визуальных эффектов режима наложения. Эти константы используются в следующих элементах:
  • свойство blendMode класса flash.display.DisplayObject;
  • Параметр blendMode метода draw() класса flash.display.BitmapData
flash.display.DisplayObject.blendModeflash.display.BitmapData.draw()ADD Прибавляет значения составляющих цветов экранного объекта к значениям цветов его фона (с максимальным значением 0xFF).addString Прибавляет значения составляющих цветов экранного объекта к значениям цветов его фона (с максимальным значением 0xFF). Этот параметр часто используется для анимации растворения света между двумя объектами.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xAAA633, а RGB пиксела фона имеет значение 0xDD2200, то значением RGB отображаемого пиксела является 0xFFC833 (так как 0xAA + 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8 и 0x33 + 0x00 = 0x33).

ALPHA Применяет альфа-значение каждого пикселя экранного объекта к фону.alphaString Применяет альфа-значение каждого пикселя экранного объекта к фону. Для этого требуется, чтобы свойству blendMode родительского экранного объекта было задано значение flash.display.BlendMode.LAYER.

Не поддерживается при визуализации с использованием графического процессора.

DARKEN Выбирает более темные из составляющих цветов экранного объекта и цветов фона (цвета с меньшими значениями).darkenString Выбирает более темные из составляющих цветов экранного объекта и цветов фона (цвета с меньшими значениями). Этот параметр часто используется как тип наложения.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0xDDCC00 (так как 0xFF > 0xDD, 0xCC < 0xF8 и 0x33 > 0x00 = 33).

Не поддерживается при визуализации с использованием графического процессора.

DIFFERENCE Сравнивает составляющие цвета экранного объекта с цветами его фона и вычитает более темное значение (из двух составляющих цветов) из более светлого значения.differenceString Сравнивает составляющие цвета экранного объекта с цветами его фона и вычитает более темное значение (из двух составляющих цветов) из более светлого значения. Этот параметр часто используется для получения более живых цветов.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0x222C33 (так как 0xFF - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C и 0x33 - 0x00 = 0x33).

ERASE Стирает фон на основе альфа-значения экранного объекта.eraseString Стирает фон на основе альфа-значения экранного объекта. Для этого процесса требуется, чтобы свойству blendMode родительского экранного объекта было задано значение flash.display.BlendMode.LAYER.

Не поддерживается при визуализации с использованием графического процессора.

HARDLIGHT Изменяет цвет каждого пикселя в зависимости от того, насколько темный цвет используется для экранного объекта.hardlightString Изменяет цвет каждого пикселя в зависимости от того, насколько темный цвет используется для экранного объекта. Если экранный объект светлее 50-процентного серого, цвета экранного объекта и фона отфильтровываются, в результате чего получается более светлый цвет. Если экранный объект темнее 50-процентного серого, цвета умножаются, что дает более темный цвет. Этот параметр часто используется для эффектов затенения.

Не поддерживается при визуализации с использованием графического процессора.

INVERT Инвертирует фон.invertString Инвертирует фон. LAYER Инициирует создание группы прозрачности для экранного объекта.layerString Инициирует создание группы прозрачности для экранного объекта. Это означает, что перед дальнейшей обработкой экранный объект сначала составляется во временном буфере. Предварительное составление выполняется автоматически, если экранный объект заранее сохраняется в кэше посредством кэширования растрового изображения или если экранный объект является контейнером экранных объектов, содержащим хотя бы один дочерний объект с параметром blendMode не в значении normal.

Не поддерживается при визуализации с использованием графического процессора.

LIGHTEN Выбирает более светлые из составляющих цветов экранного объекта и цветов фона (цвета с большими значениями).lightenString Выбирает более светлые из составляющих цветов экранного объекта и цветов фона (цвета с большими значениями). Этот параметр часто используется как тип наложения.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xFFCC33, а RGB пиксела фона имеет значение 0xDDF800, то значением RGB отображаемого пиксела является 0xFFF833 (так как 0xFF > 0xDD, 0xCC < 0xF8 и 0x33 > 0x00 = 33).

Не поддерживается при визуализации с использованием графического процессора.

MULTIPLY Умножает значения составляющих цветов экранного объекта на значения составляющих цветов фона и нормализует их путем деления на 0xFF, в результате чего получаются более темные цвета.multiplyString Умножает значения составляющих цветов экранного объекта на значения составляющих цветов фона и нормализует их путем деления на 0xFF, в результате чего получаются более темные цвета. Этот параметр часто используется для затенения и создания эффекта глубины.

Например, если составляющий цвет (например, красный) одного пикселя в экранном объекте и соответствующий цвет пикселя в фоне имеют значение 0х88, то в результате умножения получается 0х4840. Деление на 0хFF дает значение 0х48 для данного составляющего цвета, принимающего более темный оттенок, чем в экранном объекте и фоне.

NORMAL Экранный объект отображается перед фоном.normalString Экранный объект отображается перед фоном. Значения пикселей экранного объекта переопределяют значения пикселей фона. В прозрачных областях экранного объекта виден фон. OVERLAY Изменяет цвет каждого пикселя на основе того, насколько темный цвет используется для фона.overlayString Изменяет цвет каждого пикселя в зависимости от того, насколько темный цвет используется для фона. Если фон светлее 50-процентного серого, цвета экранного объекта и фона отфильтровываются, в результате чего получается более светлый цвет. Если фон темнее 50-процентного серого, цвета умножаются, что дает более темный цвет. Этот параметр часто используется для эффектов затенения.

Не поддерживается при визуализации с использованием графического процессора.

SCREEN Умножает обратный код цвета экранного объекта на обратный код цвета фона, в результате чего получается эффект осветления.screenString Умножает обратный код цвета экранного объекта на обратный код цвета фона, в результате чего получается эффект осветления. Этот параметр часто используется для высветления или удаления черных областей экранного объекта. SHADER Использует затенение для наложения между объектами.shaderString Использует затенение для наложения между объектами.

Применение свойства blendShader к экземпляру Shader автоматически приведет к смене значения свойства blendMode экранного объекта на BlendMode.SHADER. Если для свойства blendMode задано BlendMode.SHADER без предварительного задания свойства blendShader, то свойство blendMode примет значение BlendMode.NORMAL. Если же свойство blendShader настроено (свойство blendMode принимает значение BlendMode.SHADER), то в дальнейшем значение свойства blendMode изменяется. Режим наложения можно быстро перенастроить на использование затенения для наложения, задав свойству blendMode значение BlendMode.SHADER. Необходимость в повторной настройке свойства blendShader отсутствует, кроме тех случаев, когда требуется сменить затенение, используемое для определения режима наложения.

Не поддерживается при визуализации с использованием графического процессора.

flash.display.DisplayObject.blendModeflash.display.DisplayObject.blendShaderflash.display.Shader
SUBTRACT Вычитает значения составляющих цветов экранного объекта из значений цвета фона (с минимальным значением 0).subtractString Вычитает значения составляющих цветов экранного объекта из значений цвета фона (с минимальным значением 0). Этот параметр часто используется для анимации растворения затемнения между двумя объектами.

Например, если в экранном объекте есть пиксел со значением RGB, равным 0xAA2233, а RGB пиксела фона имеет значение 0xDDA600, то значением RGB отображаемого пиксела является 0x338400 (так как 0xDD - 0xAA = 0x33, 0xA6 - 0x22 = 0x84 и 0x00 - 0x33 < 0x00).

Graphics Класс Graphics содержит набор методов, с помощью которых можно создавать векторные фигуры.Object Класс Graphics содержит набор методов, с помощью которых можно создавать векторные фигуры. К числу объектов отображения, поддерживающих возможности рисования, относятся объекты Sprite и Shape. Каждый из этих классов включает свойство graphics, являющееся объектом Graphics. Далее перечислены вспомогательные функции, обеспечивающие простоту использования: drawRect(), drawRoundRect(), drawCircle() и drawEllipse().

Нельзя создать объект Graphics непосредственно из кода ActionScript. Можно вызвать функцию new Graphics() для создания исключения.

Класс Graphics является конечным, его нельзя разбить на подклассы.

В следующем примере рассматривается использование класса GraphicsExample для рисования круга, прямоугольного примитива со скругленными углами и квадрата. Это можно сделать, выполнив следующие действия:
  1. Объявите свойство size для последующего использования при определении размера каждой фигуры.
  2. Объявите свойства, определяющие оранжевый цвет фона, темно-серый цвет рамки, размер рамки в пикселях, равный 0, радиус угла, равный 9 пикселям; также задайте расстояние между краем рабочей области и другими объектами, равное 5 пикселям.
  3. Используйте свойства, объявленные в предыдущих шагах, вместе со встроенными методами класса Graphics, чтобы нарисовать круг, прямоугольный примитив со скругленными углами и квадрат с координатами x = 0, y = 0.
  4. Повторно нарисуйте все эти фигуры у верхнего края рабочей области, начиная с точки x = 5, y = 5 с расстоянием 5 пикселей между ними.
package { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.Shape; import flash.display.Sprite; public class GraphicsExample extends Sprite { private var size:uint = 80; private var bgColor:uint = 0xFFCC00; private var borderColor:uint = 0x666666; private var borderSize:uint = 0; private var cornerRadius:uint = 9; private var gutter:uint = 5; public function GraphicsExample() { doDrawCircle(); doDrawRoundRect(); doDrawRect(); refreshLayout(); } private function refreshLayout():void { var ln:uint = numChildren; var child:DisplayObject; var lastChild:DisplayObject = getChildAt(0); lastChild.x = gutter; lastChild.y = gutter; for (var i:uint = 1; i < ln; i++) { child = getChildAt(i); child.x = gutter + lastChild.x + lastChild.width; child.y = gutter; lastChild = child; } } private function doDrawCircle():void { var child:Shape = new Shape(); var halfSize:uint = Math.round(size / 2); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawCircle(halfSize, halfSize, halfSize); child.graphics.endFill(); addChild(child); } private function doDrawRoundRect():void { var child:Shape = new Shape(); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawRoundRect(0, 0, size, size, cornerRadius); child.graphics.endFill(); addChild(child); } private function doDrawRect():void { var child:Shape = new Shape(); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); addChild(child); } } }
beginBitmapFill Заполняет область рисунка растровым изображением.bitmapflash.display:BitmapDataПрозрачное или матовое растровое изображение, содержащее отображаемые биты. matrixflash.geom:MatrixnullОбъект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в растровом изображении. Например, можно использовать следующую матрицу для поворота растрового изображения на 45 градусов (пи/4 радиан): matrix = new flash.geom.Matrix(); matrix.rotate(Math.PI / 4); repeatBooleantrueПри значении true растровое изображение повторяется по шаблону мозаики. При значении false растровое изображение не повторяется, а его края используются для заливки всей области, выходящей за его пределы.

Например, рассмотрим следующее растровое изображение (рисунок «шахматная доска» 20 х 20 пикселей):

Когда для repeat задано значение true (как в следующем примере), в заливке повторяется растровое изображение:

Когда для repeat задано значение false, в заливке растровым изображением используются краевые пиксели, чтобы залить область, выходящую за пределы изображения:

smoothBooleanfalseПри выборе значения false визуализируются растровые изображения, увеличенные при помощи алгоритма ближайшего соседнего пикселя, которые могут выглядеть нечетко. При выборе значения true увеличенное растровое изображение визуализируется с помощью билинейного алгоритма. Процедура визуализации с помощью алгоритма ближайшего соседнего пикселя требует меньше времени. Начинает отрисовку фигуры с заливкой растровым изображением.
Заполняет область рисунка растровым изображением. Растровое изображение может повторяться или располагаться в виде мозаики для заполнения области. Заливка остается действительной вплоть до вызова метода beginFill(), beginBitmapFill(), beginGradientFill() или beginShaderFill(). При вызове метода clear() заливка удаляется.

В приложении заливка отображается при рисовании трех и более точек или вызове метода endFill().

В следующем примере рассматривается изображение (image1.jpg), которое поворачивается и повторяется для заполнения прямоугольника.
  1. Файл изображения (image1.jpg) загружается с помощью объектов Loader и URLRequest. В данном примере файл находится в том же каталоге, что и SWF-файл. SWF-файл должен быть откомпилирован с установленным для параметра «Безопасность локального воспроизведения» режимом «Доступ только к локальным файлам».
  2. При загрузке изображения (завершении Event) вызывается метод drawImage(). Метод ioErrorHandler() записывает комментарий отслеживания, если изображение загружено неправильно.
  3. При методе drawImage() создаются экземпляры объекта BitmapData, а в качестве ширины и высоты задаются размеры изображения (image1.jpg). Затем исходное изображение отрисовывается в объекте BitmapData. После этого рисуется прямоугольник в объекте Sprite mySprite, а для заливки используется объект BitmapData. С использованием метода Matrix метод beginBitmapFill() поворачивает изображение на 45 градусов, а затем начинает заполнять прямоугольник изображением, пока не будет покрыта вся область.
package { import flash.display.Sprite; import flash.display.BitmapData; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; import flash.geom.Matrix; public class Graphics_beginBitmapFillExample extends Sprite { private var url:String = "image1.jpg"; private var loader:Loader = new Loader(); public function Graphics_beginBitmapFillExample() { var request:URLRequest = new URLRequest(url); loader.load(request); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawImage); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function drawImage(event:Event):void { var mySprite:Sprite = new Sprite(); var myBitmap:BitmapData = new BitmapData(loader.width, loader.height, false); myBitmap.draw(loader, new Matrix()); var matrix:Matrix = new Matrix(); matrix.rotate(Math.PI/4); mySprite.graphics.beginBitmapFill(myBitmap, matrix, true); mySprite.graphics.drawRect(100, 50, 200, 90); mySprite.graphics.endFill(); addChild(mySprite); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
endFill()beginFill()beginGradientFill()
beginFill Задает простую заливку сплошным цветом для использования при последующих вызовах других методов объекта Graphics (например, lineTo() или drawCircle()) при рисовании.coloruintЦвет заполнения (0xRRGGBB). alphaNumber1.0Значение альфа-канала заливки (0,0 — 1,0). Задает заливку сплошным цветом. Задает простую заливку сплошным цветом для использования при последующих вызовах других методов объекта Graphics (например, lineTo() или drawCircle()) при рисовании. Заливка остается действительной вплоть до вызова метода beginFill(), beginBitmapFill(), beginGradientFill() или beginShaderFill(). При вызове метода clear() заливка удаляется.

В приложении заливка отображается при рисовании трех и более точек или вызове метода endFill().

См. пример использования этого метода в конце описания класса.
endFill()beginBitmapFill()beginGradientFill()
beginGradientFill Задает заливку градиентом для использования при последующих вызовах других методов Graphics (например, lineTo() или drawCircle()) объекта.Если параметр type недействителен. ArgumentErrorArgumentErrortypeStringЗначение из класса GradientType, определяющее, какой тип градиента должен использоваться: GradientType.LINEAR или GradientType.RADIAL. colorsArrayМассив шестнадцатеричных значений цвета RGB, который должен использоваться в градиенте; например, красный — 0xFF0000, синий — 0x0000FF и т.д. Можно указать до 15 цветов. Для каждого цвета необходимо указать соответствующее значение в параметрах альфа-канала и пропорций. alphasArrayМассив значений альфа-канала для соответствующих цветов в массиве цветов. Действительные значения — от 0 до 1. Если значение меньше 0, по умолчанию задается 0. Если значение больше 1, по умолчанию задается 1. ratiosArrayМассив значений распределения цветов; действительными являются значения от 0 до 255. Это значение определяет процент ширины, на которой цвет представлен на 100% Значение 0 обозначает левую позицию окна градиента, а 255 — правую.

Примечание. Это значение показывает позиции в окне градиента, а не в координатной плоскости конечного градиента, которая может быть шире или уже окна градиента. Укажите величину каждого значения в параметре colors.

Например, линейный градиент включает два цвета: синий и зеленый. Ниже иллюстрируется размещение цветов в градиенте, созданном с использованием разных значений массива ratios:

ratiosГрадиент[0, 127][0, 255][127, 255]

Значения в массиве должны увеличиваться последовательно, например [0, 63, 127, 190, 255].

matrixflash.geom:MatrixnullМатрица преобразования, определенная классом flash.geom.Matrix. Класс flash.geom.Matrix включает метод createGradientBox(), позволяющий удобно настроить матрицу для использования с методом beginGradientFill(). spreadMethodStringpadЗначение из класса SpreadMethod, определяющее метод нанесения, который должен использоваться: SpreadMethod.PAD, SpreadMethod.REFLECT или SpreadMethod.REPEAT.

Например, рассмотрим простой линейный градиент между двумя цветами.

import flash.geom.* import flash.display.* var fillType:String = GradientType.LINEAR; var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [1, 1]; var ratios:Array = [0x00, 0xFF]; var matr:Matrix = new Matrix(); matr.createGradientBox(20, 20, 0, 0, 0); var spreadMethod:String = SpreadMethod.PAD; this.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod); this.graphics.drawRect(0,0,100,100);

В этом примере используется метод нанесения SpreadMethod.PAD, и заливка градиентом выглядит следующим образом:

При использовании метода нанесения SpreadMethod.REFLECT заливка градиентом выглядит следующим образом:

При использовании метода нанесения SpreadMethod.REPEAT заливка градиентом выглядит следующим образом:

interpolationMethodStringrgbЗначение из класса InterpolationMethod, указывающее, какое значение должно использоваться: InterpolationMethod.LINEAR_RGB или InterpolationMethod.RGB

Например, рассмотрим простой линейный градиент между двумя цветами (параметру spreadMethod задано значение SpreadMethod.REFLECT). Разные методы интерполяции влияют на внешний вид следующим образом:

InterpolationMethod.LINEAR_RGBInterpolationMethod.RGB
focalPointRatioNumber0Число, управляющее местоположением фокуса градиента. 0 означает, что фокус находится в центре. 1 означает, что фокус находится у одного края круга градиента. -1 означает, что фокус находится у другого края окружности градиента. Значение меньше -1 или больше 1 округляется до -1 или 1. Например, для focalPointRatio задано значение 0,75:

Задает заливку градиентом.
Задает заливку градиентом для использования при последующих вызовах других методов Graphics (например, lineTo() или drawCircle()) объекта. Заливка остается действительной вплоть до вызова метода beginFill(), beginBitmapFill(), beginGradientFill() или beginShaderFill(). При вызове метода clear() заливка удаляется.

В приложении заливка отображается при рисовании трех и более точек или вызове метода endFill().

endFill()beginFill()beginBitmapFill()flash.geom.Matrix.createGradientBox()flash.display.GradientTypeflash.display.SpreadMethod
beginShaderFill Задает затенение для использования при последующих вызовах других методов объекта Graphics (например, lineTo() или drawCircle()).Если и тип выхода затенения не совместим с данной операцией (затенение должно задать выход pixel3 или pixel4). ArgumentErrorArgumentErrorЕсли затенение задает неподдерживаемое входное изображение. ArgumentErrorArgumentErrorЕсли экземпляр ByteArray или Vector.<Number> используется в качестве ввода, а свойства width и height для ShaderInput не указаны либо указанные значения не соответствуют количеству данных во входном объекте. Дополнительные сведения см. в описании ShaderInput.input. ArgumentErrorArgumentErrorshaderflash.display:ShaderЗатенение, которое должно использоваться для заливки. Для указания входного изображения данный экземпляр Shader не требуется. Однако если в затенении входное изображение указано, его необходимо настроить вручную. Чтобы указать ввод, настройте свойство input соответствующего свойства ShaderInput свойства Shader.data.

При передаче экземпляра объекта Shader в качестве аргумента происходит копирование затенения на внутреннем уровне. При выполнении операции рисования заливки используется эта копия, а не ссылка на исходное затенение. Изменения параметров затенения (изменение значения параметра, ввода или байт-кода) не влияют на используемую для заливки копию затенения.

matrixflash.geom:MatrixnullОбъект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в затенении. Например, можно использовать следующую матрицу для поворота затенения на 45 градусов (пи/4 радиан): matrix = new flash.geom.Matrix(); matrix.rotate(Math.PI / 4);

В основе полученных в затенении координат лежит матрица, указанная для параметра matrix. В матрице по умолчанию (null) этими координатами в затенении являются локальные координаты пикселей, которые могут быть использованы для пробы ввода.

Определяет заливку затенением.
Задает затенение для использования при последующих вызовах других методов объекта Graphics (например, lineTo() или drawCircle()). Заливка остается действительной вплоть до вызова метода beginFill(), beginBitmapFill(), beginGradientFill() или beginShaderFill(). При вызове метода clear() заливка удаляется.

В приложении заливка отображается при рисовании трех и более точек или вызове метода endFill().

Заливки с затенением не поддерживаются при визуализации с использованием графического процессора. Области заливки будут окрашены в голубой цвет.

endFill()beginFill()beginBitmapFill()beginGradientFill()flash.display.ShaderInput
clear Удаляет графику, отрисованную в данном объекте «Graphics», и сбрасывает параметры заливки и стиля линии. Удаляет графику, отрисованную в данном объекте «Graphics», и сбрасывает параметры заливки и стиля линии. copyFrom Копирует все команды рисования исходного объекта Graphics в вызывающий объект Graphics.sourceGraphicsflash.display:GraphicsОбъект Graphics, из которого будут браться команды рисования для копирования. Копирует все команды рисования исходного объекта Graphics в вызывающий объект Graphics. curveTo Рисует кривую с использованием текущего стиля линии от текущего положения до (anchorX, anchorY) и с применением контрольной точки, указанной в координатах (controlX, controlY).controlXNumberЧисло, указывающее горизонтальное положение контрольной точки относительно точки регистрации родительского экранного объекта. controlYNumberЧисло, указывающее вертикальное положение опорной точки относительно точки регистрации родительского экранного объекта. anchorXNumberЧисло, указывающее горизонтальное положение следующей точки привязки относительно точки регистрации родительского экранного объекта. anchorYNumberЧисло, указывающее вертикальное положение следующей точки привязки относительно точки регистрации родительского экранного объекта. Рисует кривую от текущего положения инструмента рисования до точки привязки (anchorX, anchorY) с применением опорной точки, заданной координатами (controlX, controlY). Рисует кривую с использованием текущего стиля линии от текущего положения инструмента рисования до точки с координатами (anchorX, anchorY) с применением опорной точки, заданной координатами (controlX, controlY). Затем текущим положением становится точка (anchorX, anchorY). Если в фрагменте ролика, в котором выполняется отрисовка, есть содержимое, созданное с помощью инструментов рисования Flash, то вызовы метода curveTo() осуществляются под содержимым. Если вызвать метод curveTo() перед вызовом метода moveTo(), то текущим положением инструмента рисования по умолчанию становится точка с координатами (0,0). Если отсутствует один из параметров, этот метод использовать не удастся, и текущее положение инструмента рисования остается без изменений.

Нарисованная кривая является квадратичной кривой Безье. Квадратичные кривые Безье состоят из двух точек привязки и одной опорной точки. Кривая соединяет две точки привязки с искривлением в направлении опорной точки.

В следующем примере рисуется зеленый округлый объект с шириной и высотой, равными 100 пикселям, в 250 пикселях справа от точки регистрации (0, 0) экранного объекта Sprite.

Нарисуйте четыре кривых, образующих круг, и заполните фигуру зеленым цветом.

Обратите внимание на то, что вследствие характера квадратичного уравнения Безье этот круг не является идеальным. Лучше всего рисовать круг с использованием метода drawCircle() класса Graphics.

package { import flash.display.Sprite; import flash.display.Shape; public class Graphics_curveToExample1 extends Sprite { public function Graphics_curveToExample1():void { var roundObject:Shape = new Shape(); roundObject.graphics.beginFill(0x00FF00); roundObject.graphics.moveTo(250, 0); roundObject.graphics.curveTo(300, 0, 300, 50); roundObject.graphics.curveTo(300, 100, 250, 100); roundObject.graphics.curveTo(200, 100, 200, 50); roundObject.graphics.curveTo(200, 0, 250, 0); roundObject.graphics.endFill(); this.addChild(roundObject); } } }
В следующем примере рассматривается рисование растущего месяца с использованием метода curveTo().

Рисуются две кривые линии толщиной 1 пиксель, фигура заливается белым цветом. Метод moveTo() используется для указания текущего положения инструмента рисования в точке с координатами (100, 100). Первая кривая перемещает положение инструмента рисования до своей точки назначения с координатами (100, 200). Вторая кривая возвращает инструмент в исходное положение (100, 100), которое является ее точкой назначения. Горизонтальные опорные точки определяют разные размеры кривых.

package { import flash.display.Sprite; import flash.display.Shape; public class Graphics_curveToExample2 extends Sprite { public function Graphics_curveToExample2() { var newMoon:Shape = new Shape(); newMoon.graphics.lineStyle(1, 0); newMoon.graphics.beginFill(0xFFFFFF); newMoon.graphics.moveTo(100, 100); newMoon.graphics.curveTo(30, 150, 100, 200); newMoon.graphics.curveTo(50, 150, 100, 100); graphics.endFill(); this.addChild(newMoon); } } }
drawCircle Рисует круг.xNumberПоложение x центра круга относительно точки регистрации родительского объекта отображения (в пикселях). yNumberМестоположение y центра круга относительно точки регистрации родительского экранного объекта (в пикселях). radiusNumberРадиус окружности (в пикселях). Рисует круг. Рисует круг. Прежде чем вызывать метод drawCircle(), необходимо задать стиль линии, заливку или и то, и другое. Для этого нужно вызвать метод linestyle(), lineGradientStyle(), beginFill(), beginGradientFill() или beginBitmapFill(). См. пример использования этого метода в конце описания класса. drawEllipse()lineStyle()lineGradientStyle()beginFill()beginGradientFill()beginBitmapFill()drawEllipse Рисует эллипс.xNumberПоложение x верхней левой точки ограничительной рамки эллипса относительно точки регистрации родительского объекта отображения (в пикселях). yNumberПоложение y верхнего левого угла ограничительной рамки для эллипса относительно точки регистрации родительского экранного объекта (в пикселях). widthNumberШирина эллипса (в пикселях). heightNumberВысота эллипса (в пикселях). Рисует эллипс. Рисует эллипс. Прежде чем вызывать метод drawEllipse(), необходимо задать стиль линии, заливку или и то, и другое. Для этого нужно вызвать метод linestyle(), lineGradientStyle(), beginFill(), beginGradientFill() или beginBitmapFill(). В следующем примере используется функция drawEgg(), чтобы нарисовать три яйца разного размера (три размера эллипса) с применением параметра eggSize.
  1. Конструктор вызывает функцию drawEgg() и передает горизонтальные и вертикальные параметры для места отрисовки яйца и его типа (eggSize). (Высота и ширина яиц (эллипсов) может использоваться для определения места их отображения.)
  2. Функция drawEgg() рисует эллипсы разного размера и заполняет их белым цветом с помощью метода beginFill(). Для этой функции не предусмотрена процедура предварительной обработки ошибок.
package { import flash.display.Sprite; import flash.display.Shape; public class Graphics_drawEllipseExample extends Sprite { public static const SMALL:uint = 0; public static const MEDIUM:uint = 1; public static const LARGE:uint = 2; public function Graphics_drawEllipseExample() { drawEgg(SMALL, 0, 100); drawEgg(MEDIUM, 100, 60); drawEgg(LARGE, 250, 35); } public function drawEgg(eggSize:uint, x:Number, y:Number):void { var myEgg:Shape = new Shape(); myEgg.graphics.beginFill(0xFFFFFF); myEgg.graphics.lineStyle(1); switch(eggSize) { case SMALL: myEgg.graphics.drawEllipse(x, y, 60, 70); break; case MEDIUM: myEgg.graphics.drawEllipse(x, y, 120, 150); break; case LARGE: myEgg.graphics.drawEllipse(x, y, 150, 200); break; default: trace ("Wrong size! There is no egg."); break; } myEgg.graphics.endFill(); this.addChild(myEgg); } } }
drawCircle()lineStyle()lineGradientStyle()beginFill()beginGradientFill()beginBitmapFill()
drawGraphicsData Отправляет последовательность экземпляров IGraphicsData для рисования.graphicsDataОбъект Vector, содержащий графические объекты, которые должны реализовывать интерфейс IGraphicsData. Отправляет последовательность экземпляров IGraphicsData для рисования. Данный метод поддерживает объект Vector, в который входят объекты, включая контуры, заливки и штрихи, реализующие интерфейс IGraphicsData. Вектор, состоящий из экземпляров IGraphicsData, может относиться к части фигуры или к сложному, полностью определенному набору данных для визуализации полной фигуры.

Графические контуры могут содержать другие графические контуры. Если вектор graphicsData содержит контур, то во время визуализации будет обработан не только данный контур, но и все вложенные контуры.

С помощью следующего экземпляра создается объект GraphicsGradientFill для установки свойства fill для квадрата. Далее с помощью экземпляра создается класс объектов GraphicsStroke и объект GraphicsSolidFill (для цвета линий), чтобы установить свойства для линии границ квадрата. Далее с помощью экземпляра создается объект GraphicsPath для значений, требуемых для отображения фигуры. Все эти объекты сохраняются в объекте IGraphicsData и передаются в команду drawGraphicsData() для визуализации фигуры. package{ import flash.display.*; import flash.geom.*; public class DrawGraphicsDataExample extends Sprite { public function DrawGraphicsDataExample(){ // establish the fill properties var myFill:GraphicsGradientFill = new GraphicsGradientFill(); myFill.colors = [0xEEFFEE, 0x0000FF]; myFill.matrix = new Matrix(); myFill.matrix.createGradientBox(100, 100, 0); // establish the stroke properties var myStroke:GraphicsStroke = new GraphicsStroke(2); myStroke.fill = new GraphicsSolidFill(0x000000); // establish the path properties var myPath:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>()); myPath.commands.push(1,2,2,2,2); myPath.data.push(10,10, 10,100, 100,100, 100,10, 10,10); // populate the IGraphicsData Vector array var myDrawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>(); myDrawing.push(myFill, myStroke, myPath); // render the drawing graphics.drawGraphicsData(myDrawing); } } }
flash.display.IGraphicsDataflash.display.GraphicsBitmapFillflash.display.GraphicsEndFillflash.display.GraphicsGradientFillflash.display.GraphicsPathflash.display.GraphicsShaderFillflash.display.GraphicsSolidFillflash.display.GraphicsStrokeflash.display.GraphicsTrianglePath
drawPath Отправляет последовательность команд для рисования.commandsВектор целых чисел, представляющий команды, определенные классом GraphicsPathCommand. Класс GraphicsPathCommand устанавливает соответствие между командами и их числовыми идентификаторами для данного векторного массива. dataВектор чисел, где каждая пара чисел рассматривается как точка в системе координат (пара координат x, y). Пары значений координат x и y не являются объектами Point; вектор data представляет собой последовательность чисел, в которой каждая пара чисел представляет собой местоположение в системе координат. windingStringevenOddУказывает правило изгиба с использованием значения, определенного в классе GraphicsPathWinding. Отправляет последовательность команд для рисования. Метод drawPath() использует векторные массивы для единого вызова отдельных команд рисования, таких как moveTo(), lineTo() и curveTo(). Параметры метода drawPath() объединяют команды рисования с парами значений координат x и y и направлением рисования. Команды рисования являются значениями из класса GraphicsPathCommand. Пары значений координат x и y являются числами в составе массива, в котором каждая пара задает местоположение в системе координат. Направление рисования является значением из класса GraphicsPathWinding.

Как правило, рисунки визуализируются быстрее при помощи метода drawPath(), чем в результате вызова серии отдельных методов lineTo() и curveTo().

При вычислениях методом drawPath() используются числа с плавающей запятой, поэтому вращение и масштабирование фигур является более точным. Однако кривые, отправленные с помощью метода drawPath(), могут содержать незначительные ошибки выравнивания (до 1 пикселя) при использовании вместе с методами lineTo() и curveTo().

Метод drawPath() также использует немного другие правила для заполнения и рисования линий. Они перечислены ниже.

  • При применении заливки к визуализации контура:
    • вложенный контур менее 3 точек не визуализируется. (однако визуализация штриха все равно выполняется в соответствии с приведенными ниже правилами для штрихов);
    • незамкнутый вложенный контур (конечная точка не совпадает с начальной) неявно замыкается.
  • Когда штрих применяется к визуализации контура:
    • вложенные контуры могут состоять из любого количества точек;
    • вложенные контуры никогда не замыкаются неявно.
Следующий пример заполняет два векторных объекта, затем передает их методу drawPath() для визуализации голубой звезды. Первый векторный объект, star_commands, содержит последовательность целых чисел, представляющих команды рисования из класса flash.display.GraphicsPathCommand, где значение 1 является командой MoveTo(), а значение 2 — командой LineTo(). Второй объект Vector, star_coord, содержит 5 наборов пар координат x и y. Метод drawPath() сопоставляет команды с позициями для рисования звезды. package{ import flash.display.*; public class DrawPathExample extends Sprite { public function DrawPathExample(){ var star_commands:Vector.<int> = new Vector.<int>(5, true); star_commands[0] = 1; star_commands[1] = 2; star_commands[2] = 2; star_commands[3] = 2; star_commands[4] = 2; var star_coord:Vector.<Number> = new Vector.<Number>(10, true); star_coord[0] = 66; //x star_coord[1] = 10; //y star_coord[2] = 23; star_coord[3] = 127; star_coord[4] = 122; star_coord[5] = 50; star_coord[6] = 10; star_coord[7] = 49; star_coord[8] = 109; star_coord[9] = 127; graphics.beginFill(0x003366); graphics.drawPath(star_commands, star_coord); } } } В вышеупомянутом примере каждая команда и пара координат назначена индивидуально для отображения их позиции в массиве, однако они могут быть назначены в отдельном операторе. В следующем примере выполняется рисование той же самой звезды посредством назначения значений для каждого массива в отдельном операторе push(): package{ import flash.display.*; public class DrawPathExample extends Sprite { public function DrawPathExample(){ var star_commands:Vector.<int> = new Vector.<int>(); star_commands.push(1, 2, 2, 2, 2); var star_coord:Vector.<Number> = new Vector.<Number>(); star_coord.push(66,10, 23,127, 122,50, 10,49, 109,127); graphics.beginFill(0x003366); graphics.drawPath(star_commands, star_coord); } } } Примечание. По умолчанию метод drawPath() использует заливку по правилу четности-нечетности. Поэтому центр звезды не закрашен. Укажите заливку по правилу ненулевого направления для третьего параметра, и центр звезды будет закрашен: graphics.drawPath(star_commands, star_coord, GraphicsPathWinding.NON_ZERO);
flash.display.GraphicsPathCommandflash.display.GraphicsPathWinding
drawRect Рисует прямоугольник.Если параметры width или height не являются числом (Number.NaN). ArgumentErrorArgumentErrorxNumberЧисло, указывающее горизонтальное положение относительно точки регистрации родительского объекта отображения (в пикселях). yNumberЧисло, указывающее вертикальное положение относительно точки регистрации родительского объекта отображения (в пикселях). widthNumberШирина прямоугольника (в пикселях). heightNumberВысота прямоугольника (в пикселях). Рисует прямоугольник со скругленными углами. Рисует прямоугольник. Прежде чем вызывать метод drawRect(), необходимо задать стиль линии, заливку или и то, и другое. Для этого нужно вызвать метод linestyle(), lineGradientStyle(), beginFill(), beginGradientFill() или beginBitmapFill(). Следующий пример демонстрирует отрисовку фигур в ActionScript 3.0. Пример предоставлен ActionScriptExamples.com. var movieClip:MovieClip = new MovieClip(); movieClip.graphics.beginFill(0xFF0000); movieClip.graphics.drawRect(0, 0, 100, 80); movieClip.graphics.endFill(); movieClip.x = 10; movieClip.y = 10; addChild(movieClip); lineStyle()lineGradientStyle()beginFill()beginGradientFill()beginBitmapFill()drawRoundRect()drawRoundRect Рисует прямоугольный примитив со скругленными углами.Если параметры width, height, ellipseWidth или ellipseHeight не являются числом (Number.NaN). ArgumentErrorArgumentErrorxNumberЧисло, указывающее горизонтальное положение относительно точки регистрации родительского объекта отображения (в пикселях). yNumberЧисло, указывающее вертикальное положение относительно точки регистрации родительского объекта отображения (в пикселях). widthNumberШирина прямоугольника со скругленными углами (в пикселях). heightNumberВысота прямоугольника со скругленными углами (в пикселях). ellipseWidthNumberШирина эллипса, используемая для отрисовки скругленных углов (в пикселях). ellipseHeightNumberunknownВысота эллипса, используемая для отрисовки скругленных углов (в пикселях). Необязательно. Если значение не задано, то по умолчанию используется то же, что и для параметра ellipseWidth. Рисует прямоугольник со скругленными углами. Рисует прямоугольный примитив со скругленными углами. Прежде чем вызывать метод drawRoundRect(), необходимо задать стиль линии, заливку или и то, и другое. Для этого нужно вызвать метод linestyle(), lineGradientStyle(), beginFill(), beginGradientFill() или beginBitmapFill(). См. пример использования этого метода в конце описания класса. lineStyle()lineGradientStyle()beginFill()beginGradientFill()beginBitmapFill()drawRect()drawTriangles Визуализирует набор треугольников, чтобы придать растровому изображению трехмерный вид.verticesВектор чисел, где каждая пара чисел рассматривается как точка в системе координат (пара координат x, y). Параметр vertices обязателен. indicesnullВектор целых чисел или индексов, где каждые три индекса определяют треугольник. Если параметру indexes задано значение null, то треугольник определяют каждые три вершины (шесть пар х,у в векторе vertices). В противном случае каждый индекс относится к вершине, представленной парой чисел в векторе vertices. Например, indexes[1] определяет точку с координатами (vertices[2], vertices[3]). Параметр indexes является дополнительным, но индексы, как правило, сокращают объем отправляемых и вычисляемых данных. uvtDatanullВектор нормализованных координат, используемый для наложения текстуры. Каждая координата определяет точку на растровом изображении, используемом для заливки. Для каждой вершины должна быть указана одна координата UV или одна координата UVT. В координатах UV точка (0,0) — это верхняя левая точка, а точка (1,1) — нижняя правая точка растрового изображения.

Если длина этого вектора в два раза превышает длину вектора vertices, то нормализованные координаты используются без перспективной коррекции.

Если длина этого вектора в три раза превышает длину вектора vertices, то третья координата интерпретируется как «t», (расстояние от глаз до текстуры в поле зрения). Это помогает средству визуализации правильно применить перспективу при наложении текстур в трехмерной графике.

Если параметру uvtData задано значение null, будут применяться обычные правила для заливки любого типа.

cullingStringnoneУказывает, производить ли визуализацию треугольников, которые смотрят в указанном направлении. Данный параметр используется для предотвращения визуализации треугольников, которые не видны с текущей точки обзора. Для данного параметра может быть задано любое значение, определенное классом TriangleCulling.
Визуализирует набор треугольников, чтобы придать растровому изображению трехмерный вид. Метод drawTriangles() накладывает текущую или растровую заливку на грани треугольника, используя набор координат (u,v).

Можно использовать любую заливку. Однако все встроенные в заливках матрицы преобразования игнорируются.

При использовании растровой заливки параметр uvtData улучшает наложение текстуры.

flash.display.TriangleCullingflash.display.GraphicsTrianglePath
endFill Применяет заливку к линиям и кривым, добавленным с момента последнего вызова метода beginFill(), beginGradientFill() или beginBitmapFill().Применяет заливку к линиям и кривым. Применяет заливку к линиям и кривым, добавленным с момента последнего вызова метода beginFill(), beginGradientFill() или beginBitmapFill(). Flash использует заливку, указанную в предыдущем вызове метода beginFill(), beginGradientFill() или beginBitmapFill(). Если текущее положение инструмента рисования не совпадает с предыдущим положением, указанным в методе moveTo(), и определяется заливка, то путь замыкается линией, а затем заполняется цветом. beginFill()beginBitmapFill()beginGradientFill()lineBitmapStyle Указывает растровое изображения штриха линии для использования при рисовании линий.bitmapflash.display:BitmapDataРастровое изображение, которое должно использоваться для штриха линии. matrixflash.geom:MatrixnullДополнительная матрица преобразования, определенная классом flash.geom.Matrix. Матрица может быть использована для масштабирования или манипуляции растрового изображения до того, как применить его к стилю линии. repeatBooleantrueУказывает, будет ли растровое изображение повторяться по шаблону мозаики. smoothBooleanfalseУказывает, будет ли к растровому изображению применяться смягчение. Указывает растровое изображения штриха линии для использования при рисовании линий.

Стиль линии растрового изображения используется при последующих вызовах таких методов Graphics, как lineTo() или drawCircle(). Стиль линии остается действительным вплоть до вызова метода lineStyle(), lineGradientStyle() или lineBitmapStyle() с другими параметрами.

Метод lineBitmapStyle() можно вызвать в процессе отрисовки контура, чтобы указать новые стили для других сегментов линии.

Вызовите метод lineStyle() перед вызовом метода lineBitmapStyle(), чтобы активировать штрих, в противном случае значение стиля линии останется undefined.

Вызовы функции clear() возвращают стиль линии к значению undefined.

lineStyle()lineGradientStyle()flash.geom.Matrix
lineGradientStyle Указывает градиент для использования при рисовании линий.typeStringЗначение из класса GradientType, определяющее, какой тип градиента должен использоваться: GradientType.LINEAR или GradientType.RADIAL. colorsArrayМассив шестнадцатеричных значений цвета RGB, который должен использоваться в градиенте (например, красный — 0xFF0000, синий — 0x0000FFи т.д.). alphasArrayМассив значений альфа-канала для соответствующих цветов в массиве цветов. Действительные значения — от 0 до 1. Если значение меньше 0, по умолчанию задается 0. Если значение больше 1, по умолчанию задается 1. ratiosArrayМассив значений распределения цветов; действительными являются значения от 0 до 255. Это значение определяет процент ширины, на которой цвет представлен на 100% Значение 0 обозначает левую позицию окна градиента, а 255 — правую. Это значение показывает позиции в окне градиента, а не в координатной плоскости конечного градиента, которая может быть шире или уже окна градиента. Укажите величину каждого значения в параметре colors.

Например, линейный градиент включает два цвета: синий и зеленый. Ниже иллюстрируется размещение цветов в градиенте, созданном с использованием разных значений массива ratios:

ratiosГрадиент[0, 127][0, 255][127, 255]

Значения в массиве должны увеличиваться последовательно, например [0, 63, 127, 190, 255].

matrixflash.geom:MatrixnullМатрица преобразования, определенная классом flash.geom.Matrix. Класс flash.geom.Matrix включает метод createGradientBox(), позволяющий удобно настроить матрицу для использования с методом lineGradientStyle(). spreadMethodStringpadЗначение класса SpreadMethod, задающее метод нанесения:

SpreadMethod.PADSpreadMethod.REFLECTSpreadMethod.REPEAT

interpolationMethodStringrgbЗначение класса InterpolationMethod, определяющее, какое значение должно использоваться. Например, рассмотрим простой линейный градиент между двумя цветами (параметру spreadMethod задано значение SpreadMethod.REFLECT). Разные методы интерполяции влияют на внешний вид следующим образом:

InterpolationMethod.LINEAR_RGBInterpolationMethod.RGB

focalPointRatioNumber0Число, управляющее местоположением фокуса градиента. Значение 0 означает, что фокус находится в центре. Значение 1 означает, что фокус находится у одного края круга градиента. Значение -1 означает, что фокус находится у другого края окружности градиента. Значения меньше -1 или больше 1 округляются до -1 и 1 соответственно. Следующий пример иллюстрирует градиент с значением focalPointRatio, равным -0.75:

Указывает градиент для использования при рисовании линий.

Стиль линии градиента используется при последующих вызовах следующих методов Graphics: lineTo() или drawCircle(). Стиль линии остается действительным вплоть до вызова метода lineStyle(), lineBitmapStyle() или lineGradientStyle() с другими параметрами.

Метод lineGradientStyle() можно вызвать в процессе отрисовки контура, чтобы указать новые стили для других сегментов линии.

Вызовите метод lineStyle() перед вызовом метода lineGradientStyle(), чтобы активировать штрих, в противном случае значение стиля линии останется undefined.

Вызовы функции clear() возвращают стиль линии к значению undefined.

В следующем примере рассматривается рисование прямоугольника и круга с использованием штриха градиента от красного к зеленому и синему.

Метод createGradientBox() класса Matrix используется для определения окна градиента с шириной 200 и высотой 40. Толщина линии составляет 5 пикселей. Для метода lineGradientStyle() необходимо определить толщину штриха. Задается линейный градиент. Для градиента выбираются красный, зеленый и синий цвета. Прозрачность (значение альфа-канала) цветов составляет 1 (матовые). Распределение градиента — равномерное, 100-процентная выборка цветов в позициях 0 (левый край окна градиента), 128 (середина окна) и 255 (правый край окна). Ширина прямоугольника охватывает весь спектр градиента, а круг —только 50% в центре спектра.

package { import flash.display.Sprite; import flash.display.Shape; import flash.geom.Matrix; import flash.display.GradientType; public class Graphics_lineGradientStyleExample extends Sprite { public function Graphics_lineGradientStyleExample() { var myShape:Shape = new Shape(); var gradientBoxMatrix:Matrix = new Matrix(); gradientBoxMatrix.createGradientBox(200, 40, 0, 0, 0); myShape.graphics.lineStyle(5); myShape.graphics.lineGradientStyle(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0x0000FF], [1, 1, 1], [0, 128, 255], gradientBoxMatrix); myShape.graphics.drawRect(0, 0, 200, 40); myShape.graphics.drawCircle(100, 120, 50); this.addChild(myShape); } } }
lineStyle()lineBitmapStyle()flash.geom.Matrix.createGradientBox()flash.display.GradientTypeflash.display.SpreadMethod
lineShaderStyle Указывает затенение штриха линии для использования при рисовании линий.shaderflash.display:ShaderЗатенение, которое должно использоваться для штриха линии. matrixflash.geom:MatrixnullДополнительная матрица преобразования, определенная классом flash.geom.Matrix. Матрица может быть использована для масштабирования или манипуляции растрового изображения до того, как применить его к стилю линии. Указывает затенение штриха линии для использования при рисовании линий.

Стиль затенения линии используется при последующих вызовах таких методов Graphics, как lineTo() или drawCircle(). Стиль линии остается действительным вплоть до вызова метода lineStyle(), lineGradientStyle() или lineBitmapStyle() с другими параметрами.

Метод lineShaderStyle() можно вызвать в процессе отрисовки контура, чтобы указать новые стили для других его сегментов линии.

Вызовите метод lineStyle() перед вызовом метода lineShaderStyle(), чтобы активировать штрих, в противном случае значение стиля линии останется undefined.

Вызовы функции clear() возвращают стиль линии к значению undefined.

lineStyle()lineBitmapStyle()flash.geom.Matrix
lineStyle Указывает стиль линии, который будет использоваться при последующих вызовах таких методов Graphics, как lineTo() или drawCircle().thicknessNumberunknownЦелое число, определяющее толщину линии в точках; допустимыми являются значения от 0 до 255. Если число не указано или параметр не определен, то линия не будет проведена. Если передается значение меньше 0, по умолчанию задается 0. Значение 0 обозначает толщину одного волоса, максимальная толщина составляет 255. Если передается значение больше 255, по умолчанию задается 255. coloruint0Шестнадцатеричное значение цвета линии; например красный — 0xFF0000, синий — 0x0000FF и т.д. Если значение на задано, по умолчанию используется 0x000000 (черный). Дополнительно. alphaNumber1.0Число, указывающее значение альфа-канала цвета линии, допустимые значения находятся в диапазоне 0-1. Если значение на задано, по умолчанию используется 1(сплошной). Если значение меньше 0, по умолчанию задается 0. Если значение больше 1, по умолчанию задается 1. pixelHintingBooleanfalse(Не поддерживается во Flash Lite 4) Логическое значение, которое указывает на то, доводятся ли штрихи до полных пикселов. Оно влияет на позицию привязок кривой и на размер штриха линии как таковой. Если для pixelHinting задано значение true, выполняется хинтинг ширины линии до полного пикселя. Если для pixelHinting задано значение false, в кривых и прямых линиях могут возникать разрывы. Например, на следующих рисунках показано, как проигрыватель Flash Player или Adobe AIR визуализирует два одинаковых округленных прямоугольника, которые отличаются только настройкой параметра pixelHinting в методе lineStyle() (с целью наглядности изображения увеличены на 200%):

Если значение не задано, для линии не используется хинтинг пикселей.

scaleModeStringnormal(Не поддерживается во Flash Lite 4) Значение класса LineScaleMode, задающее используемый режим масштабирования:
  • LineScaleMode.NORMAL — Всегда масштабировать толщину линии при масштабировании объекта (по умолчанию).
  • LineScaleMode.NONE — Никогда не масштабировать толщину линии.
  • LineScaleMode.VERTICAL — Не масштабировать толщину линии, если объект масштабируется только по вертикали. Например, рассмотрим следующие окружности, нарисованные линией толщиной в 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.VERTICAL. Масштаб окружности слева изменен только по вертикали, а окружности справа — и по вертикали и по горизонтали.

  • LineScaleMode.HORIZONTAL — Не масштабировать толщину линии, если объект масштабируется только по горизонтали. Например, рассмотрим следующие окружности, нарисованные линией толщиной 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.HORIZONTAL. Масштаб окружности слева изменен только по горизонтали, а окружности справа — и по вертикали и по горизонтали.

capsStringnull(Не поддерживается во Flash Lite 4) Значение класса CapsStyle, задающее тип концов линии. Допустимые значения: CapsStyle.NONE, CapsStyle.ROUND и CapsStyle.SQUARE. Если значение не указано, Flash Player использует круглые концы.

Следующий пример иллюстрирует разные параметры класса capsStyle. На рисунке представлено три синих линии толщиной 30 (к которым применяется capsStyle), а поверх них нанесена черная линия толщиной 1 (к которой capsStyle не применяется):

jointsStringnull(Не поддерживается во Flash Lite 4) Значение класса JointStyle, задающее тип стыка на углах. Допустимые значения: JointStyle.BEVEL, JointStyle.MITER и JointStyle.ROUND. Если значение не указано, Flash Player использует круглые стыки.

Следующий пример иллюстрирует разные параметры joints. На рисунке представлено три синих линии толщиной 30 (к которым применяется jointStyle), а поверх них нанесена черная линия толщиной 1 (к которой jointStyle не применяется):

Примечание. Для joints типа JointStyle.MITER можно использовать параметр miterLimit, чтобы ограничить длину уголка.

miterLimitNumber3(Не поддерживается во Flash Lite 4) Число, указывающее предел для обрезки скоса. Допустимыми являются значения в диапазоне 1-255 (остальные значения округляются до 1 или 255). Это значение используется, только если для jointStyle выбран тип "miter". Значение miterLimit – это длина, до которой может продлеваться уголок после точки стыка. Значение выражает фактор толщины линии. Например, при факторе miterLimit, равном 2,5, и толщине в 10 пикселов длина уголка достигает 25 пикселов.

Рассмотрим следующие углы, все составленные из линий с thickness 20, но с разными значениями miterLimit: 1, 2 и 4. Поверх углов для наглядности нанесены черные линии, показывающие точки стыка:

Обратите внимание, что данное значение miterLimit имеет специфический максимальный угол для усечения «уголка». В следующей таблице приводится несколько примеров.

Значение miterLimit:Углы, меньше этого, усекаются:1.41490 градусов260 градусов430 градусов815 градусов
Задает стиль линии, который Flash использует для отрисовки линий.
Указывает стиль линии, который будет использоваться при последующих вызовах таких методов Graphics, как lineTo() или drawCircle(). Стиль линии остается действительным вплоть до вызова метода lineGradientStyle(), lineBitmapStyle() или lineStyle() с другими параметрами.

Метод lineStyle() можно вызвать в процессе отрисовки пути, чтобы указать новые стили для других сегментов линии.

Примечание. Вызовы функции clear() возвращает стиль линии к undefined.

Примечание. Flash Lite 4 поддерживает только первые три параметра (thickness, color и alpha).

См. примеры метода lineTo() или moveTo(), иллюстрирующие использование getStyle().
lineBitmapStyle()lineGradientStyle()LineScaleModeCapsStyleJointStyle
lineTo Рисует линию с использованием текущего стиля линии от текущего положения инструмента рисования до точки с координатами (x, y); затем текущим положением становится точка (x, y).xNumberЧисло, указывающее горизонтальное положение относительно точки регистрации родительского экранного объекта (в пикселях). yNumberЧисло, указывающее вертикальное положение относительно точки регистрации родительского экранного объекта (в пикселях). Рисует линию от текущего положения инструмента рисования до точки с координатами (x, y). Рисует линию с использованием текущего стиля линии от текущего положения инструмента рисования до точки с координатами (x, y); затем текущим положением становится точка (x, y). Если в экранном объекте, в котором выполняется отрисовка, есть содержимое, созданное с помощью инструментов рисования Flash, то вызовы метода lineTo() осуществляются под содержимым. Если вызвать lineTo() перед вызовом метода moveTo(), то текущим положением инструмента рисования по умолчанию становится точка с координатами (0, 0). Если отсутствует один из параметров, этот метод использовать не удастся, и текущее положение инструмента рисования остается без изменений. В следующем примере рисуется трапеция с использованием метода lineTo(), начиная с точки с координатами (100, 100).

Толщина линии равна 10 пикселям, цвет — золотой, непрозрачный, концы линий не определены (так как все они заканчиваются на стыках), для стыков линий выбран тип MITER («уголок») с пределом 10, чтобы получились острые концы.

package { import flash.display.Sprite; import flash.display.LineScaleMode; import flash.display.CapsStyle; import flash.display.JointStyle; import flash.display.Shape; public class Graphics_lineToExample extends Sprite { public function Graphics_lineToExample() { var trapezoid:Shape = new Shape(); trapezoid.graphics.lineStyle(10, 0xFFD700, 1, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 10); trapezoid.graphics.moveTo(100, 100); trapezoid.graphics.lineTo(120, 50); trapezoid.graphics.lineTo(200, 50); trapezoid.graphics.lineTo(220, 100); trapezoid.graphics.lineTo(100, 100); this.addChild(trapezoid); } } }
moveTo Перемещает текущее положение инструмента рисования в точку с координатами (x, y).xNumberЧисло, указывающее горизонтальное положение относительно точки регистрации родительского экранного объекта (в пикселях). yNumberЧисло, указывающее вертикальное положение относительно точки регистрации родительского экранного объекта (в пикселях). Перемещает текущее положение инструмента рисования в точку с координатами (x, y). Перемещает текущее положение инструмента рисования в точку с координатами (x, y). Если отсутствует один из параметров, этот метод использовать не удастся, и текущее положение инструмента рисования остается без изменений. В следующем примере рисуется пунктирная линия толщиной 3 пикселя с использованием методов moveTo() и lineTo().

С помощью метода lineStyle() задается толщина линии, равная 3 пикселям. Также настраивается запрет масштабирования. Задается красный цвет с 25-процентной прозрачностью. Для свойства CapsStyle выбраны квадратные концы (по умолчанию используются круглые).

Поскольку Graphics_moveToExample является экземпляром класса Sprite, он имеет доступ ко всем методам класса Graphics. Методы класса Graphics можно использовать для отрисовки непосредственно в объекте Sprite Graphic_moveToExample. Однако если не поместить векторный графический объект в Shape ограничиваются возможности управления им, его перемещения и изменения.

package { import flash.display.Sprite; import flash.display.CapsStyle; import flash.display.LineScaleMode; public class Graphics_moveToExample extends Sprite { public function Graphics_moveToExample() { graphics.lineStyle(3, 0x990000, 0.25, false, LineScaleMode.NONE, CapsStyle.SQUARE); graphics.moveTo(10, 20); graphics.lineTo(20, 20); graphics.moveTo(30, 20); graphics.lineTo(50, 20); graphics.moveTo(60, 20); graphics.lineTo(80, 20); graphics.moveTo(90, 20); graphics.lineTo(110, 20); graphics.moveTo(120, 20); graphics.lineTo(130, 20); } } }
NativeWindowType Класс NativeWindowType определяет константы для свойства type объекта NativeWindowInitOptions, используемого для создания собственного окна.Определяет константы для поддерживаемых типов окон. Object Класс NativeWindowType определяет константы для свойства type объекта NativeWindowInitOptions, используемого для создания собственного окна.

Примечание. Значение type задается при создании окна и не может изменяться впоследствии.

flash.display.NativeWindowflash.display.NativeWindowInitOptionsLIGHTWEIGHT Минимальное окноlightweightString Минимальное окно NORMAL Обычное окно.normalString Обычное окно. UTILITY Окно служебной программы.utilityString Окно служебной программы.
StageAspectRatio Класс StageAspectRatio предоставляет значения для метода Stage.setAspectRatio().Object Класс StageAspectRatio предоставляет значения для метода Stage.setAspectRatio(). flash.display.Stage.setAspectRatio()LANDSCAPE Определяет ориентацию устройства, при которой пользовательский интерфейс отображается горизонтально. landscapeString Определяет ориентацию устройства, при которой пользовательский интерфейс отображается горизонтально. PORTRAIT Определяет ориентацию устройства, при которой пользовательский интерфейс отображается вертикально. portraitString Определяет ориентацию устройства, при которой пользовательский интерфейс отображается вертикально. Screen Класс Screen передает информацию об экранах дисплея, доступных для данного приложения.flash.events:EventDispatcher Класс Screen передает информацию об экранах дисплея, доступных для данного приложения.

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

Класс Screen, содержит статические элементы класса для обращения к доступным экранным объектам и элементы экземпляров для обращения к свойствам отдельных экранов. Информацию об экранах не следует сохранять в кэше, так как пользователь может в любой момент ее изменить.

Обратите внимание, что между экранами и физическими мониторами, подключенными к компьютеру, не обязательно должно быть соотношение один к одному. Например, два монитора могут показывать один и тот же экран.

Нельзя создать экземпляры класса Screen напрямую. Вызовы конструктора new Screen() выдают исключение ArgumentError.

Следующий пример определяет класс DockingWindow для создания окна, закрепляемого по краям экрана. Это можно сделать, выполнив следующие действия.
  1. Ответить на события клавиатуры, чтобы определить край экрана, к которому прикрепить окно.
  2. Обратиться к методу getScreensForRectangle() статического класса Screen, чтобы получить объект Screen для экрана, на котором в данный момент отображается окно.
  3. Изменить настройки границ окна в соответствии с размерами экрана.
  4. Обновить содержимое окна в соответствии с его новыми размерами.

Обратите внимание на то, что этот класс следует использовать как корневой класс приложения AIR с настройками SystemChrome="none" и transparent="true". Для использования этого класса в окне с системным Chrome необходимо учитывать толщину Chrome и минимальную ширину окна при вычислении расположения и размера окна.

package { import flash.display.Screen; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.geom.Rectangle; import flash.ui.Keyboard; public class DockingWindow extends Sprite { private const dockedWidth:uint = 80; private const dockedHeight:uint = 80; public function DockingWindow():void{ stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey); dockLeft(); } private function onKey(event:KeyboardEvent):void{ switch(event.keyCode){ case Keyboard.LEFT : dockLeft(); break; case Keyboard.RIGHT : dockRight(); break; case Keyboard.UP : dockTop(); break; case Keyboard.DOWN : dockBottom(); break; case Keyboard.SPACE : stage.nativeWindow.close(); } } public function dockLeft():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.top; stage.nativeWindow.height = screen.visibleBounds.height; stage.stageWidth = dockedWidth; drawContent(); } public function dockRight():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.width - dockedWidth; stage.nativeWindow.y = screen.visibleBounds.top; stage.stageWidth = dockedWidth; stage.nativeWindow.height = screen.visibleBounds.height; drawContent(); } public function dockTop():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.top; stage.nativeWindow.width = screen.visibleBounds.width; stage.stageHeight = dockedHeight; drawContent(); } public function dockBottom():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.height - dockedHeight; stage.nativeWindow.width = screen.visibleBounds.width; stage.stageHeight = dockedHeight; drawContent(); } private function getCurrentScreen():Screen{ return Screen.getScreensForRectangle(stage.nativeWindow.bounds)[0]; } private function drawContent():void{ const size:int = 60; const pad:int = 10; var numHSquares:int = Math.floor(stage.stageWidth/(size + pad)); var numVSquares:int = Math.floor(stage.stageHeight/(size + pad)); with (graphics){ clear(); lineStyle(1); beginFill(0x3462d5,.7); for(var i:int = 0; i < numHSquares; i++){ for(var j:int = 0; j < numVSquares; j++){ drawRect((i * (size + pad)) + pad, (j * (size + pad)) + pad, size, size); } } endFill(); } } } }
getScreensForRectangle Возвращает набор экранов (возможно, пустой), пересекающих данный прямоугольник.Массив объектов Screen с экранами, содержащими любую часть области, определенной параметром rect. Arrayrectflash.geom:RectangleПрямоугольник с координатами относительно исходной точки виртуального рабочего стола, которая находится в верхнем левом углу главного экрана. Возвращает набор экранов (возможно, пустой), пересекающих данный прямоугольник. Следующий пример показывает, как получить массив экранов, содержащих хотя бы часть данного прямоугольника. import flash.display.Screen; import flash.geom.Rectangle; var rect:Rectangle = new Rectangle(-200, 100, 1000, 600); var intersectedScreens:Array = Screen.getScreensForRectangle(rect); bounds Границы данного экрана.flash.geom:Rectangle Границы данного экрана.

Местоположение экрана определяется относительно виртуального рабочего стола

В системах Linux, использующих менеджеры окон, это свойство возвращает границы рабочего стала, а не видимые границы экрана.

В следующем примере показано, как получить границы экрана (в данном случае экрана главного дисплея): import flash.display.Screen; import flash.geom.Rectangle; var mainScreen:Screen = Screen.mainScreen; var screenBounds:Rectangle = mainScreen.bounds;
colorDepth Глубина цвета (выраженная количеством битов).int Глубина цвета (выраженная количеством битов). Следующий пример показывает, как получить глубину цвета экрана (в данном случае экрана главного дисплея): var mainScreen:Screen = Screen.mainScreen; var colors:uint = mainScreen.colorDepth; mainScreen Главный дисплей.flash.display:Screen Главный дисплей. Следующий пример показывает, как получить объект Screen, представляющий основной экран компьютера: var primaryScreen:Screen = Screen.mainScreen; screens Массив доступных на данный момент экранов.Array Массив доступных на данный момент экранов.

Модификация возвращенного массива не будет оказывать влияния на доступные экраны.

Следующий пример показывает, как получить массив, содержащий доступные экраны: var screenArray:Array = Screen.screens;
visibleBounds Границы области на данном экране, в которой будут отображаться окна.flash.geom:Rectangle Границы области на данном экране, в которой будут отображаться окна.

В границы visibleBounds не входит панель задач (и другие панели рабочего стола) Windows, строка меню и, в зависимости от системных настроек, док в Mac OS X. В некоторых конфигурациях Linux видимые границы определить невозможно. В таких случаях свойство visibleBounds возвращает то же самое значение, что и свойство screenBounds.

В следующем примере показано, как получить используемые границы экрана (в данном случае экрана главного дисплея): import flash.display.Screen; import flash.geom.Rectangle; var mainScreen:Screen = Screen.mainScreen; var screenBounds:Rectangle = mainScreen.visibleBounds;
NativeWindowDisplayState Класс NativeWindowDisplayState определяет константы для имен состояний отображения окна.Object Класс NativeWindowDisplayState определяет константы для имен состояний отображения окна.

Примечание. Полноэкранные режимы настраиваются с использованием свойства displayState объекта Stage, а не свойства displaySate окна.

flash.display.Stage.displayStateflash.display.StageDisplayStateMAXIMIZED Развернутое состояние отображения.maximizedString Развернутое состояние отображения. MINIMIZED Свернутое состояние отображения.minimizedString Свернутое состояние отображения. NORMAL Обычное состояние отображения.normalString Обычное состояние отображения.
Bitmap Класс Bitmap представляет экранные объекты, представляющие растровые изображения.Представляет экранные объекты, производные от изображений. flash.display:DisplayObject Класс Bitmap представляет экранные объекты, представляющие растровые изображения. Это могут быть изображения, загружаемые с помощью класса flash.display.Loader или созданные с помощью конструктора Bitmap().

Конструктор Bitmap() позволяет создать объект Bitmap, содержащий ссылку на объект BitmapData. Создав объект Bitmap, используйте метод addChild() или addChildAt() родительского экземпляра DisplayObjectContainer, чтобы добавить растровое изображение в список отображения.

Объект Bitmap может использовать свою ссылку BitmapData совместно с несколькими объектами Bitmap, независимо от свойств сдвига или поворота. Поскольку можно создать несколько объектов Bitmap, ссылающихся на один объект BitmapData, несколько экранных объектов могут использовать один сложный объект BitmapData, что предотвращает чрезмерную загрузку памяти в случае использования индивидуальных объектов BitmapData для каждого экземпляра экранного объекта.

Объект BitmapData можно вызвать на экран объектом Bitmap одним из двух способов: с помощью векторного средства визуализации, такого как фигура, заполненная растровым изображением, или с использованием более быстрой подпрограммы копирования пикселей. Подпрограмма копирования пикселей работает намного быстрее, чем векторное средство визуализации, но объект Bitmap должен соответствовать определенным условиям для его использования.

  • К объекту Bitmap не должно применяться растягивание, поворот и наклон.
  • К объекту Bitmap не должно применяться преобразование цвета.
  • К объекту Bitmap не должен применяться режим наложения.
  • Нельзя выполнять обрезку через уровни маски или методы setMask().
  • Само изображение не должно быть маской.
  • Координаты назначения должны находиться на целой пиксельной границе.

Если объект Bitmap загружается не с того домена, на котором находится объект Loader, используемый для загрузки изображения, и не предусмотрено файла политики URL-адресов, предоставляющего доступ к домену объекта Loader, тогда сценарий в этом домене не может получить доступ к объекту Bitmap, его свойствам и методам. Для получения дополнительной информации см. раздел центра разработчиков Flash Player Безопасность.

Примечание. Класс Bitmap не является подклассом класса InteractiveObject, поэтому он не может отправлять события мыши. Однако можно использовать метод addEventListener() контейнера экранного объекта, содержащего объект Bitmap.

В следующем примере класс BitmapExample используется для загрузки изображения "Image.gif" в объект DisplayObject в месте по умолчанию (x = 0, y = 0). Затем копия Image.gif помещается справа от оригинала, в котором применяются новые цвета к пикселям, тестируемым с помощью метода threshold(). Это можно сделать, выполнив следующие действия.
  1. Создается свойство url, описывающее местоположение и имя файла изображения.
  2. Конструктор класса вызывает метод configureAssets(), который в свою очередь вызывает метод completeHandler().
  3. configureAssets() создает объект Loader, который затем создает экземпляр прослушивателя событий, отправляемых по завершении обработки изображения методом completeHandler().
  4. Затем метод buildChild() создает новый экземпляр объекта URLRequest, request, и передает url, чтобы сообщить имя и местоположение файла.
  5. Объект request передается методу loader.load(), который загружает изображение в память через экранный объект.
  6. После этого изображение добавляется в список отображения, который почти сразу показывает изображение на экране в положении с координатами x = 0, y = 0.
  7. Затем метод completeHandler() выполняет следующие задачи:
    1. Создает второй объект Loader и инициализированный вместе с ним объект Bitmap.
    2. Создает второй объект Bitmap, duplicate, который в свою очередь вызывает метод duplicateImage(), создающий дубликат исходного изображения.
    3. Создает объект BitmapData, который назначается объекту BitmapData объекта duplicate.
    4. Создает новый объект Rectangle, инициализированный с теми же координатами, шириной и высотой, что и исходное изображение.
    5. Создает новый объект Point с координатами по умолчанию: x = 0, y = 0.
    6. Создает следующие переменные:
      • operation: применяет новый цвет, когда пороговое значение больше исходного или равно ему.
      • threshold: значение, с которым сравнивается каждый пиксель, — светло-серый цвет с альфа-значением 0xCC.
      • color: цвет, который будет задан пикселям, проходящим пороговый тест, — в данном случае это сплошной желтый цвет.
      • mask: задается диаметрально противоположный цвет (прозрачный синий).
      • copySource: получает значение false, указывающее на то, что значения пикселей не копируются в том случае, если пороговое значение не проходит. Это значение не имеет смысла, потому что изображение продублировано и изменяются только пиксели, прошедшие пороговый тест.
    7. Вызывает метод threshold() с использованием предшествующих переменных. В результате мы получаем уравнение порога: if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00.

Примечания.

  • SWF-файл потребуется откомпилировать с установленным для параметра «Безопасность локального воспроизведения» режимом «Доступ только к локальным файлам».
  • Данный пример требует, чтобы файл с именем Image.gif находился в том же каталоге, что и SWF-файл.
  • Рекомендуем использовать изображение с шириной до 80 пикселей.

package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class BitmapExample extends Sprite { private var url:String = "Image.gif"; private var size:uint = 80; public function BitmapExample() { configureAssets(); } private function configureAssets():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.x = size * numChildren; loader.load(request); addChild(loader); } private function duplicateImage(original:Bitmap):Bitmap { var image:Bitmap = new Bitmap(original.bitmapData.clone()); image.x = size * numChildren; addChild(image); return image; } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); var duplicate:Bitmap = duplicateImage(image); var bitmapData:BitmapData = duplicate.bitmapData; var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height); var destPoint:Point = new Point(); var operation:String = ">="; var threshold:uint = 0xCCCCCCCC; var color:uint = 0xFFFFFF00; var mask:uint = 0x000000FF; var copySource:Boolean = true; bitmapData.threshold(bitmapData, sourceRect, destPoint, operation, threshold, color, mask, copySource); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
flash.display.Loaderflash.display.BitmapDataBitmap Инициализирует объект Bitmap для ссылки на заданный объект BitmapData.bitmapDataflash.display:BitmapDatanullОбъект BitmapData, указанный в ссылке. pixelSnappingStringautoОпределяет, должен ли объект Bitmap быть привязанным к ближайшему пикселю. smoothingBooleanfalseОпределяет, следует ли сглаживать растровое изображение при масштабировании. В следующих примерах показано то же растровое изображение, отмасштабированное с фактором 3, при smoothing в значении false (слева) и true (справа).

Инициализирует объект Bitmap для ссылки на заданный объект BitmapData. Следующий пример демонстрирует динамическую загрузку изображения в процессе выполнения с помощью класса Loader в ActionScript 3.0, а затем копирование пикселов изображения в четыре разных экземпляра Bitmap, включенные в список отображения, с помощью свойств content и bitmapData экземпляра Loader. Пример предоставлен ActionScriptExamples.com. const IMAGE_URL:String = "http://www.helpexamples.com/flash/images/logo.png"; var ldr:Loader = new Loader(); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete); ldr.load(new URLRequest(IMAGE_URL)); var bitmap1:Bitmap; var bitmap2:Bitmap; var bitmap3:Bitmap; var bitmap4:Bitmap; function ldr_complete(evt:Event):void { var bmp:Bitmap = ldr.content as Bitmap; bitmap1 = new Bitmap(bmp.bitmapData); bitmap1.x = 100; bitmap1.y = 100; bitmap1.rotation = 0; addChild(bitmap1); bitmap2 = new Bitmap(bmp.bitmapData); bitmap2.x = 200; bitmap2.y = 100; bitmap2.rotation = 90; addChild(bitmap2); bitmap3 = new Bitmap(bmp.bitmapData); bitmap3.x = 300; bitmap3.y = 100; bitmap3.rotation = 180; addChild(bitmap3); bitmap4 = new Bitmap(bmp.bitmapData); bitmap4.x = 400; bitmap4.y = 100; bitmap4.rotation = 270; addChild(bitmap4); }
bitmapData Объект BitmapData, указанный в ссылке.flash.display:BitmapData Объект BitmapData, указанный в ссылке. pixelSnapping Определяет, должен ли объект Bitmap быть привязанным к ближайшему пикселю.String Определяет, должен ли объект Bitmap быть привязанным к ближайшему пикселю. Класс PixelSnapping включает возможные значения:
  • PixelSnapping.NEVER — Привязка к пикселям не выполняется.
  • PixelSnapping.ALWAYS — Изображение всегда привязывается к ближайшему пикселю, независимо от преобразования.
  • PixelSnapping.AUTO — Изображение привязывается к ближайшему пикселю, если не выполнялось вращение или наклон, а также если оно отображено в масштабе от 99,9% до 100,1%. Если эти условия удовлетворяются, растровое изображение отображается в масштабе 100% с привязкой к ближайшему пикселю. На внутреннем уровне это значение позволяет показывать изображение с максимальной быстротой с помощью векторного средства визуализации.
smoothing Определяет, следует ли сглаживать растровое изображение при масштабировании.Boolean Определяет, следует ли сглаживать растровое изображение при масштабировании. При значении true растровое изображение смягчается при масштабировании. При значении false растровое изображение не смягчается при масштабировании.
Scene В классе Scene предусмотрены свойства для определения имени, подписей и числа кадров в монтажном кадре.Object В классе Scene предусмотрены свойства для определения имени, подписей и числа кадров в монтажном кадре. Экземпляр объекта Scene создается в Flash Professional, а не путем написания кода ActionScript. Класс MovieClip включает свойство currentScene, которое является объектом Scene, определяющим монтажный кадр, в котором находится точка воспроизведения на временной шкале экземпляра MovieClip. Свойство scenes класса MovieClip представляет собой массив объектов Scene. Также методы gotoAndPlay() и gotoAndStop() класса MovieClip используют объекты Scene в качестве параметров. MovieClip.currentSceneMovieClip.scenesMovieClip.gotoAndPlay()MovieClip.gotoAndStop()labels Массив объектов FrameLabel для монтажного кадра.Array Массив объектов FrameLabel для монтажного кадра. Каждый объект FrameLabel содержит свойство frame, задающее номер кадра, соответствующий подписи, и свойство name. FrameLabelname Имя монтажного кадра.String Имя монтажного кадра. numFrames Число кадров в монтажном кадре.int Число кадров в монтажном кадре. StageDisplayState Класс StageDisplayState передает значения для свойства Stage.displayState.Object Класс StageDisplayState передает значения для свойства Stage.displayState. flash.display.Stage.displayStateFULL_SCREEN_INTERACTIVE Задает полноэкранный режим рабочей области с активной клавиатурой.fullScreenInteractiveString Задает полноэкранный режим рабочей области с активной клавиатурой. Данная функциональная возможность поддерживается только приложениями AIR. FULL_SCREEN Задает полноэкранный режим рабочей области.fullScreenString Задает полноэкранный режим рабочей области. В этом режиме взаимодействие с клавиатурой отключено. NORMAL Задает обычный режим рабочей области.normalString Задает обычный режим рабочей области. ShaderData В объекте ShaderData содержатся свойства, отвечающие за все параметры и входы ядра затенения, а также свойства, содержащие все метаданные, указанные для затенения.Object В объекте ShaderData содержатся свойства, отвечающие за все параметры и входы ядра затенения, а также свойства, содержащие все метаданные, указанные для затенения.

Эти свойства применяются к объекту ShaderData при его создании. Имена свойств совпадают с именами, указанными в исходном коде затенения. Типы данных каждого свойства различаются в зависимости от представляемого свойством аспекта затенения. Например, свойства, представляющие параметры затенения, являются экземплярами ShaderParameter, свойства, представляющие изображения ввода, являются экземплярами ShaderInput, а свойства, представляющие метаданные затенения, относятся к классу ActionScript в зависимости от их типа данных (экземпляр String для метаданных в формате текста и uint для метаданных типа uint).

Рассмотрим пример затенения, который характеризуется одним изображением ввода (src), двумя параметрами (size и radius) и тремя значениями метаданных (nameSpace, version и description):

<languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the kernel is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: 0.0; maxValue: 50.0; defaultValue: 25.0; >; void evaluatePixel() { float2 one = (radius / radius) ∗ (size / size); dst = sampleNearest(src, outCoord()); } }

Если при создании экземпляра Shader использовался байт-код данного затенения, то в свойстве data экземпляра ShaderData будут содержаться следующие свойства:

СвойствоТип данныхЗначениеnameString"DoNothing"nameSpaceString"Adobe::Example"versionString"1"descriptionString«Затенение, которое не оказывает никакого эффекта»srcShaderInput[Экземпляр ShaderInput]sizeShaderParameter[Экземпляр ShaderParameter, содержащий свойства метаданных параметра]radiusShaderParameter[Экземпляр ShaderParameter, содержащий свойства метаданных параметра]

Обратите внимание на то, что каждое изображение ввода или параметр, определенные в исходном коде затенения, но не используемые в функции evaluatePixel() затенения, удаляются при компиляции затенения в байт-код. В этом случае соответствующие экземпляры ShaderInput или ShaderParameter к экземпляру ShaderData в качестве свойства не прибавляются.

Обычно, в коде разработчика создание экземпляра ShaderData не заложено. Экземпляр ShaderData, содержащий данные, параметры и вводы для затенения, доступен в качестве свойства data экземпляра Shader.

В следующем примере происходит загрузка затенения и перечисление экземпляра ShaderData в его свойстве data для отображения свойств ввода, параметров и метаданных данного затенения.

Обратите внимание, что в этом примере мы исходим из того, что существует файл байт-кодов с именем donothing.pbj, хранящийся в каталоге, который является выходным для приложения.

// // Source code for the shader: // <languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the shader is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: float(0.0); maxValue: float(50.0); defaultValue: float(25.0); >; void evaluatePixel() { float2 one = (radius / radius) * (size / size); dst = sampleNearest(src, outCoord()); } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderDataExample extends Sprite { private var loader:URLLoader; public function ShaderDataExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; for (var p:String in shader.data) { trace(p, ":", shader.data[p]); for (var d:String in shader.data[p]) { trace("\t", d, ":", shader.data[p][d]); } } } } }
flash.display.Shader.dataflash.display.ShaderInputflash.display.ShaderParameterShaderData Создает экземпляр ShaderData.byteCodeflash.utils:ByteArrayБайт-код затенения. Создает экземпляр ShaderData. Обычно в коде разработчика прямой вызов конструктора ShaderData не производится. Доступ к экземпляру ShaderData, содержащему данные, параметры и вводы для затенения, осуществляется через его свойство data. flash.display.Shader.data
ShaderJob Экземпляр ShaderJob используется для выполнения операций затенения в автономном режиме.flash.events:EventDispatcher Экземпляр ShaderJob используется для выполнения операций затенения в автономном режиме. Выполняется операция затенения, и возвращаются результирующие данные. Задачей разработчика является определение способа использования результата.

Существует две основные причины использования затенения в автономном режиме.

  • Обработка данных, отличных от изображений: при использовании экземпляра ShaderJob можно управлять входными значениями и способами использования результатов затенения. Операция затенения может возвращать результаты в виде двоичных данных или числовых данных вместо данных изображений.
  • Фоновая обработка: некоторые операции затенения являются достаточно сложными, и на их выполнение требуется много времени. Выполнение сложной операции затенения в основном потоке выполнения приложения может замедлить другие части приложения, например, реакцию на действия пользователя или обновление экрана. С помощью экземпляра ShaderJob можно выполнить операцию затенения в фоновом режиме. Таким способом операция затенения выполняется отдельно от основного потока приложения.

Свойство shader (или параметр конструктора) определяет экземпляр Shader, представляющий используемое в данной операции затенение. Параметры и входы, используемые затенением, настраиваются с помощью связанных экземпляров ShaderParameter или ShaderInput.

Перед выполнением операции ShaderJob необходимо указать объект, в который записывается результат, путем его настройки в качестве значения свойства target. По завершении операции затенения результат записывается в объект target.

Чтобы начать операцию фонового затенения, вызовите метод start(). По завершении операции затенения результат записывается в объект target. В этот момент экземпляр ShaderJob отправляет событие complete, уведомляя прослушивателей о наличии готового результата.

Для синхронного выполнения затенения (то есть не в фоновом режиме) вызовите метод start() и передайте значение true в качестве аргумента. Затенение выполняется в основном потоке выполнения, и выполнение кода приостанавливается до завершения операции. После выполнения операции результаты сохраняются в объекте target. В этой точке приложение продолжает выполнение следующей строки кода.

ShaderShaderInputShaderParameterShaderEventcomplete Отправка по завершении обработки данных с использованием затенения заданием ShaderJob, которое выполняется асинхронно.flash.events.ShaderEvent.COMPLETEflash.events.ShaderEvent Отправка по завершении обработки данных с использованием затенения заданием ShaderJob, которое выполняется асинхронно. Экземпляр ShaderJob выполняется асинхронно при вызове метода start() со значением false для параметра waitForCompletion. ShaderJob shaderflash.display:ShadernullИспользуемое в операции затенение. targetObjectnullОбъект, в который сохраняется результат вычисления операции затенения. Аргументом может быть экземпляр BitmapData, ByteArray или Vector.<Number>. widthint0Ширина результирующих данных в target, если экземпляром является ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются. heightint0Высота результирующих данных в target, если аргументом является экземпляр ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются. cancel Отменяет текущую запущенную операцию затенения. Отменяет текущую запущенную операцию затенения. Все полученные в результате вычислений данные игнорируются. Событие complete не отправляется.

Многократный вызов метода cancel() не действует.

start Запуск операции затенения в синхронном или асинхронном режиме в соответствии со значением параметра waitForCompletion.Если свойство target принимает значение null или не является экземпляром BitmapData, ByteArray или Vector.<Number>. ArgumentErrorArgumentErrorЕсли затенение задает неподдерживаемое входное изображение. ArgumentErrorArgumentErrorЕсли экземпляр ByteArray или Vector.<Number> используется в качестве ввода, а свойства width и height для ShaderInput не указаны либо указанные значения не соответствуют количеству данных во входном объекте. Дополнительные сведения см. в описании ShaderInput.input. ArgumentErrorArgumentErrorwaitForCompletionBooleanfalseОпределение необходимости выполнения затенения в фоновом режиме (по умолчанию false) или в основном потоке выполнения программы (true). Запуск операции затенения в синхронном или асинхронном режиме в соответствии со значением параметра waitForCompletion.

В асинхронном режиме (если для параметра waitForCompletion задано значение false), который является режимом по умолчанию, выполнение ShaderJob осуществляется в фоновом режиме. Операция затенения не влияет на быстроту реакции отображения или других операций. В асинхронном режиме вызов метода start() происходит немедленно и в программе продолжается выполнение следующей строки кода. По завершении выполнения операции затенения в фоновом режиме доступен результат и выполняется отправка события complete.

Одновременно может выполняться только одна фоновая операция ShaderJob. Все операции затенения помещаются в очередь и выполняются последовательно. При вызове метода start() во время выполнения операции затенения еще одна операция добавляется в конец очереди. Впоследствии, когда наступает очередь, она выполняется.

Чтобы выполнить операцию затенения в синхронном режиме, вызовите метод start() со значением true для параметра waitForCompletion (единственный параметр). Выполнение кода приостанавливается в точке вызова метода start() до завершения операции затенения. В этой точке доступен результат, и продолжается выполнение следующей строки кода.

При вызове метода start() происходит копирование на внутреннем уровне экземпляра Shader в свойстве shader. При выполнении операции затенения используется эта копия, а не ссылка на исходное затенение. Изменения параметров затенения (изменение значения параметра, ввода или байт-кода) не влияют на используемую для обработки затенения копию затенения. Для внедрения изменений в операцию затенения произведите вызов метода cancel() (при необходимости) и повторно вызовите метод start(), чтобы запустить операцию обработки затенения.

На время выполнения операции затенения значение объекта target остается неизменным. По завершении операции (и выполнения отправки события complete в асинхронном режиме) все результаты одновременно записываются в объект target. Если объект target является экземпляром BitmapData и его метод dispose() вызывается до завершения операции, отправка события complete выполняется в асинхронном режиме. В таком случае, данные в объект BitmapData не сохраняются, так как его не существует.

completeflash.events:ShaderEventПередается по завершении операции, если метод start() вызывается со значением true аргумента waitForCompletion. Передается по завершении операции, если метод start() вызывается со значением true аргумента waitForCompletion.
height Высота результирующих данных в target, если аргументом является экземпляр ByteArray или Vector.&lt;Number&gt;.int Высота результирующих данных в target, если аргументом является экземпляр ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются. progress Прогресс выполнения запущенной операции затенения.Number Прогресс выполнения запущенной операции затенения. Значение находится в диапазоне от 0 до 1. В значении 0 прогресс выполнения находится на отметке 0%. Значение 1 указывает на завершение операции.

При вызове метода cancel() значение этого свойства становится undefined и уже не отображает реального значения прогресса при повторном запуске операции.

shader Используемое в операции затенение.flash.display:Shader Используемое в операции затенение. Все параметры и вводы для операции затенения задаются в свойствах data экземпляра Shader, а именно ShaderInput или ShaderParameter. Ввод задается соответствующим свойством ShaderInput, даже если он совпадает с объектом target.

Для обработки массива ByteArray, данные в котором расположены линейно (в отличие от данных изображения), задайте параметры соответствующего экземпляра ShaderInput следующим образом: для height установите значение 1, для width — число 32-разрядных значений с плавающей запятой в массиве ByteArray. В этом случае значение ввода затенения должно принадлежать типу данных image1.

flash.display.ShaderDataflash.display.ShaderInputflash.display.ShaderParameter
target Объект, в который сохраняется результат вычисления операции затенения.Object Объект, в который сохраняется результат вычисления операции затенения. Этот объект может быть экземпляром BitmapData, ByteArray или Vector.<Number>. width Ширина данных результата в target, если он является экземпляром ByteArray или Vector.&lt;Number&gt;.int Ширина результирующих данных в target, если экземпляром является ByteArray или Vector.<Number>. Размер экземпляра ByteArray или Vector.<Number> при необходимости расширяется, а существующие данные перезаписываются.
NativeWindowSystemChrome Класс NativeWindowSystemChrome определяет константы для свойства systemChrome объекта NativeWindowInitOptions, используемого для создания собственного окна.Определяет константы, представляющие поддерживаемые типы хрома окон. Object Класс NativeWindowSystemChrome определяет константы для свойства systemChrome объекта NativeWindowInitOptions, используемого для создания собственного окна.

Системным Chrome называются элементы окна, определяемые операционной системой, такие как строка заголовка, кнопки «Свернуть», «Развернуть» и «Закрыть».

Примечание. Тип системного Chrome задается при создании окна и не может изменяться впоследствии.

flash.display.NativeWindowflash.display.NativeWindowInitOptionsALTERNATE Зарезервировано для будущего использования.alternateString Зарезервировано для будущего использования.

Не использовать.

NONE Нет системного хрома.noneString Нет системного хрома. STANDARD Стандартный хром для операционной системы компьютера.standardString Стандартный хром для операционной системы компьютера.

Используйте этот параметр, чтобы имитировать внешний вид собственной операционной системы.

IGraphicsStroke Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров stroke в методах flash.display.Graphics и классах рисования. Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров stroke в методах flash.display.Graphics и классах рисования. Используйте классы средства реализации данного интерфейса для создания данных свойства stroke и управления ими, а также для повторного использования этих данных для других экземпляров. flash.display.Graphics.drawGraphicsData()SimpleButton Класс SimpleButton позволяет управлять всеми экземплярами символов-кнопок в SWF-файле.Класс SimpleButton позволяет управлять всеми экземплярами символов-кнопок в SWF-файле. flash.display:InteractiveObject Класс SimpleButton позволяет управлять всеми экземплярами символов-кнопок в SWF-файле.

Во Flash Professional кнопке можно присвоить имя экземпляра в инспекторе свойств. Имена экземпляров SimpleButton отображаются в обозревателе ролика Movie Explorer и в диалоговом окне «Целевой путь» на панели «Действия». Создав экземпляр кнопки в Flash Professional, можно использовать методы и свойства класса SimpleButton для манипуляции с кнопками с помощью ActionScript.

В ActionScript 3.0 для создания экземпляра SimpleButton используется конструктор new SimpleButton().

Класс SimpleButton наследует методы и свойства класса InteractiveObject.

В следующем примере используется класс SimpleButtonExample, который в свою очередь использует класс CustomSimpleButton, и затем он создает экземпляры четырех объектов ButtonDisplayState. В результате создается квадратная кнопка, цвет фона которой изменяется в зависимости от состояния мыши путем переопределения свойств экземпляра класса SimpleButton. Это можно сделать, выполнив следующие действия.
  1. В конструкторе SimpleButtonExample() создается новый объект CustomSimpleButton типа SimpleButton с именем button при помощи конструктора CustomSimpleButton. Объект button добавляется в список отображения. Цвет и размер кнопки определяются в следующих шагах.
  2. В классе CustomSimpleButton объявляются свойства экземпляра, которые в дальнейшем будут использоваться для управления размером и фоновым цветом объекта button в зависимости от его состояния (оранжевый в обычном состоянии, темно-желтый при наведении мыши и голубой при нажатии мыши). Во всех состояниях объекта button размер квадрата равен 80 пикселям, что определено свойством size.
  3. Функция конструктора класса CustomSimpleButton задает свойства downState, overState, upState, hitTestState и useHandCursor для всех четырех экземпляров класса ButtonDisplayState.
  4. В классе ButtonDisplayState конструктор задает значение размера и фонового цвета квадрата и вызывает метод draw().
  5. Метод draw() перерисовывает квадрат, используя размер и цвет фона, заданный в конструкторе, в зависимости от состояния кнопки.
package { import flash.display.Sprite; public class SimpleButtonExample extends Sprite { public function SimpleButtonExample() { var button:CustomSimpleButton = new CustomSimpleButton(); addChild(button); } } } import flash.display.DisplayObject; import flash.display.Shape; import flash.display.SimpleButton; class CustomSimpleButton extends SimpleButton { private var upColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; private var size:uint = 80; public function CustomSimpleButton() { downState = new ButtonDisplayState(downColor, size); overState = new ButtonDisplayState(overColor, size); upState = new ButtonDisplayState(upColor, size); hitTestState = new ButtonDisplayState(upColor, size * 2); hitTestState.x = -(size / 4); hitTestState.y = hitTestState.x; useHandCursor = true; } } class ButtonDisplayState extends Shape { private var bgColor:uint; private var size:uint; public function ButtonDisplayState(bgColor:uint, size:uint) { this.bgColor = bgColor; this.size = size; draw(); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, size, size); graphics.endFill(); } }
Класс InteractiveObjectSimpleButton Создает новый экземпляр SimpleButton.upStateflash.display:DisplayObjectnullНачальное значение для ненажатого состояния SimpleButton. overStateflash.display:DisplayObjectnullНачальное значение для состояния over SimpleButton. downStateflash.display:DisplayObjectnullНачальное значение для состояния down SimpleButton. hitTestStateflash.display:DisplayObjectnullНачальное значение для состояния hitTest SimpleButton. Создает новый экземпляр SimpleButton. Создает новый экземпляр SimpleButton. Все и каждый из экранных объектов, представляющих разные состояния кнопки, можно задать в качестве параметров в конструкторе. downState Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии Down (в котором она находится при щелчке объекта hitTestState).flash.display:DisplayObjectЗадает значение DisplayObject, используемое для состояния Down кнопки. Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии Down (в котором она находится при щелчке объекта hitTestState). hitTestStateoverStateupStateenabled Логическое значение, которое определяет, включена ли кнопка.BooleanПоказывает, включена ли кнопка. Принимает значения true и false. Логическое значение, которое определяет, включена ли кнопка. Когда кнопка отключена (свойство enabled имеет значение false), кнопка является видимой, но не может быть выбрана. По умолчанию используется значение true. Это свойство удобно использовать, когда требуется отключить часть элементов навигации. Например, может потребоваться отключить кнопку на отображаемой в данный момент странице, чтобы на нее нельзя было нажать и чтобы предотвратить перезагрузку страницы.

Примечание. Для предотвращения событий mouseClicks для кнопки установите оба свойства — enabled и mouseEnabled — на значение false.

hitTestState Задает экранный объект, который служит кнопке в качестве объекта для тестирования нажатия.flash.display:DisplayObject Задает экранный объект, который служит кнопке в качестве объекта для тестирования нажатия. Для базовой кнопки нужно задать свойству hitTestState тот же экранный объект, что и свойствуoverState. Если не задать свойство hitTestState, объект SimpleButton будет неактивным: он не будет отвечать на события пользовательского ввода. downStateoverStateupStateoverState Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии Over (в котором находится кнопка, когда указатель располагается над ней).flash.display:DisplayObjectЗадает значение DisplayObject, используемое для состояния Over кнопки. Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии Over (в котором находится кнопка, когда указатель располагается над ней). downStatehitTestStateupStatesoundTransform Объект SoundTransform, связанный с этой кнопкой.flash.media:SoundTransform Объект SoundTransform, связанный с этой кнопкой. Объект SoundTransform включает свойства для настройки громкости, панорамы, назначения левого и правого динамиков. Данный объект SoundTransform применяется ко всем состояниям кнопки. Данный объект SoundTransform воздействует только на встроенные звуки. flash.media.SoundTransformtrackAsMenu Определяет, могут ли другие экранные объекты, являющиеся объектами SimpleButton или MovieClip, получать события отпускания при пользовательском вводе.Boolean Определяет, могут ли другие экранные объекты, являющиеся объектами SimpleButton или MovieClip, получать события отпускания при пользовательском вводе. Свойство trackAsMenu позволяет создавать меню. Свойство trackAsMenu можно задать для любого объекта SimpleButton или MovieClip. Если свойство trackAsMenu не существует, по умолчанию используется значение false.

Свойство trackAsMenu можно изменить в любой момент; обновленный фрагмент ролика немедленно начинает использовать новое поведение курсора.

upState Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии вверх (в котором находится кнопка, когда указатель не расположен над ней).flash.display:DisplayObjectЗадает значение DisplayObject, используемое для состояния Up кнопки. Задает экранный объект, применяемый в качестве визуального объекта для отображения кнопки в состоянии вверх (в котором находится кнопка, когда указатель не расположен над ней). downStatehitTestStateoverStateuseHandCursor Логическое значение. При значении true определяет, отображается ли курсор в виде руки при наведении указателя на кнопку.BooleanЕсли установлено значение true, отображает курсор в виде руки. Логическое значение. При значении true определяет, отображается ли курсор в виде руки при наведении указателя на кнопку. Если этому свойству задано значение false, используется курсор «стрелка». Значение по умолчанию — true.

Свойство useHandCursor можно изменить в любой момент; обновленный фрагмент ролика немедленно начинает использовать новое поведение курсора.

TriangleCulling Определяет коды для отбора алгоритмов, используемых для определения треугольников, которые не будут визуализироваться при прорисовке контуров треугольников.Object Определяет коды для отбора алгоритмов, используемых для определения треугольников, которые не будут визуализироваться при прорисовке контуров треугольников.

Термины POSITIVE и NEGATIVE влияют на нормаль треугольника относительно оси z. Под нормалью подразумевается трехмерный вектор, направленный перпендикулярно поверхности треугольника.

Считается, что если векторы 0, 1 и 2 треугольника расположены по часовой стрелке, значение его нормали положительное. Иными словами, его нормаль указывает на положительное направление оси z от текущей точки обзора. При использовании алгоритма TriangleCulling.POSITIVE треугольники с положительными нормалями не визуализируются. Для этого используется другое название — «отбор невидимых поверхностей».

Если векторы треугольника расположены против часовой стрелки, значение его нормали отрицательное. Иными словами, его нормаль указывает на отрицательное направление оси z по отношению к текущей точке обзора. При использовании алгоритма TriangleCulling.NEGATIVE треугольники с отрицательными нормалями не визуализируются.

flash.display.Graphics.drawTriangles()flash.display.GraphicsTrianglePathВведение в трехмерные векторы.Трехмерный отбор невидимых поверхностей.NEGATIVE Задает отбор всех треугольников, которые направлены в сторону текущей точки обзора.negativeString Задает отбор всех треугольников, которые направлены в сторону текущей точки обзора. NONE Задает отсутствие отбора.noneString Задает отсутствие отбора. Визуализируются все треугольники в контуре. POSITIVE Задает отбор всех треугольников, которые направлены в обратную сторону по отношению к текущей точке обзора.positiveString Задает отбор всех треугольников, которые направлены в обратную сторону по отношению к текущей точке обзора. Это также называют отбором невидимых поверхностей.
NativeWindow Класс NativeWindow обеспечивает интерфейс для создания собственных окон рабочего стола и управления ими.flash.events:EventDispatcher Класс NativeWindow обеспечивает интерфейс для создания собственных окон рабочего стола и управления ими.

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается на мобильных устройствах или в средах AIR для телевизионных устройств. Используйте свойство NativeWindow.isSupported, чтобы проверить наличие поддержки в среде выполнения на настольных устройствах. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

Ссылка на экземпляр NativeWindow возвращается конструктором окон. Ссылка на экземпляр NativeWindow также доступна через свойство stage.nativeWindow любого экранного объекта в рабочей области окна:

var window:NativeWindow = displayObject.stage.nativeWindow;

Свойства экземпляра NativeWindow может получать только содержимое приложения. Если содержимое не из приложения попытается обратиться к объекту NativeWindow, будет отправлена ошибка системы безопасности.

Содержимое можно добавить в окно с помощью методов DisplayObjectContainer объекта Stage, таких как addChild().

Невозможно добавить компоненты Flex непосредственно в список отображения экземпляра NativeWindow. Вместо этого используйте компоненты Flex mx:WindowedApplication и mx:Window для создания окон и добавления других компонентов Flex в качестве дочерних объектов. Можно добавить SWF-содержимое на основе Flex непосредственно в окно NativeWindow, если SWF-файл загружен в собственный домен приложений и является содержимым приложения.

Чтобы создать корневое HTML-окно для отображения HTML-содержимого, обычно достаточно создать окно с помощью метода HTMLLoader.createRootWindow(). В окна, созданные таким способом, автоматически добавляется объект HTMLLoader. (Из кода JavaScript также можно использовать функцию window.open(). Однако этот метод дает меньше возможностей управления внешним видом и поведением окон.)

Далее перечислены асинхронные операции над объектами NativeWindow: close(), maximize(), minimize(), restore() и изменение bounds. Приложение может выявить выполнение этих операций, прослушивая соответствующие события.

Если свойство NativeApplication.autoExit имеет значение true, используемое по умолчанию, приложение закроется при закрытии последнего окна (и возврате всех обработчиков события close). Если autoExit имеет значение false, тогда для завершения работы приложения необходимо вызвать метод NativeApplication.nativeApplication.exit().

Объекты NativeWindow не очищаются после вызова конструктора окон и перед вызовом close(). Приложение должно самостоятельно закрывать свои окна.

flash.display.Stage.nativeWindowflash.display.NativeWindowInitOptionsflash.desktop.NativeApplicationflash.system.ApplicationDomainflash.html.HTMLLoader.createRootWindow()deactivate Отправляется данным объектом NativeWindow после деактивации окна.flash.events.Event.DEACTIVATEflash.events.Event Отправляется данным объектом NativeWindow после деактивации окна. activate Отправляется данным объектом NativeWindow после активации окна.flash.events.Event.ACTIVATEflash.events.Event Отправляется данным объектом NativeWindow после активации окна. close Отправляется данным объектом NativeWindow после закрытия окна.flash.events.Event.CLOSEflash.events.Event Отправляется данным объектом NativeWindow после закрытия окна. closing Отправляется этим объектом NativeMenu непосредственно перед закрытием окна.flash.events.Event.CLOSINGflash.events.Event Отправляется этим объектом NativeMenu непосредственно перед закрытием окна. Это событие можно отменить, чтобы предотвратить закрытие окна. displayStateChange Отправляется данным объектом NativeWindow после изменения свойства displayState окна.flash.events.NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGEflash.events.NativeWindowDisplayStateEvent Отправляется данным объектом NativeWindow после изменения свойства displayState окна.

Не изменяйте размер окна или состояние его отображения в обработчике событий displayStateChange.

displayStateChanging Отправляется данным объектом NativeWindow непосредственно перед изменением состояния отображения окна.flash.events.NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGINGflash.events.NativeWindowDisplayStateEvent Отправляется данным объектом NativeWindow непосредственно перед изменением состояния отображения окна. Это событие можно отменить, чтобы предотвратить изменение. Следующий пример иллюстрирует отмену события displayStateChanging. function displayStateChanging_handler(displayStateEvent:NativeWindowDisplayStateEvent):void { //shouldStopStateChange is an application-defined Boolean indicating //that display state changes should be canceled if (displayStateEvent.type == NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING && shouldStopStateChange) { displayStateEvent.preventDefault(); } } resize Отправляется данным объектом NativeWindow после изменения размеров окна.flash.events.NativeWindowBoundsEvent.RESIZEflash.events.NativeWindowBoundsEvent Отправляется данным объектом NativeWindow после изменения размеров окна. Событие resize отправляется при каждом изменении размеров (свойств width или height) окна, что может происходить вследствие изменения размеров окна под управлением системы; свертывания, развертывания или восстановления окна; или изменения размеров окна путем задания свойств width, height или bounds. События resize объекта NativeWindow отправляются во время циклов изменения размеров под управлением системы. Напротив, события resize объекта Stage отправляются, когда рабочая область готова для рисования. Событие изменения размера рабочей областиresizing Отправляется этим объектом NativeMenu непосредственно перед изменением размеров окна на рабочем столе.flash.events.NativeWindowBoundsEvent.RESIZINGflash.events.NativeWindowBoundsEvent Отправляется этим объектом NativeMenu непосредственно перед изменением размеров окна на рабочем столе. Это событие можно отменить, чтобы предотвратить изменение размеров или изменить его свойства. Следующий пример иллюстрирует отмену события resizing. function boundsChanging_handler(boundsEvent:NativeWindowBoundsEvent):void { //shouldStopResize is an application-defined Boolean indicating //that resize operations should be canceled if (boundsEvent.type == NativeWindowBoundsEvent.RESIZING && shouldStopResize) { boundsEvent.preventDefault(); } } move Отправляется данным объектом NativeWindow после перемещения окна на рабочем столе.flash.events.NativeWindowBoundsEvent.MOVEflash.events.NativeWindowBoundsEvent Отправляется данным объектом NativeWindow после перемещения окна на рабочем столе.

Событие move отправляется при каждом изменении размеров (свойств x или y) окна, что может происходить вследствие перемещения окна под управлением системы; свертывания, развертывания или восстановления окна; или изменения местоположения окна путем задания свойств x, y или bounds.

Примечание. Избегайте действий, которые могут открыть одновременные диалоговые окна операционной системы в функциях обработчиков для событий moving и move объекта NativeWindow. К примеру, такое может произойти, если обе функции обработчиков выдают ошибки. Если это произойдет, второе открытое диалоговое окно не будет отвечать на щелчки мыши, его придется закрыть с клавиатуры.

moving Отправляется этим объектом NativeMenu непосредственно перед перемещением окна на рабочем столе.flash.events.NativeWindowBoundsEvent.MOVINGflash.events.NativeWindowBoundsEvent Отправляется этим объектом NativeMenu непосредственно перед перемещением окна на рабочем столе. Это событие можно отменить, чтобы предотвратить перемещение или модифицировать его свойства.

Примечание. Избегайте действий, которые могут открыть одновременные диалоговые окна операционной системы в функциях обработчиков для событий moving и move объекта NativeWindow. К примеру, такое может произойти, если обе функции обработчиков выдают ошибки. Если это произойдет, второе открытое диалоговое окно не будет отвечать на щелчки мыши, его придется закрыть с клавиатуры.

NativeWindow Создает новый экземпляр NativeWindow и соответствующее окно операционной системы.Если параметр initOptions не действителен. IllegalOperationErrorflash.errors:IllegalOperationErrorinitOptionsflash.display:NativeWindowInitOptionsОбъект, содержащий свойства инициализации для данного окна. Создает новый экземпляр NativeWindow и соответствующее окно операционной системы.

Настройки, определенные параметром initOptions, нельзя изменять после создания окна. Недействительные параметры initOptions приведут к появлению ошибки о недопустимой операции. Действительные настройки, которые недоступны в текущей системе, вызовут создание исключения. При необходимости возможности, специфичные для текущей операционной системы, можно определить с помощью статических членов NativeWindow, таких как systemMaxSize.

Размер окна по умолчанию определяется операционной системой, окна создаются в невидимом состоянии. Чтобы предотвратить явное изменение окна, не изменяйте значение его свойства visible на true и не вызывайте метод activate(), пока не завершится изменение окна.

В следующем примере создается и активируется новый экземпляр NativeWindow: import flash.display.NativeWindowInitOptions; import flash.display.NativeWindowSystemChrome; import flash.display.NativeWindowType; import flash.display.NativeWindow; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.geom.Rectangle; var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions(); windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD; windowOptions.type = NativeWindowType.NORMAL; var newWindow:NativeWindow = new NativeWindow(windowOptions); newWindow.stage.scaleMode = StageScaleMode.NO_SCALE; newWindow.stage.align = StageAlign.TOP_LEFT; newWindow.bounds = new Rectangle(100, 100, 800, 800); newWindow.activate();
flash.display.NativeWindowInitOptionsflash.html.HTMLLoader.createRootWindow()
activate Активирует данное окно. Активирует данное окно.

Активация окна:

  • делает окно видимым;
  • выводит его поверх остальных окон;
  • помещает его в фокус клавиатуры или мыши.

В Linux activate() является асинхронной операцией.

Объект NativeWindow отправляет событие activate во всех платформах.

Следующий пример показывает, как сделать окно активным:

С помощью ссылки на экранный объект в рабочей области окна:

displayObject.stage.nativeWindow.activate();
С помощью ссылки на экземпляр класса NativeWindow: windowObj.activate(); Из JavaScript на странице HTML, отображаемой в окне (где window является глобальным объектом окна JavaScript): window.nativeWindow.activate();
visibleorderToFront()
close Закрывает окно. Закрывает окно.

Событие close отправляется сразу после завершения операции закрытия. Событие closing не отправляется. Если необходимо разрешить отмену операции закрытия, отправьте событие closing и проверьте, отменят ли зарегистрированные прослушиватели поведение по умолчанию перед вызовом метода close().

Когда окно закрывается, любые окна, которыми оно владеет, также закрываются. Находящиеся в собственности окна не отправляются закрытие события.

Если на отображаемые в окне экземпляры экранных объектов нет других ссылок, они будут очищены и уничтожены, за исключением начального окна приложения, созданного в AIR. Чтобы разрешить очистку экранных объектов на начальном окне, удалите их из рабочей области окна.

После закрытия объект NativeWindow все еще доступен для ссылок, но обращение к большинству свойств и методов приведет к появлению ошибки о недопустимой операции.

Закрытые окна нельзя открыть повторно. Если окно уже закрыто, никакие действия не предпринимаются и события не отправляются.

Примечание. Чтобы скрыть окно, не закрывая его, задайте свойству visible окна значение false.

Следующий пример показывает, как закрыть окно:

С помощью ссылки на экземпляр NativeWindow (windowObj):

windowObj.close();
С помощью ссылки на экранный объект в рабочей области окна: displayObj.stage.nativeWindow.close(); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или корневом окне HTML): window.close(); //overriddable in HTMLHost Или: window.nativeWindow.close(); //not overriddable Следующий пример показывает, как можно разрешить отмену операции закрытия (где windowObj является экземпляром NativeWindow, который нужно закрыть): public function closeCommand():Boolean{ var closeEvent:Event = new Event(Event.CLOSING,true,true); windowObj.dispatchEvent(closeEvent); if(!closeEvent.isDefaultPrevented()){ windowObj.close(); return true; } else { return false; } } Следующий пример показывает, как закрыть окно из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или корневом окне HTML) с разрешением отмены этой операции: <script src="AIRAliases.js" type="text/javascript"></script> <script type="text/javascript"> var dirtyData = false; function closeWindow(){ var closingEvent = new air.Event(air.Event.CLOSING,true,true); window.nativeWindow.dispatchEvent(closingEvent); if(!closingEvent.isDefaultPrevented()){ window.nativeWindow.close(); //or use: window.close(); return true; } else { return false; } } function onClosing(event){ if(dirtyData){ event.preventDefault(); //Save data... } } window.nativeWindow.addEventListener(air.Event.CLOSING,onClosing); </script>
flash.display.NativeWindow.closedflash.html.HTMLLoaderflash.html.HTMLHost
globalToScreen Преобразует точку в координатах пикселей относительно исходной точки в рабочей области окна (глобальной точки списка отображения) в точку на виртуальном рабочем столе.Заданная глобальная точка относительно рабочего стола. flash.geom:PointglobalPointflash.geom:PointТочка в рабочей области, преобразуемая в точку на экране. Преобразует точку в координатах пикселей относительно исходной точки в рабочей области окна (глобальной точки списка отображения) в точку на виртуальном рабочем столе.

Координаты виртуального рабочего стола строятся относительно верхнего левого угла главного монитора.

flash.display.Screen
listOwnedWindows Возвращает список объектов NativeWindow, которые владеются этим окном. Vector.Объект <NativeWindow>, содержащий нуль или больше объектов NativeWindow, которые владеются этим экземпляром. Возвращает список объектов NativeWindow, которыми владеет это окно.

Вы не можете изменить собственность NativeWindows, добавляя или удаляя объекты из возвращенного вектора. Собственность Окно не может быть изменена после того, как окно создано.

flash.display. NativeWindowInitOptions.owner
maximize Разворачивает данное окно.Если этот метод вызван после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Разворачивает данное окно.

Вызов метода maximize() отправляет событие displayStateChange и, когда применимо, события move и resize. Системный Chrome отправляет событие displayStateChanging, которое можно отменить, когда пользователь инициирует команду «развернуть». При желании можно внедрить такое поведение логики разворачивания.

Метод maximize() выполняется асинхронно. Чтобы узнать о завершении изменения состояния, прослушивайте событие displayStateChange. Если окно уже развернуто, никакие действия не предпринимаются и события не отправляются.

Примечания о вариантах поведения ОС

  • В операционных системах, таких как Mac OS X, где разворачивание окна не предотвращает изменения размеров, вызов метода maximize() приведет к увеличению окна на весь экран, но не предотвратит последующего изменения его размеров. Изменение размеров развернутого окна также приведет к восстановлению состояния отображения.
  • В некоторых операционных системах, таких как Mac OS X, а также в некоторых диспетчерах окон Linux, при разворачивании окна его ширина и высота не превышают значения, заданные свойством maxSize. В других операционных системах окно будет развернуто на весь экран, даже если размеры экрана превышают значения свойства maxSize.
  • Некоторые диспетчеры окон Linux запрещают разворачивание служебных окон.
Следующий пример показывает, как можно разрешить отмену операции разворачивания: public function maximizeWindow(nativeWin:NativeWindow):Boolean{ if(nativeWin.displayState != NativeWindowDisplayState.MAXIMIZED){ var beforeState:String = nativeWin.displayState; var afterState:String = NativeWindowDisplayState.MAXIMIZED; var displayStateEvent:NativeWindowDisplayStateEvent = new NativeWindowDisplayStateEvent(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); nativeWin.dispatchEvent(displayStateEvent); if(!displayStateEvent.isDefaultPrevented()){ nativeWin.maximize(); return true; } else { return false; } } return false; } Следующий пример показывает, как можно разрешить отмену операции разворачивания окна из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или окне HTML): function maximizeWindow(nativeWin){ if(nativeWin.displayState != air.NativeWindowDisplayState.MAXIMIZED){ var beforeState = nativeWin.displayState; var afterState = air.NativeWindowDisplayState.MAXIMIZED; var displayStateEvent = new air.NativeWindowDisplayStateEvent(air.NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); nativeWin.dispatchEvent(displayStateEvent); if(!displayStateEvent.isDefaultPrevented()){ nativeWin.maximize(); return true; } else { return false; } } return false; }
flash.display.NativeWindowDisplayStateflash.events.NativeWindowDisplayStateEvent
minimize Сворачивает данное окно.Если этот метод вызван после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сворачивает данное окно.

Вызов метода minimize() отправляет событие displayStateChange и, когда применимо, события move и resize. Тогда как системный Chrome отправляет событие displayStateChanging, которое можно отменить, когда пользователь инициирует команду «свернуть», этого не происходит при вызове minimize() напрямую. При желании для логики сворачивания можно внедрить такое поведение.

Метод minimize() выполняется асинхронно. Чтобы узнать о завершении изменения состояния, прослушивайте событие displayStateChange, которое отправляется на всех платформах. Если окно уже свернуто, никакие действия не предпринимаются и события не отправляются.

При сворачивании окна скрываются все окна, владельцем которых является это окно. Находящиеся в собственности окна не отправляют события displayStateChanging и displayStateChange.

Примечания.

  • В ОС Windows, если свернуть невидимое окно (visible == false), оно становится видимым.
  • Некоторые диспетчеры окон Linux запрещают сворачивание служебных окон.
Следующий пример показывает, как разрешить отмену вызова метода minimize() путем отправки события displayStateChanging: public function minimizeWindow(nativeWin:NativeWindow):Boolean{ if(nativeWin.displayState != NativeWindowDisplayState.MINIMIZED){ var beforeState:String = nativeWin.displayState; var afterState:String = NativeWindowDisplayState.MINIMIZED; var displayStateEvent:NativeWindowDisplayStateEvent = new NativeWindowDisplayStateEvent(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); nativeWin.dispatchEvent(displayStateEvent); if(!displayStateEvent.isDefaultPrevented()){ nativeWin.minimize(); return true; } else { return false; } } return false; } Следующий пример показывает, как разрешить отмену вызова метода minimize() в сценарии JavaScript, выполняющемся в объекте HTMLLoader (или окне HTML): function minimizeWindow(){ if(window.nativeWindow.displayState != air.NativeWindowDisplayState.MINIMIZED){ var beforeState = window.nativeWindow.displayState; var afterState = air.NativeWindowDisplayState.MINIMIZED; var displayStateEvent = new air.NativeWindowDisplayStateEvent(air.NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); window.nativeWindow.dispatchEvent(displayStateEvent); if(!displayStateEvent.isDefaultPrevented()){ window.nativeWindow.minimize(); return true; } else { return false; } } return false; }
flash.display.NativeWindowDisplayStateflash.events.NativeWindowDisplayStateEvent
notifyUser Запускает через операционную систему визуальный сигнал о том, что произошло событие, представляющее интерес.typeStringСтрока, описывающая срочность оповещения. Запускает через операционную систему визуальный сигнал о том, что произошло событие, представляющее интерес.

Когда NativeWindow.supportsNotification имеет значение true, визуальный сигнал соответствует правилам собственной операционной системы. Например, в Windows мигает значок на панели задач.

Параметр type определяет интенсивность сигнала. Константы для разрешенных значений определены в классе NotificationType и могут быть следующими:

  • NotificationType.INFORMATIONAL
  • NotificationType.CRITICAL

Сигналы для оповещений информативного характера могут быть кратковременными, а сигналы для критических оповещений продолжаются, пока пользователь не активирует данное окно. Не все диспетчеры окон Linux поддерживают два уровня оповещений. Для таких диспетчеров результат вызова метода notifyUser() будет одинаковым независимо от заданного параметра.

Примечание. Вызов метода notifyUser(), когда NativeWindow.supportsNotification имеет значение false разрешен, но не выполняет никаких действий.

orderInBackOf Отправляет это окно непосредственно под заданное окно.true, если это окно успешно выведено под остальные; false, если окно невидимо или свернуто. Booleanwindowflash.display:NativeWindowОкно приложения. Отправляет это окно непосредственно под заданное окно.

Не активирует это окно или приложение и не переводит его в фокус. Порядок свернутых или скрытых окон (visible имеет значение false) изменить нельзя.

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

Некоторые диспетчеры окон Linux запрещают размещение служебных окон под обычными окнами.

Следующие примеры показывают, как поместить окно позади другого окна с помощью ссылок на экземпляры NativeWindow: windowBehind.orderInBackOf(windowFront); С помощью ссылок на экранные объекты в рабочих областях окна: displayObjBehind.stage.nativeWindow.orderInBackOf(displayObjectFront.stage.nativeWindow); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или корневом окне HTML), со ссылками на два объекта окна JavaScript: jsWindowObjBehind.nativeWindow.orderInBackOf(jsWindowObjFront.nativeWindow);
orderInFrontOf Помещает данное окно непосредственно над заданным окном.true, если это окно успешно выведено поверх остальных; false, если окно невидимо или свернуто. Booleanwindowflash.display:NativeWindowОкно приложения. Помещает данное окно непосредственно над заданным окном.

Не активирует это окно или приложение и не переводит его в фокус. Порядок свернутых или скрытых окон (visible имеет значение false) изменить нельзя.

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

Некоторые диспетчеры окон Linux не позволяют обычным окнам располагаться поверх служебных окон.

Следующие примеры показывают, как поместить окно поверх другого окна с помощью ссылок на экземпляры NativeWindow: windowFront.orderInFrontOf(windowBehind); С помощью ссылок на экранные объекты в рабочих областях окна: displayObjFront.stage.nativeWindow.orderInFrontOf(displayObjectBehind.stage.nativeWindow); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или корневом окне HTML), со ссылками на два объекта окна JavaScript: jsWindowObjFront.nativeWindow.orderInFrontOf(jsWindowObjBehind.nativeWindow);
orderToBack Отправляет это окно под все остальные видимые окна.true, если это окно успешно выведено под остальные; false, если окно невидимо или свернуто. Boolean Отправляет это окно под все остальные видимые окна.

Не активирует это окно или приложение и не переводит его в фокус. Порядок свернутых или скрытых окон (visible имеет значение false) изменить нельзя.

Если alwaysInFront имеет значение true, то вызов этого метода не переместит это окно поверх тех окон, для которыхalwaysInFront имеет значение false.

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

Некоторые диспетчеры окон Linux запрещают размещение служебных окон под обычными окнами.

Следующие примеры показывают, как поместить окно позади всех других окон приложения (с той же настройкой alwaysInFront): windowObj.orderToBack(); С помощью ссылки на экранный объект в рабочей области окна: displayObj.stage.nativeWindow.orderToBack(); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.orderToBack();
orderToFront Выводит это окно поверх всех остальных видимых окон.true, если это окно успешно выведено поверх остальных; false, если окно невидимо или свернуто. Boolean Выводит это окно поверх всех остальных видимых окон.

Не активирует это окно или приложение и не переводит его в фокус. Порядок свернутых или скрытых окон (visible имеет значение false) изменить нельзя.

Если alwaysInFront имеет значение false, то вызов этого метода не переместит это окно поверх тех окон, для которыхalwaysInFront имеет значение true.

Окно никогда не может быть перемещено перед окном, которым оно владеет. Если это окно владеет другими окнами, то те окна также перемещены в передний план, сохраняя их текущий заказ друг относительно друга. Если у этого окна есть владелец, то владельца и его другие находящиеся в собственности окна также приказывают переднему плану заказа витрины. Это окно перемещено перед другими окнами, у которых есть тот же самый владелец.

Некоторые диспетчеры окон Linux не позволяют обычным окнам располагаться поверх служебных окон.

В следующих примерах показано, как поместить окно поверх всех других окон приложения (с той же настройкой alwaysInFront): windowObj.orderToFront(); С помощью ссылки на экранный объект в рабочей области окна: displayObj.stage.nativeWindow.orderToFront(); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.orderToFront();
restore Восстанавливает окно из свернутого или развернутого состояния.Если метод вызван после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Восстанавливает окно из свернутого или развернутого состояния.

Вызов метода restore() отправляет событие displayStateChange и, когда применимо, события move и resize. Системный Chrome отправляет событие displayStateChanging, которое можно отменить, когда пользователь инициирует команду «восстановить». При необходимости можно внедрить такое поведение логики разворачивания.

Если окно уже находится в состоянии NativeWindowDisplayState.NORMAL, никакие действия не выполняются и события не отправляются.

Чтобы узнать о завершении изменения состояния, прослушивайте событие displayStateChange, которое отправляется на всех платформах.

Следующий пример показывает, как можно разрешить отмену операции восстановления: public function restoreWindow(nativeWin:NativeWindow):Boolean{ if(nativeWin.displayState != NativeWindowDisplayState.NORMAL){ var beforeState:String = nativeWin.displayState; var afterState:String = NativeWindowDisplayState.NORMAL; var displayStateChangingEvent:NativeWindowDisplayStateEvent = new NativeWindowDisplayStateEvent(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); nativeWin.dispatchEvent(displayStateChangingEvent); if(!displayStateChangingEvent.isDefaultPrevented()){ nativeWin.restore(); return true; } else { return false; } } return false; } Следующий пример показывает, как можно разрешить отмену операции восстановления окна из процедуры JavaScript, выполняющейся в объекте HTMLLoader (или окне HTML): function restoreWindow(nativeWin){ if(window.nativeWindow.displayState != air.NativeWindowDisplayState.NORMAL){ var beforeState = window.nativeWindow.displayState; var afterState = air.NativeWindowDisplayState.NORMAL; var displayStateEvent = new air.NativeWindowDisplayStateEvent(air.NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, true,true,beforeState,afterState); window.nativeWindow.dispatchEvent(displayStateEvent); if(!displayStateEvent.isDefaultPrevented()){ window.nativeWindow.restore(); return true; } else { return false; } } return false; }
flash.display.NativeWindowDisplayStateflash.events.NativeWindowDisplayStateEvent
startMove Запускает перемещение данного окна системой.Если метод вызван после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationErrortrue, если перемещение инициировано успешно, и false, если окно развернуто. Boolean Запускает перемещение данного окна системой.

При вызове из события mouseDown этот метод начинает последовательность перемещения мышью, которая продолжается до получения события mouseUp.

При вызове из другого кода этот метод начинает выполнять последовательность перемещения с помощью клавиатуры или мыши в соответствии с последовательностью, используемой по умолчанию в операционной системе.

Во время выполнения последовательности будет отправляться серия событий по ходу перемещения окна. Для каждого добавочного перемещения отправляется событие moving, а затем, если moving не отменяется, обновляется местоположение окна и отправляется событие move. Если событие moving отменено, последовательность перемещения немедленно прекращается.

Следующий пример показывает, как переместить окно в ответ на событие mouseDown: var initOpts:NativeWindowInitOptions = new NativeWindowInitOptions(); var win:NativeWindow = new NativeWindow(initOpts); win.activate(); win.stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); function mouseDownHandler(event:MouseEvent):void { win.startMove(); }
startResize Запускает изменение размеров данного окна под управлением системы.Если метод вызван после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationErrortrue, если изменение размеров инициировано успешно, и false, если окно развернуто. BooleanedgeOrCornerStringBRКонстанта класса NativeWindowResize, задающая край или угол окна для изменения размеров. Ниже приводятся допустимые значения.

ЗначениеВыравнивание по вертикалиВыравнивание по горизонталиNativeWindowResize.TOPВерхний крайЦентрNativeWindowResize.BOTTOMНижний крайЦентрNativeWindowResize.LEFTЦентрСлеваNativeWindowResize.RIGHTЦентрСправаNativeWindowResize.TOP_LEFTВерхний крайСлеваNativeWindowResize.TOP_RIGHTВерхний крайСправаNativeWindowResize.BOTTOM_LEFTНижний крайСлеваNativeWindowResize.BOTTOM_RIGHTНижний крайСправаNativeWindowResize.NONE----

Запускает изменение размеров данного окна под управлением системы.

При вызове из обработчика события mouseDown этот метод начинает выполнять последовательность изменения размеров мышью, которая продолжается до получения события mouseUp.

При вызове из другого кода этот метод начинает выполнять последовательность изменения размеров с помощью клавиатуры или мыши в соответствии с последовательностью, используемой по умолчанию в операционной системе.

Во время выполнения последовательности будет отправляться серия событий по ходу изменения размеров окна. Для каждого добавочного изменения отправляется событие resizing, а затем, если resizing не отменяется, обновляется местоположение окна и отправляется событие resize. Если событие resizing отменено, последовательность перемещения немедленно прекращается.

Следующий пример показывает, как изменить размер окна в ответ на событие mouseDown: stage.addEventListener(MouseEvent.MOUSE_DOWN, onResizeCommand); function onResizeCommand(event:MouseEvent):void { var win:NativeWindow = event.target.nativeWindow; var resizeFrom:String = ""; if (event.stageY < win.height * .33) { resizeFrom = NativeWindowResize.TOP; } else if (event.stageY > win.height * .66) { resizeFrom = NativeWindowResize.BOTTOM; } if (event.stageX < win.width * .33) { resizeFrom += NativeWindowResize.LEFT; } else if (event.stageX > win.width * .66) { resizeFrom += NativeWindowResize.RIGHT; } win.startResize(resizeFrom); }
flash.display.NativeWindowResize
active Указывает, принадлежит ли окно активному приложению.Boolean Указывает, принадлежит ли окно активному приложению.

Используйте метод activate() для активации окна.

flash.display.NativeWindow.activate()flash.desktop.NativeApplication.activate()
alwaysInFront Определяет, будет ли это окно всегда отображаться поверх всех остальных окон (включая окна других приложений).Boolean Определяет, будет ли это окно всегда отображаться поверх всех остальных окон (включая окна других приложений).

В системном порядке отображения есть две группы окон. Окна группы alwaysInFront всегда отображаются поверх всех остальных окон. Порядок глубины окон одной группы определяется в обычном порядке. Другими словами, активация окна будет выводить его поверх остальных окон в той же группе.

Изменение значения alwaysInFront с false на true выведет окно поверх всех остальных окон. При изменении значения с true на false отправит окно под окна, всегда отображаемые поверх остальных, но над окнами другой группы. При настройке текущего значения свойства, порядок глубины окон не изменится. Установка свойства alwaysInFront окна, у которого имеется владелец, не дает никакого эффекта.

Свойству alwaysInFront следует задавать значение true лишь в редких случаях, так как окна с таким параметром будут отображаться над окнами других приложений, даже если такое приложение активно.

Примечания о вариантах поведения ОС

  • Некоторые диспетчеры окон Linux не отображают окна, свойству alwaysInFront которых задано значение , перед полноэкранными окнами.
  • В ОС Mac® OS X задание для alwaysInFront значения true не будет иметь силы, если свойству displayState рабочей области окна задано значение fullScreen или fullScreenInteractive.
В следующих примерах окно принудительно отображается поверх всех других окон (которые не отображаются поверх других окон в принудительном порядке): windowObj.alwaysInFront = true; С помощью ссылки на экранный объект в рабочей области окна: displayObject.stage.nativeWindow.alwaysInFront=true; Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.alwaysInFront = true;
bounds Размер и местоположение окна.flash.geom:RectangleЕсли прямоугольник имеет значение null или содержит недопустимые значения. ArgumentErrorArgumentErrorЕсли свойство bounds получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Размер и местоположение окна.

Размеры окна включают системный Chrome. Размеры рабочей области окна равны размерам окна минус размер системного Chrome. Изменение ширины и высоты окна приведет к изменению свойств stageWidth и stageHeight рабочей области. И наоборот, изменение размеров рабочей области приведет к изменению размеров окна.

В корневом HTML-окне свойства outerWidth и outerHeight эквиваленты свойствам окна height и width. Свойства innerWidth и innerHeight равны свойствам stage.stageWidth и stage.stageHeight минус толщина автоматических полос прокрутки, отображаемых в окне.

Событие resize отправляется при каждом изменении ширины или высоты окна. Подобным образом, событие move отправляется при каждом изменении исходной точки (х, у) окна. В Mac OS и Windows при задании свойства bounds напрямую событие moving или resizing не отправляется. Однако на Linux NativeWindow передает события moving и resizing, если установлено свойство bounds.

Задание свойства bounds окна эквивалентно заданию его свойств x, y, width и height. Подобным образом, задание индивидуальных размеров равносильно заданию свойства bounds. При установке всех измерений одновременно с помощью свойства bounds, отправляется меньшее число событий.

Соблюдение порядка, в котором были заданы отдельные размеры, не гарантируется. В диспетчерах окон Linux, запрещающих выход границ окна за пределы области рабочего стола, изменение отдельных свойств может быть заблокировано, даже если результатом применения всех изменений свойств будет окно допустимого размера.

Если указанные ширина или высота не достигают минимальных значений или превышают максимальные значения, то для окна устанавливаются значения, наиболее близкие к разрешенным. Минимальные и максимальные ширина и высота определяются следующими факторами:

  • Свойства minSize и maxSize объекта NativeWindow
  • Максимально допустимое и минимально допустимые значения для операционной системы, являющиеся значениями NativeWindow.systemMinSize и NativeWindow.systemMaxSize.
  • Максимальное значение ширины и высоты окна в Adobe AIR, равное 4095 пикселам. (В AIR 1.5 и более ранних версиях максимальная ширина и высота окна составляет 2880 пикселов.)
  • Минимальные ширина и высота, требуемые для отображаемого системного Chrome.

При изменении положения или размеров окна пиксельные значения округляются до ближайшего целого числа.

Следующие примеры задают границы окна с помощью ссылки на объект NativeWindow: windowObj.bounds = new Rectangle(200, 200, 1000, 800); С помощью ссылки на экранный объект в рабочей области окна: displayObject.stage.nativeWindow.bounds = new Rectangle(20, 20, 800, 600); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.bounds = new air.Rectangle(20, 20, 800, 600);
flash.display.NativeWindowInitOptions.resizable
closed Указывает, закрыто ли окно.Boolean Указывает, закрыто ли окно.

Попытка получить следующие свойства закрытого окна приведет к появлению ошибки о недопустимой операции:

  • title
  • bounds
  • x, y, width, height
  • displayState
  • visible

Подобным образом, попытка вызвать следующие методы для закрытого окна приведет к появлению ошибки о недопустимой операции:

  • minimize()
  • maximize()
  • restore()
  • startResize()
  • startMove()
В следующем примере показано, как получить свойство closed окна: var isWindowClosed:Boolean = windowObj.closed; С помощью ссылки на экранный объект в рабочей области окна: var isWindowClosed:Boolean = displayObject.stage.nativeWindow.closed; Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): var isWindowClosed = window.nativeWindow.closed;
displayState Состояние отображения окна.StringЕсли свойство displayState получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Состояние отображения окна.

Константы для возможных значений определяются классом NativeWindowDisplayState:

  • NativeWindowDisplayState.NORMAL
  • NativeWindowDisplayState.MINIMIZED
  • NativeWindowDisplayState.MAXIMIZED
Следующий пример показывает, как получить текущее состояние отображения окна с помощью ссылки на объект окна: var state:String = windowObj.displayState;
flash.display.NativeWindowDisplayState
height Высота окна в пикселях.NumberЕсли задано недопустимое значение или null. ArgumentErrorArgumentErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Высота окна в пикселях.

Размеры окна включают примененный к нему системный хром. Высота доступной для использования области экрана внутри окна указывается в свойстве Stage.stageHeight.

Изменение свойства окна height равносильно изменению высоты через свойство bounds.

Если указанная высота не достигает минимально допустимого значения или превышает максимально допустимое значение, то значение высоты окна устанавливается на ближайшее разрешенное значение. Минимальная и максимальная высота определяется следующими факторами:

  • Свойства minSize.x и maxSize.x объекта NativeWindow
  • Минимально допустимое и максимально допустимое значения для операционный системы, являющиеся значениями NativeWindow.systemMinSize.x и NativeWindow.systemMaxSize.x.
  • Максимальная высота окна в Adobe AIR, которая составляет 4095 пикселов (2880 пикселов в AIR 1.5 и более ранних версиях).

В Linux установка свойства height является асинхронной операцией.

Чтобы узнать о завершении изменения высоты, прослушивайте событие resize, отправляемое на всех платформах.

При изменении высоты окна пиксельные значения округляются до ближайшего целого числа.

flash.display.NativeWindow.boundsflash.display.Stage.stageHeight
isSupported Указывает, поддерживаются ли собственные окна в клиентской системе.Boolean Указывает, поддерживаются ли собственные окна в клиентской системе. maxSize Максимальный размер окна.flash.geom:PointЕсли назначенный размер находится за рамками минимального и максимального размеров окна. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли размер запрещен для текущих полномочий содержимого. SecurityErrorSecurityErrorЕсли размер имеет значение null или содержит недопустимые значения. ArgumentErrorArgumentErrorЕсли свойство maxSize получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Максимальный размер окна.

Предельный размер определяется как координаты объекта Point. Свойство точки x соответствует ширине окна, а свойство y — высоте окна.

Ограничение maxSize применяется для операций изменения размера окна, вызываемых как посредством кода ActionScript, так и посредством операционной системы.

При задании maxSize границы окна изменятся, если текущие границы больше нового максимального размера.

Если указанные ширина и высота превышают максимально допустимые значения, для ширины окна выбирается ближайшее разрешенное значение. Минимальные и максимальные ширина и высота определяются следующими факторами:

  • Максимально допустимое значение для операционной системы, являющееся значением NativeWindow.systemMaxSize.
  • Максимальное значение ширины и высоты окна в Adobe AIR, равное 4095 пикселам. (В AIR 1.5 и более ранних версиях максимальная ширина и высота окна составляет 2880 пикселов.)

Примечание. В некоторых операционных системах, таких как Mac OS X, окно разворачивается до значения, заданного свойством maxSize, даже если оно будет меньше экрана операционной системы. Несмотря на это окно будет находиться в состоянии развернутого отображения.

Следующие примеры показывают, как задать максимальный допустимый размер окна. windowObj.maxSize = new Point(1040,920); С помощью ссылки на экранный объект в рабочей области окна: displayObject.stage.nativeWindow.maxSize = new Point(800,600); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.maxSize = new air.Point(960,960);
flash.display.NativeWindow.systemMinSizeflash.display.NativeWindow.systemMaxSize
maximizable Сообщает параметр maximizable, использованный для создания данного окна.BooleanПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр maximizable, использованный для создания данного окна.

Параметр maximizable нельзя изменить после создания окна.

Примечание. Некоторые диспетчеры окон Linux разрешают пользователю разворачивать окна, даже когда свойству maximizable задано значение false.

flash.display.NativeWindowInitOptions.maximizable
menu Собственное меню для данного окна.flash.display:NativeMenu Собственное меню для данного окна.

Когда объект NativeMenu назначается свойству окна menu, для этого окна будет отображаться собственное меню, если NativeWindow.supportsMenu имеет значение true и если свойство systemChrome не имеет значение NativeWindowSystemChrome.NONE.

Примечание. Назначить меню для окна, когда NativeWindow.supportsMenu имеет значение false или когда свойство окна systemChrome имеет значение NativeWindowSystemChrome.NONE можно, но эта настройка не будет иметь силы. Свойство NativeWindow.supportsMenu позволяет определить, поддерживает ли операционная система оконные меню. Использование других средств (например, Capabilities.os) для определения поддержки может привести к ошибкам программирования (если некоторые целевые операционные системы не рассматриваются).

flash.display.NativeWindow.supportsMenu
minSize Минимальный размер окна.flash.geom:PointЕсли назначенный размер находится за рамками минимального и максимального размеров окна, заданных в операционной системе. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли размер запрещен для текущих полномочий содержимого. SecurityErrorSecurityErrorЕсли размер имеет значение null или содержит недопустимые значения. ArgumentErrorArgumentErrorЕсли свойство minSize получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Минимальный размер окна.

Предельный размер определяется как координаты объекта Point. Свойство точки x соответствует ширине окна, а свойство y — высоте окна.

При задании minSize границы окна изменятся, если текущие границы меньше нового минимального размера.

Ограничение minSize применяется для операций изменения размера окна, вызываемых как посредством кода ActionScript, так и посредством операционной системы.

Примечание. Ширина и высота любого отображаемого системного Chrome может препятствовать уменьшению окна до заданного минимального размера.

Следующие примеры показывают, как задать минимальный допустимый размер окна: windowObj.minSize = new Point(200,80); С помощью ссылки на экранный объект в рабочей области окна: displayObject.stage.nativeWindow.minSize = new Point(120,60); Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.minSize = new air.Point(80,60);
flash.display.NativeWindow.systemMinSizeflash.display.NativeWindow.systemMaxSize
minimizable Сообщает параметр minimizable, использованный для создания данного окна.BooleanПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр minimizable, использованный для создания данного окна.

Параметр minimizable нельзя изменить после создания окна.

Примечание. Некоторые диспетчеры окон Linux разрешают пользователю сворачивать окна, даже когда свойству minimizable задано значение false.

flash.display.NativeWindowInitOptions.minimizable
owner Объект NativeWindow, который владеет этим окном.flash.display:NativeWindow Объект NativeWindow, который владеет этим окном.

Собственность Окно установлена, когда окно создано и не может быть изменено. Чтобы создать окно, у которого есть владелец, устанавливает объект NativeWindow обладания как владелец свойства объекта NativeWindowInitOptions, использованного, чтобы создать находящееся в собственности окно.

Примечание. В Linux некоторые диспетчеры окон не отображают находящиеся во владении окна на переднем плане относительно окна владельца, если для этого окна установлен полноэкранный режим.

flash.display. NativeWindowInitOptions.owner
resizable Сообщает параметр resizable для изменения размера, использованный для создания данного окна.BooleanПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр resizable для изменения размера, использованный для создания данного окна.

Параметр resizable нельзя изменить после создания окна.

flash.display.NativeWindowInitOptions.resizable
stage Объект Stage для данного окна.flash.display:Stage Объект Stage для данного окна. Объект Stage является корневым объектом в архитектуре экранных объектов, используемой в SWF-содержимом на базе ActionScript 3.0.

Рабочая область находится в корне списка отображения для данного окна. Добавьте визуальные экранные объекты в окно путем добавления в рабочую область или в другой объект, уже находящийся в списке отображения данного рабочей области. Размеры рабочей области соответствуют размеру области клиента окна, когда оно использует системный Chrome. Если же системный Chrome не используется, размеры рабочей области равны размерам окна.

В следующем примере показано, как задать свойства рабочей области для экземпляра NativeWindow: import flash.display.StageAlign; windowObj.stage.align = StageAlign.TOP_LEFT;
flash.display.Stage
supportsMenu Указывает, поддерживает ли AIR меню собственного окна в текущей операционной системе.Boolean Указывает, поддерживает ли AIR меню собственного окна в текущей операционной системе.

Когда NativeWindow.supportsMenu имеет значение true, для окна будет отображаться собственное меню, когда свойству окна menu назначается объект NativeMenu (если свойство окна systemChrome имеет значение NativeWindowSystemChrome.NONE). Свойство NativeWindow.supportsMenu позволяет определить, поддерживает ли операционная система оконные меню. Использование других средств (например, Capabilities.os) для определения поддержки может привести к ошибкам программирования (если некоторые целевые операционные системы не рассматриваются).

Примечание. Назначить меню для окна, когда NativeWindow.supportsMenu имеет значение false или когда свойство окна systemChrome имеет значение NativeWindowSystemChrome.NONE можно, но эта настройка не будет иметь силы.

flash.display.NativeMenuflash.desktop.NativeApplication.supportsMenu
supportsNotification Указывает, поддерживает ли AIR сигналы оповещения окна в текущей операционной системе.Boolean Указывает, поддерживает ли AIR сигналы оповещения окна в текущей операционной системе.

Когда NativeWindow.supportsNotification имеет значение true, вызов метода окна notifyUser() приведет к отображению визуального сигнала о том, что произошло интересующее пользователя событие. Визуальный сигнал будет соответствовать правилам установленной операционной системы. Например, в Windows® мигает значок на панели задач.

Примечание. Вызов метода notifyUser(), когда NativeWindow.supportsNotification имеет значение false разрешен, но не выполняет никаких действий.

flash.display.NativeWindow.notifyUser()
supportsTransparency Указывает, поддерживает ли AIR собственные окна с прозрачными пикселями.Boolean Указывает, поддерживает ли AIR собственные окна с прозрачными пикселями.

Если NativeWindow.supportsTransparency имеет значение true, прозрачность пикселей собственного окна будет поддерживаться при условии, что свойство окна transparent имеет значение true. Непрозрачность всех пикселей будет установлена на значение 1, если NativeWindow.supportsTransparency имеет значение false, независимо от значения свойства окна transparent. Полностью прозрачные пиксели будут отображаться черным, если NativeWindow.supportsTransparency имеет значение false. Свойство NativeWindow.supportsTransparency позволяет определить, поддерживает ли операционная система прозрачность. Использование других средств (например, Capabilities.os) для определения поддержки может привести к ошибкам программирования (если некоторые целевые операционные системы не рассматриваются).

Примечание. Значение данного свойства может измениться во время работы программы в зависимости от предпочтений пользователя, заданных для операционной системы.

flash.display.NativeWindow.transparent
systemChrome Сообщает параметр системного Chrome, использованный для создания данного окна.StringПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр системного Chrome, использованный для создания данного окна.

Значения, возвращенные NativeWindow.systemChrome, будут входить в число констант, определенных в классе NativeWindowSystemChrome.

Параметр системного Chrome нельзя изменить после создания окна.

В следующем примере показано, как получить тип системного Chrome для окна: var sysChromeType:String = windowObj.systemChrome; С помощью ссылки на экранный объект в рабочей области окна: var sysChromeType:String = displayObject.stage.nativeWindow.systemChrome; Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): var sysChromeType = window.nativeWindow.systemChrome; Следующий пример показывает, как изменить видимый системный Chrome и параметры отображения прозрачных областей путем создания нового окна и перемещения всех дочерних экранных объектов в это новое окно: import flash.display.NativeWindow; import flash.display.NativeWindowSystemChrome; import flash.display.NativeWindowInitOptions; public function deChromeWindow(oldWindow:NativeWindow):NativeWindow{ if(oldWindow.systemChrome != NativeWindowSystemChrome.NONE){ var newOptions:NativeWindowInitOptions = new NativeWindowInitOptions(); newOptions.systemChrome = NativeWindowSystemChrome.NONE; newOptions.transparent = true; var newWindow:NativeWindow = new NativeWindow(newOptions); newWindow.stage.stageWidth = oldWindow.stage.stageWidth; newWindow.stage.stageHeight = oldWindow.stage.stageHeight; newWindow.stage.align = oldWindow.stage.align; newWindow.stage.scaleMode = oldWindow.stage.scaleMode; for(var i:int = 0; i < oldWindow.stage.numChildren; i++){ newWindow.stage.addChild(oldWindow.stage.getChildAt(i)); } newWindow.activate(); oldWindow.close(); return newWindow; } return oldWindow; }
flash.display.NativeWindowSystemChromeflash.display.NativeWindowInitOptions.systemChrome
systemMaxSize Наибольший размер окна, разрешенный операционной системой.flash.geom:Point Наибольший размер окна, разрешенный операционной системой.

Предельный размер определяется как координаты объекта Point. Свойство точки x соответствует ширине окна, а свойство y — высоте окна.

В дополнение к ограничению размера операционной системы в AIR предусмотрен максимально допустимый размер окна, который составляет 4095 х 4095 пикселов (2880 х 2880 пикселов в AIR 1.5 и более ранних версиях). И для приложения может быть задано предельное значение с помощью свойства maxSize объекта NativeWindow.

systemMinSize Наименьший размер окна, разрешенный операционной системой.flash.geom:Point Наименьший размер окна, разрешенный операционной системой.

Предельный размер определяется как координаты объекта Point. Свойство точки x соответствует ширине окна, а свойство y — высоте окна.

title Заголовок окна.StringЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Заголовок окна.

Если заголовок отображается, он появится в системном Chrome для окна, а также в других системных местоположениях (например, на панели задач).

Следующий пример задает заголовок для объекта окна: windowObj.title = "Window Title";
transparent Сообщает параметр прозрачности, использованный для создания данного окна.BooleanПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр прозрачности, использованный для создания данного окна.

Свойство transparent нельзя изменить после создания окна. Прозрачность влияет на внешний вид окна и на поведение мыши в его границах. В Windows и Mac OS X окно не может выполнить захват событий мыши, если альфа-значение пикселя ниже определенного порогового значения, которое в зависимости от операционной системы варьируется между 0,06 и 0,01. В Linux окно будет захватывать события мыши в абсолютно прозрачных областях, тем самым предотвращая доступ пользователей к другим окнам и элементам рабочего стола.

Примечание. Прозрачность окон поддерживается не всегда. Если конфигурация операционной системы пользователя не поддерживает прозрачность, окно будет создано непрозрачным. Окна, которые должны были быть прозрачными, отображаются с черным фоном. С помощью свойства NativeWindow.supportsTransparency можно определить, поддерживается ли прозрачность окна.

flash.display.NativeWindowInitOptions.transparent
type Сообщает параметр type окна, использованный для создания данного окна.StringПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Сообщает параметр type окна, использованный для создания данного окна.

Значения, возвращенные NativeWindow.type, будут входить в число констант, определенных в классе NativeWindowType.

Параметр type нельзя изменить после создания окна.

flash.display.NativeWindowTypeflash.display.NativeWindowInitOptions.type
visible Указывает, видимо ли окно.BooleanПри попытке задать значение false без необходимых полномочий. SecurityErrorSecurityErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Указывает, видимо ли окно.

Невидимое окно не отображается на рабочем столе, но все его свойства и методы остаются действительными.

По умолчанию visible имеет значение false. Чтобы отобразить окно, нужно задать visible значение true или вызвать методNativeWindow.activate().

Если у этого окна есть владелец, состояние видимости этого окна определяет отображение окна. Если окно с владельцем не отображается, значит все другие окна также не отображаются, даже если для параметра visible установлено значение true.

Примечание. В Mac OS X параметр visible=false для свернутого окна не приведет к удалению значка окна с панели рабочего стола. Если потом пользователь щелкнет значок на панели, окно снова станет видимым и отобразится на рабочем столе.

В следующем примере показано, как получить свойство visible окна: windowObj.visible = true; С помощью ссылки на экранный объект в рабочей области окна: displayObj.stage.nativeWindow.visible = true; Из процедуры JavaScript, выполняющейся в объекте HTMLLoader окна (или корневом окне HTML): window.nativeWindow.visible = true;
activate()
width Ширина окна в пикселях.NumberЕсли задано недопустимое значение или null. ArgumentErrorArgumentErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Ширина окна в пикселях.

Отображаемые размеры собственного окна включают примененный к нему системный хром. Ширина доступной для использования области экрана внутри окна указывается в свойстве Stage.stageWidth.

Изменение свойства окна width равносильно изменению ширины через свойство bounds.

Если указанная ширина не достигает минимально допустимого значения или превышает максимально допустимое значение, то устанавливается ближайший разрешенный размер окна. Максимальная и минимальная ширина определяются следующими факторами:

  • Свойства minSize.y и maxSize.y объекта NativeWindow
  • Минимально допустимое и максимально допустимое значения для операционный системы, являющиеся значениями NativeWindow.systemMinSize.y и NativeWindow.systemMaxSize.y.
  • Максимальная ширина окна в Adobe AIR, которая составляет 4095 пикселов (2880 пикселов в AIR 1.5 и более ранних версиях).

В Linux установка свойства width является асинхронной операцией.

Чтобы узнать о завершении изменения ширины, прослушивайте событие resize, отправляемое на всех платформах.

При изменении ширины окна пиксельные значения округляются до ближайшего целого числа.

flash.display.NativeWindow.boundsflash.display.Stage.stageWidth
x Координата горизонтальной оси верхнего левого угла этого окна относительно исходной точки рабочего стола операционной системы.NumberЕсли задано недопустимое значение или null. ArgumentErrorArgumentErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Координата горизонтальной оси верхнего левого угла этого окна относительно исходной точки рабочего стола операционной системы.

В системах с несколькими мониторами x может иметь отрицательное значение. Если вы сохраняете значение, допустим для возвращения окна в предыдущее местоположение, необходимо всегда следить, чтобы во время восстановления окно находилось в пригодном для использования местоположении. Изменение разрешения экрана или организации мониторов может привести к тому, что окно попадет за пределы области экрана. Используйте класс Screen для получения информации о геометрии рабочего стола.

Изменение свойства окна x равносильно изменению местоположения через свойство bounds.

В Linux установка свойства x является асинхронной операцией.

Чтобы узнать о завершении изменения позиции, прослушивайте событие displayStateChange.

При изменении координаты Х окна пиксельные значения округляются до ближайшего целого числа.

flash.display.NativeWindow.boundsflash.display.Screen
y Координата вертикальной оси верхнего левого угла этого окна относительно верхнего левого угла рабочего стола операционной системы.NumberЕсли задано недопустимое значение или null. ArgumentErrorArgumentErrorЕсли свойство получено после закрытия окна. IllegalOperationErrorflash.errors:IllegalOperationError Координата вертикальной оси верхнего левого угла этого окна относительно верхнего левого угла рабочего стола операционной системы.

В системах с несколькими мониторами y может иметь отрицательное значение. Если вы сохраняете значение, допустим для возвращения окна в предыдущее местоположение, необходимо всегда следить, чтобы во время восстановления окно находилось в пригодном для использования местоположении. Изменение разрешения экрана или организации мониторов может привести к тому, что окно попадет за пределы области экрана. Используйте класс Screen для получения информации о геометрии рабочего стола.

Изменение свойства окна y равносильно изменению местоположения через свойство bounds.

В Linux установка свойства y является асинхронной операцией.

Чтобы узнать о завершении изменения позиции, прослушивайте событие displayStateChange.

При изменении координаты Y окна пиксельные значения округляются до ближайшего целого числа.

flash.display.NativeWindow.boundsflash.display.Screen
Stage Класс Stage представляет основную область рисования.flash.display:DisplayObjectContainer Класс Stage представляет основную область рисования.

Для SWF-содержимого, выполняемого в обозревателе (в Flash® Player), Stage представляет собой всю область отображения содержимого Flash. Для содержимого, выполняемого в программе AIR в компьютерных операционных системах, каждый объект NativeWindow имеет соответствующий объект Stage.

К объекту Stage нет глобального доступа. Доступ к нему осуществляется через свойство stage экземпляра DisplayObject.

Класс Stage имеет несколько классов предшественников — DisplayObjectContainer, InteractiveObject, DisplayObject и EventDispatcher —от которых он наследует свойства и методы. Многие из этих свойств и методов либо неприменимы к объектам Stage, либо требуют проверки безопасности, когда используются для объекта Stage. Свойства и методы, требующие проверки безопасности, записаны как часть класса Stage.

Следующие наследуемые свойства также неприменимы к объектам Stage. При попытке задать для них значения выдается ошибка IllegalOperationError. Эти свойства можно считывать, но, так как для них невозможно задать значение, они всегда имеют значения по умолчанию.

  • accessibilityProperties
  • alpha
  • blendMode
  • cacheAsBitmap
  • contextMenu
  • filters
  • focusRect
  • loaderInfo
  • mask
  • mouseEnabled
  • name
  • opaqueBackground
  • rotation
  • scale9Grid
  • scaleX
  • scaleY
  • scrollRect
  • tabEnabled
  • tabIndex
  • transform
  • visible
  • x
  • y

Некоторые события, которые, казалось бы, являются частью класса Stage, например enterFrame, exitFrame, frameConstructed и render, не могут быть событиями класса Stage, так как существование ссылки на объект Stage не гарантируется в каждой ситуации, в которой используются данные события. Так как эти события не могут быть отправлены объектом Stage, они отправляются каждым экземпляром DisplayObject, что означает, что вы можете добавить прослушиватель событий к любому экземпляру DisplayObject для прослушивания этих событий. Такие события, являющиеся частью класса DisplayObject, называются многоадресными и отличаются от событий, нацеленных на конкретный экземпляр DisplayObject. Два других многоадресных события, activate и deactivate, принадлежат к суперклассу DisplayObject, EventDispatcher. Поведение событий activate и deactivate схоже с поведением многоадресных событий DisplayObject, за исключением того, что эти два события отправляются не только всеми экземплярами DisplayObject, но также всеми экземплярами EventDispatcher и экземплярами других подклассов EventDispatcher. Дополнительные сведения о многоадресных событиях см. в описании класса DisplayObject.

В следующем примере используется класс StageExample для отправки событий при активации или изменении размера рабочей области. Это можно сделать, выполнив следующие действия.
  1. Сначала конструктор класса настраивает приложение Flash для фиксации, независимо от размера окна проигрывателя Flash Player, а затем добавляет два прослушивателя событий с методами activateHandler() и resizeHandler().
  2. Метод activateHandler() запускается при щелчке левой кнопкой мыши.
  3. Метод resizeHandler() запускается при изменении размеров рабочего стола.
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; public class StageExample extends Sprite { public function StageExample() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener(Event.ACTIVATE, activateHandler); stage.addEventListener(Event.RESIZE, resizeHandler); } private function activateHandler(event:Event):void { trace("activateHandler: " + event); } private function resizeHandler(event:Event):void { trace("resizeHandler: " + event); trace("stageWidth: " + stage.stageWidth + " stageHeight: " + stage.stageHeight); } } }
flash.display.DisplayObjectstageVideoAvailability Отправленный объектом Stage, когда состояние stageVideos изменений свойств.flash.events. StageVideoAvailabilityEvent. STAGE_VIDEO_AVAILABILITYflash.events.StageVideoAvailabilityEvent Отправленный объектом Stage, когда состояние stageVideos изменений свойств. orientationChange Отправляется объектом Stage при изменении ориентации рабочей области.flash.events.StageOrientationEvent.ORIENTATION_CHANGEflash.events.StageOrientationEvent Отправляется объектом Stage при изменении ориентации рабочей области.

Ориентация может изменяться, когда пользователь поворачивает устройство или открывает выдвижную клавиатуру либо вызывается функция setAspectRatio().

Примечание. Если для свойства autoOrients установлено значение false, ориентация рабочей области не изменяется при повороте устройства. Таким образом, события StageOrientationEvents отправляются при повороте устройства, только когда для свойства autoOrients установлено значение true.

orientationChanging Отправляется объектом Stage, когда начинается изменение ориентации рабочей области.flash.events.StageOrientationEvent.ORIENTATION_CHANGINGflash.events.StageOrientationEvent Отправляется объектом Stage, когда начинается изменение ориентации рабочей области.

Важный: события orientationChanging не отправлены на устройствах Андроида.

Примечание. Если для свойства autoOrients установлено значение false, ориентация рабочей области не изменяется при повороте устройства. Таким образом, события StageOrientationEvents отправляются при повороте устройства, только когда для свойства autoOrients установлено значение true.

fullScreen Отправляется, когда объект Stage переходит в полноэкранный режим или выходит из этого режима.flash.events.FullScreenEvent.FULL_SCREENflash.events.FullScreenEvent Отправляется, когда объект Stage переходит в полноэкранный режим или выходит из этого режима. Изменение в полноэкранном режиме можно инициировать через ActionScript, либо при нажатии комбинации клавиш пользователем, либо если текущий фокус покидает окно, находящееся в полноэкранном режиме. resize Отправляется, когда свойство scaleMode объекта Stage установлено в значение StageScaleMode.NO_SCALE и изменяется размер SWF-файла.flash.events.Event.RESIZEflash.events.Event Отправляется, когда свойство scaleMode объекта Stage установлено в значение StageScaleMode.NO_SCALE и изменяется размер SWF-файла. mouseLeave Отправляется объектом Stage, когда указатель покидает рабочую область.flash.events.Event.MOUSE_LEAVEflash.events.Event Отправляется объектом Stage, когда указатель покидает рабочую область. Если кнопка мыши нажата, событие не отправляется. addChildAt Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer.Вызов метода addChildAt() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЭкземпляр DisplayObject, передаваемый в параметр child. flash.display:DisplayObjectchildflash.display:DisplayObjectЭкземпляр DisplayObject для добавления в качестве нижестоящего элемента экземпляра DisplayObjectContainer. indexintПозиция индекса для добавления нижестоящего элемента. При указании занятой в настоящее время позиции индекса существующий в данной позиции дочерний объект и все вышестоящие позиции перемещаются по списку на одну позицию вверх. Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer. Дочерний элемент добавляется к указанной позиции индекса. Индекс 0 представляет собой заднюю (нижнюю) часть списка отображения для объекта DisplayObjectContainer.

Так, в следующем примере представлено три объекта отображения с метками а, b и c в позициях индекса 0, 1 и 2 соответственно.

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

addChild Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer.Вызов метода addChild() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЭкземпляр DisplayObject, передаваемый в параметр child. flash.display:DisplayObjectchildflash.display:DisplayObjectЭкземпляр DisplayObject для добавления в качестве нижестоящего элемента экземпляра DisplayObjectContainer. Добавляет экземпляр дочернего элемента DisplayObject к экземпляру DisplayObjectContainer. Дочерний элемент добавляется перед (сверху) всеми остальными дочерними элементами в данном экземпляре DisplayObjectContainer. (Чтобы добавить дочерний элемент в конкретную позицию в индексе, используйте метод addChildAt().)

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

Примечание. Команда stage.addChild() может вызвать проблемы с опубликованным SWF-файлом, включая проблемы безопасности и конфликты с другими загруженными SWF-файлами. В экземпляре среды выполнения Flash есть только одна рабочая область независимо от числа загружаемых SWF-файлов. Так, как правило, объекты совсем не следует добавлять в рабочую область напрямую. Рабочая область должна содержать только корневой объект. Создайте объект DisplayObjectContainer, который будет содержать все элементы списка отображения. Затем, при необходимости, добавьте этот экземпляр DisplayObjectContainer в рабочую область.

addEventListener Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии.Вызов метода addEventListener объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этой ситуации владелец объекта Stage должен предоставить разрешение домену вызывающего файла путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrortypeStringТип события. listenerFunctionФункция прослушивателя, обрабатывающая событие. Эта функция должна принимать объект Event в качестве единственного параметра и не должна что-либо возвращать , как показано в примере: function(evt:Event):void

Эта функция может иметь любое имя.

useCaptureBooleanfalse Определяет, работает ли прослушиватель в фазе захвата или в целевой фазе и в фазе восходящей цепочки. Если значение useCapture равно true, прослушиватель обрабатывает событие только во время фазы захвата, но не во время целевой фазы или фазы восходящей цепочки. Если значение useCapture равно false, то прослушиватель обрабатывает событие только в целевой фазе или фазе восходящей цепочки. Чтобы прослушивать событие во всех трех фазах, необходимо вызвать addEventListener() дважды: один раз с useCapture в значении true, а другой — с useCapture в значении false. priorityint0Уровень приоритета прослушивателя событий. Приоритет определяется 32-разрядным целым числом со знаком. Чем больше число, тем выше приоритет. Все прослушиватели событий с приоритетом n обрабатываются перед прослушивателями с приоритетом n-1. Прослушиватели с одинаковым приоритетом обрабатываются в порядке их добавления. Значение приоритета по умолчанию равно 0. useWeakReferenceBooleanfalseОпределяет, является ли ссылка на listener «сильной» или «слабой». «Сильная» ссылка (по умолчанию) предотвращает удаление listener сборщиком мусора. «Слабая» ссылка не выполняет эту функцию.

Функции элементов уровня класса не подлежат удалению в качестве мусора, вследствие чего можно установить useWeakReference равным true для функций элементов уровня класса, не подвергая их возможности подобного удаления. Если свойству useWeakReference присвоить значение true для прослушивателя, который является вложенной внутренней функцией, то функция будет очищена и перестанет быть постоянной. При создании ссылок на внутреннюю функцию (возможно сохранение в другой переменной) она не будет собираться в качестве мусора и останется устойчивой.

Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. Можно регистрировать прослушиватели событий в любом узле из списка отображения для каждого типа события, фазы и приоритета.

После успешной регистрации прослушивателя событий невозможно изменить его приоритет путем дополнительных вызовов addEventListener(). Чтобы изменить приоритет прослушивателя, необходимо сначала вызвать метод removeListener(). Затем можно снова зарегистрировать прослушиватель с новым приоритетом.

Следует учесть, что после регистрации прослушивателя последующие вызовы метода addEventListener() с другим значением свойства type или useCapture приводят к регистрации другого прослушивателя. Например, прослушиватель, изначально зарегистрированный со значением useCapture, равным true, прослушивает только во время фазы захвата. Если вызвать метод addEventListener() еще раз с тем же объектом прослушивателя, но со свойством useCapture в значении false, то будет два прослушивателя: один — прослушивающий в фазе захвата, а другой — в целевой фазе и фазе восходящей цепочки.

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

Если прослушиватель событий больше не нужен, его можно удалить, вызвав метод removeEventListener(), иначе могут возникнуть проблемы с памятью. Прослушиватели событий не удаляются из памяти автоматически, так как сборщик мусора не удаляет прослушиватель, пока существует объект, отправляющий соответствующее событие (если параметру useWeakReference не задано значение true).

Копирование экземпляра EventDispatcher не приводит к копированию прослушивателей событий, присоединенных к нему. (Если для вновь создаваемого узла требуется прослушиватель событий, его необходимо присоединить после создания узла.) При этом при перемещении экземпляра EventDispatcher присоединенные к нему прослушиватели событий перемещаются вместе с ним.

Если прослушиватель регистрируется для узла в тот момент, когда на нем обрабатывается событие, то в текущей фазе он не запускается, однако может запуститься в следующей фазе потока события, например в фазе восходящей цепочки.

Прослушиватель событий, удаленный из узла во время обработки события на этом узле, будет запускаться текущими операциями. После удаления прослушиватель событий больше не вызывается (если не будет снова зарегистрирован для дальнейшей обработки).

assignFocus Устанавливает фокус клавиатуры на интерактивном объекте, указанном в objectToFocus. Направление фокуса устанавливается параметром direction.Если фокус не может быть установлен на цели, или тип направления неверный. ErrorErrorobjectToFocusflash.display:InteractiveObjectОбъект, на который следует переместить фокус или null, чтобы убрать фокус с любого элемента в рабочей области. directionStringНаправление, по которому фокусируется objectToFocus. Подходящие значения перечислены в виде констант в классе FocusDirection. Присваивает фокус клавиатуры интерактивному объекту и указывает направление, откуда этот фокус поступает. Устанавливает фокус клавиатуры на интерактивном объекте, указанном в objectToFocus. Направление фокуса устанавливается параметром direction.

Направление фокуса должно задаваться приложением (или средой приложения). Как такового встроенного принципа расположения интерактивных объектов не существует, однако, для их упорядочения можно использовать ряд доступных свойств. Например, можно сортировать интерактивные объекты в рабочей области по их положению в списке отображения. Вызов метода assignFocus() идентичен параметру свойства Stage.focus с дополнительной возможностью указывать направление, откуда этот фокус поступает.

После получения фокуса objectToFocus отправляет событие focusIn. Свойство direction объекта FocusEvent сообщает о настройке параметра direction.

При назначении объекта HTMLLoader параметру objectToFocus объект HTMLLoader выбирает подходящий объект для передачи фокуса в HTML DOM, принимая во внимание значение параметра direction. При использовании FocusDirection.BOTTOM фокус передается объекту в HTML DOM, который находится в конце списка отображения. При использовании FocusDirection.TOP фокус передается объекту в HTML DOM, который находится в начале списка отображения. При использовании NONE объект HTMLLoader получает фокус, а его текущий элемент с фокусом не меняется.

flash.display.Stage.focusflash.display.FocusDirectionflash.events.FocusEvent
dispatchEvent Посылает событие в поток событий.Вызов метода dispatchEvent() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЗначение true в случае успешной передачи события. Значение false указывает на ошибку или на то, что для события был вызван метод preventDefault(). Booleaneventflash.events:EventОбъект события, передаваемый в поток событий. Если осуществляется повторная отправка события, автоматически создается его клон. После отправки события нельзя изменить его свойство target, поэтому необходимо создать новую копию события, чтобы обеспечить правильное выполнение повторной отправки. Посылает событие в поток событий. Целью события является объект EventDispatcher, для которого вызывается метод dispatchEvent(). getChildAtflash.display:DisplayObjectindexintgetChildIndexintchildflash.display:DisplayObjecthasEventListener Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события.Вызов метода hasEventListener() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЗначение true, если прослушиватель указанного типа зарегистрирован; в противном случае – false. BooleantypeStringТип события. Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. Это позволяет определить, где объект EventDispatcher изменил обработку типа события в иерархии потока событий. Чтобы определить, запускает ли на самом деле определенный тип событий прослушиватель, используйте метод willTrigger().

Различие между hasEventListener() и willTrigger() заключается в том, что hasEventListener() анализирует только объект, к которому он принадлежит, тогда как willTrigger() — весь поток событий для события, указанного параметром type.

Когда метод hasEventListener() вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.

invalidate Вызов метода invalidate() предписывает среде выполнения Flash оповестить экранные объекты о следующей возможности визуализации списка отображения (например, когда точка воспроизведения приближается к новому кадру).Предписывает среде выполнения Flash обновить свойства экранных объектов при следующей возможности обновить Stage. Вызов метода invalidate() предписывает среде выполнения Flash оповестить экранные объекты о следующей возможности визуализации списка отображения (например, когда точка воспроизведения приближается к новому кадру). После вызова метода invalidate() при дальнейшей визуализации списка отображения среда выполнения Flash отправляет событие render каждому экранному объекту, зарегистрированному для прослушивания события render. Метод invalidate() необходимо вызвать каждый раз, когда нужно, чтобы среда выполнения Flash отправляла события render.

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

Событие render отправляется только тем экранным объектам, которые находятся в том же защищенном домене, что и код, вызывающий метод stage.invalidate(), или экранным объектам из защищенного домена, которому предоставлено разрешение через метод Security.allowDomain().

flash.events.Event.RENDER
isFocusInaccessible Определяет, должно ли свойство Stage.focus возвращать значение null по соображениям безопасности.true, если объект в фокусе принадлежит к изолированной программной среде безопасности, к которой у SWF-файла нет доступа. BooleanОпределяет, должно ли свойство Stage.focus возвращать значение null по соображениям безопасности. Определяет, должно ли свойство Stage.focus возвращать значение null по соображениям безопасности. Другими словами, isFocusInaccessible имеет значение true, если объект в фокусе принадлежит к изолированной программной среде безопасности, к которой у SWF-файла нет доступа. removeChildAt Удаляет дочерний DisplayObject из заданной позиции индекса в списке дочерних элементов DisplayObjectContainer.Вызов метода removeChildAt() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец данного объекта может предоставить разрешение домену вызывающего файла путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorУдаленный экземпляр DisplayObject. flash.display:DisplayObjectindexintУдаляемый индекс нижестоящего элемента DisplayObject. Удаляет дочерний DisplayObject из заданной позиции index в списке дочерних объектов DisplayObjectContainer. Свойство parent удаленного дочернего элемента получает значение null, а сам объект очищается, если нет других ссылок на дочерние элементы. Позиции индекса экранных объектов, расположенных над дочерним элементом в DisplayObjectContainer уменьшаются на 1.

Сборщик мусора перераспределяет неиспользуемый объем памяти. Когда на переменную или объект больше нет ссылок или он хранится в другом месте, сборщик мусора очищает и утилизирует память, которую он занимал, при условии отсутствия ссылок

removeChildflash.display:DisplayObjectchildflash.display:DisplayObjectsetAspectRatio Готовит почву к ориентации с указанными пропорциями.Значение, переданное в качестве параметра newAspectRatio, недействительно. Значение должно соответствовать одной из констант, определенных в классе StageAspectRatio. ArgumentErrorArgumentErrornewAspectRatioStringКод типа для заданных пропорций (StageAspectRatio. КНИЖНАЯ или StageAspectRatio. АЛЬБОМНЫЙ). Готовит почву к ориентации с указанными пропорциями.

Если изменения ориентации рабочей область в результате вызова метода, объект Stage отправляет orientationChange событие.

Чтобы узнать, поддерживается ли ориентация устройства, проверьте значение свойства Stage.supportsOrientantionChange.

Поддержка в профилях AIR: эта функция поддерживается на мобильных устройствах, но не поддерживается в компьютерных операционных системах или средах AIR для телевизионных устройств. Используйте свойство Stage.supportsOrientantionChange, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

StageAspectRatiosupportsOrientationChange
setChildIndex Изменяет положение существующего дочернего элемента в DisplayObjectContainer.Вызов метода addChildIndex() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorchildflash.display:DisplayObjectДочерний экземпляр DisplayObject, для которого нужно изменить номер индекса. indexintПолученный в результате номер индекса для дочернего экранного объекта child. Изменяет положение существующего дочернего элемента в DisplayObjectContainer. Это отражается на иерархическом представлении дочерних объектов. Так, в следующем примере показано три разных объекта с именами a, b и c в позициях индекса 0, 1 и 2 соответственно.

Когда используется метод setChildIndex() и указывается уже занятая позиция индекса, меняются только позиции между прежней и новой позицией экранного объекта. Все остальные остаются без изменения. Если дочерний объект перемещается на более НИЗКУЮ позицию, позиции всех дочерних объектов между этими позициями станут на 1 ВЫШЕ. Если дочерний объект перемещается на более ВЫСОКУЮ позицию, позиции всех дочерних объектов между этими позициями станут на 1 НИЖЕ. Например, если контейнер экранных объектов из предыдущего примера имеет имя container, можно поменять позициями экранные объекты с именами a и b, вызвав следующий код:

container.setChildIndex(container.getChildAt(1), 0);

В результате этого объекты выстраиваются следующим образом:

setOrientation Устанавливает рабочую область в указанную ориентацию.Значение, переданное в качестве параметра newOrientation, недействительно. Значение должно соответствовать одной из констант, определенных в классе StageOriention, за исключением константы StageOrientation.UNKNOWN. ArgumentErrorArgumentErrornewOrientationStringНовая ориентация рабочей области. Устанавливает рабочую область в указанную ориентацию.

Задайте параметру newOrientation одно из четырех значений, выраженных константами класса StageOrientation:

Константа StageOrientationОриентация рабочей областиStageOrientation.DEFAULTУстановите для рабочей области ориентацию по умолчанию (правой стороной вверх).StageOrientation.ROTATED_RIGHTЗадайте ориентацию рабочей области, повернув ее вправо.StageOrientation.ROTATED_LEFTЗадайте ориентацию рабочей области, повернув ее влево.StageOrientation.UPSIDE_DOWNЗадайте ориентацию рабочей области, перевернув ее сверху вниз.

Не задавайте параметру значение StageOrientation.UNKNOWN или строковое значение, которого нет в таблице.

Чтобы узнать, поддерживается ли изменение ориентации устройства, проверьте значение свойства Stage.supportsOrientantionChange. Проверьте список, обеспеченный supportedOrientations свойства, чтобы задать, какие ориентации поддержаны текущим устройством.

Операция установки ориентации является асинхронной. Нельзя гарантировать ее выполнение сразу после вызова метода setOrientation(). Добавьте прослушиватель событий для события orientationChange, чтобы определить момент завершения изменения ориентации.

Важный: setOrientation () метод не был поддержан на устройствах Андроида перед AIR 2.6.

autoOrientssupportsOrientationChangeStageOrientationEventStageOrientationorientationChangeflash.events:StageOrientationEventРазмер рабочей области изменен в результате вызова метода setOrientation(). Размер рабочей области изменен в результате вызова метода setOrientation().
swapChildrenAtindex1intindex2intswapChildren Меняет местами (в порядке «от начала к концу») два заданных дочерних объекта.Вызов метода swapChildrenAt() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владельцы объекта могут предоставить разрешение домену вызывающего файла путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorchild1flash.display:DisplayObjectПервый дочерний объект. child2flash.display:DisplayObjectВторой дочерний объект. Меняет местами (в порядке «от начала к концу») два заданных дочерних объекта. Все остальные дочерние объекты в контейнере экранных объектов остаются на прежних позициях. willTrigger Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником.Вызов метода willTrigger() объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЗначение равно true при запуске прослушивателя указанного типа; в противном случае значение равно false. BooleantypeStringТип события. Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. Этот метод возвращает значение true, если прослушиватель события запускается в течение любой фазы потока событий, когда событие указанного типа передается объекту EventDispatcher или любому из его нижестоящих элементов.

Разница между методами hasEventListener() и willTrigger() заключается в том, что hasEventListener() просматривает только тот объект, которому он принадлежит, а willTrigger() просматривает весь поток событий для события, указанного в параметре type.

Когда метод willTrigger() вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.

align Значение класса StageAlign, задающее выравнивание рабочей области в проигрывателе Flash Player или обозревателе.String Значение класса StageAlign, задающее выравнивание рабочей области в проигрывателе Flash Player или обозревателе. Ниже приводятся допустимые значения.

ЗначениеВыравнивание по вертикалиПо горизонталиStageAlign.TOPВерхний крайЦентрStageAlign.BOTTOMНижний крайЦентрStageAlign.LEFTЦентрСлеваStageAlign.RIGHTЦентрСправаStageAlign.TOP_LEFTВерхний крайСлеваStageAlign.TOP_RIGHTВерхний крайСправаStageAlign.BOTTOM_LEFTНижний крайСлеваStageAlign.BOTTOM_RIGHTНижний крайСправа

Свойство align доступно только для объекта, находящегося в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0.

flash.display.StageAlign
allowsFullScreen Указывает, разрешает ли эта рабочая область использование режима целый экран Boolean Указывает, разрешает ли эта рабочая область использование режима целый экран autoOrients Указывает, изменяется ли ориентация рабочей области автоматически при изменении ориентации устройства.Boolean Указывает, изменяется ли ориентация рабочей области автоматически при изменении ориентации устройства.

Начальное значение этих свойств получено от элемента autoOrients дескриптора программы и имеет значение по умолчанию false. Если для свойства установлено значение false, его поведение не может быть гарантировано. На некоторых устройствах рабочая область сохраняет текущую ориентацию. На других устанавливается «стандартная» ориентация, определенная устройством, после чего ориентация рабочей области больше не изменяется.

Поддержка в профилях AIR: эта функция поддерживается на мобильных устройствах, но не поддерживается в компьютерных операционных системах или средах AIR для телевизионных устройств. Используйте свойство Stage.supportsOrientantionChange, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

deviceOrientationsupportsOrientationChange
colorCorrectionSupport Указывает, работает ли среда выполнения Flash в операционной системе, поддерживающей цветокоррекцию, и имеется ли возможность чтения и распознавания цветового профиля главного (основного) монитора средой выполнения Flash.String Указывает, работает ли среда выполнения Flash в операционной системе, поддерживающей цветокоррекцию, и имеется ли возможность чтения и распознавания цветового профиля главного (основного) монитора средой выполнения Flash. Это свойство также возвращает состояние цветокоррекции по умолчанию в хост-системе (обычно обозревателе). Текущими возвращаемыми значениями могут быть следующие:

Тремя возможными значениями являются строки с соответствующими константами в классе flash.display.ColorCorrectionSupport:

  • unsupported: цветокоррекция недоступна.
  • defaultOn: постоянное выполнение цветокоррекции.
  • defaultOff: запрет выполнения цветокоррекции.
В следующем примере демонстрируется обработчик событий, который отображает в текстовом поле сообщение о том, поддерживает ли текущая среда цветокоррекцию. Во-первых, он проверяет значение stage.colorCorrectionSupport, чтобы узнать, является ли оно элементом класса ColorCorrectionSupport: DEFAULT_ON или DEFAULT_OFF. Если свойство имеет любое из этих значений, оно отображается в текстовом поле. В противном случае, если его значение не является DEFAULT_ON или DEFAULT_OFF, в текстовом поле отображается слово «unsupported» (не поддерживается). function addHandler(add_event:Event) { if (stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_ON || stage.colorCorrectionSupport == ColorCorrectionSupport.DEFAULT_OFF) { lblHasCM.text = "stage.colorCorrectionSupport: " + stage.colorCorrectionSupport; } else { lblHasCM.text = "stage.colorCorrectionSupport: unsupported"; } }
flash.display.ColorCorrectionSupportcolorCorrection
colorCorrection Управление цветокоррекцией для дисплеев в среде выполнения Flash.StringПопытка использования цветокоррекции монитора Управление цветокоррекцией для дисплеев в среде выполнения Flash. Коррекция цвета срабатывает, только если главному монитору назначен действительный профиль ICC, задающий конкретные цветовые атрибуты устройства. По умолчанию среда выполнения Flash предпринимает попытку сопоставления цветокоррекции хоста (обычно браузера).

Используйте свойство Stage.colorCorrectionSupport для определения доступности коррекции цвета в текущей системе и состоянии по умолчанию. Если коррекция цвета доступна, все цвета в рабочей области должны находиться в пространстве цветов sRGB, которое на данный момент является наиболее распространенным. Во время цветовой коррекции исходные профили устройств ввода игнорируются. Коррекция цветов на вводе не применяется. На цветовой профиль IIC главного монитора накладывается только вывод рабочей области.

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

При применении коррекции цвета производительность среды выполнения Flash снижается. В среде выполнения Flash коррекция цвета реализована в качестве цветокоррекции стиля документа, так как все ролики SWF являются документами со встроенными профилями sRGB. Используйте свойство Stage.colorCorrectionSupport, чтобы сообщить среде выполнения Flash о необходимости корректировать цвета при отображении SWF-файла (документа) в соответствии с цветовым пространством дисплея. Среда выполнения Flash может компенсировать различия между мониторами, но не между устройствами ввода (такими как камера/сканер и т. д.).

Тремя возможными значениями являются строки с соответствующими константами в классе flash.display.ColorCorrection:

  • default: использование такой же цветокоррекции, как в хост-системе.
  • on: постоянное выполнение цветокоррекции.
  • off: запрет выполнения цветокоррекции.
В следующем примере демонстрируется обработчик событий, который включает и выключает цветокоррекцию в текущем SWF-файле и отображает в текстовом поле текущее состояние цветокоррекции. Если значение Stage.colorCorrection не является элементом класса ColorCorrection, тогда обработчик сообщает об ошибке. function addHandler(add_event:Event) { switch(stage.colorCorrection) { case ColorCorrection.ON: stage.colorCorrection = ColorCorrection.OFF; lblCMEnableState.text = "State: " + stage.colorCorrection; break; case ColorCorrection.OFF: stage.colorCorrection = ColorCorrection.DEFAULT; lblCMEnableState.text = "State: " + stage.colorCorrection; break; case ColorCorrection.DEFAULT: stage.colorCorrection = ColorCorrection.ON; lblCMEnableState.text = "State: " + stage.colorCorrection; break; default: lblCMEnableState.text = "Error."; break; }
flash.display.ColorCorrectioncolorCorrectionSupport
coloruintdeviceOrientation Физическая ориентация устройства.String Физическая ориентация устройства.

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

Используйте константы, определенные в классе StageOrientation, устанавливая или сравнивая значения для этих свойств.

Поддержка в профилях AIR: эта функция поддерживается на мобильных устройствах, но не поддерживается в компьютерных операционных системах или средах AIR для телевизионных устройств. Используйте свойство Stage.supportsOrientationChange, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

autoOrientsStageOrientation
displayState Значение класса StageDisplayState, задающее состояние отображения.StringВызов свойства displayState объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. При попытке настроить свойство displayState, когда отображается диалоговое окно параметров без отклика пользователя или если атрибуту allowFullScreen HTML-тегов param или embed не назначено значение true, появляется ошибка безопасности. SecurityErrorSecurityError Значение класса StageDisplayState, задающее состояние отображения. Ниже приводятся допустимые значения.
  • StageDisplayState.FULL_SCREEN предписывает программе AIR или среде выполнения Flash развернуть рабочую область на весь экран пользователя, отключив ввод с клавиатуры.
  • StageDisplayState.FULL_SCREEN_INTERACTIVE предписывает приложению AIR развернуть рабочую область на весь экран пользователя, не отключая ввод с клавиатуры. (Недоступно для содержимого, выполняемого в Flash Player.)
  • StageDisplayState.NORMAL возвращает среду выполнения Flash в стандартный режим отображения рабочей области.

Масштабирование видео в полноэкранном режиме определяется значением scaleMode (которое задается при помощи свойства Stage.scaleMode параметрами тегов embed SWF-файла в файле HTML). Если для свойства scaleMode установлено значение noScale при переводе приложения в полноэкранный режим, у объекта Stage обновляются свойства width и height, а сам объект Stage отправляет событие resize. Если установлен другой режим масштабирования, рабочая область и ее содержимое заполняют все окно с новыми размерами. У объекта Stage остаются исходные значения параметров width и height, и объект не отправляет событие resize.

Следующие ограничения действуют для SWF-файлов, проигрываемых на странице HTML (не для тех, что выполняются в автономном проигрывателе Flash Player и не выполняются в среде AIR):

  • Для включения полноэкранного режима добавьте параметр allowFullScreen в теги object и embed страницы HTML, содержащей SWF-файл, задав для свойства allowFullScreen значение "true", как показано в следующем примере: <param name="allowFullScreen" value="true" /> ... <embed src="example.swf" allowFullScreen="true" ... >

    Страница HTML может также выполнить сценарий для создания тегов внедрения SWF. Такой сценарий нужно изменить, задав нужные значения для свойства allowFullScreen. HTML-страницы, созданные при помощи Flash Professional и Flash Builder, используют функцию AC_FL_RunContent() для вставки ссылок на SWF-файлы, поэтому необходимо добавить значения параметра allowFullScreen, как в следующем примере.

    AC_FL_RunContent( ... "allowFullScreen", "true", ... )
  • Полноэкранный режим запускается в ответ на щелчок мышью или нажатие кнопки пользователем; значение свойства Stage.displayState не может измениться без ввода пользователя. В среде выполнения Flash ввод с клавиатуры в полноэкранном режиме ограничен. Допустимыми клавишами являются комбинации клавиш для отключения полноэкранного режима и клавиши, отличные от клавиш печати, такие как стрелки, пробел Shift и Tab. Для выключения полноэкранного режима используются следующие сочетания клавиш: Escape (Windows, Linux и Mac), Control+W (Windows), Command+W (Mac) и Alt+F4.

    При переходе в полноэкранный режим поверх видео отображается диалоговое окно среды выполнения Flash, уведомляющее пользователей о том, что включен полноэкранный режим и можно нажать клавишу Escape для выхода из этого режима.

  • Начиная с Flash Player 9.0.115.0, полноэкранный режим работает одинаково в безоконном и оконном режиме. Если вы установите «Режим окон» (wmode в HTML) на «Непрозрачный, без окна» (opaque) или «Прозрачный, без окна» (transparent), полноэкранный режим может быть включен, но окно всегда будет непрозрачным.

Данные ограничения не действуют для содержимого SWF, выполняемого в автономном Flash Player или в приложении AIR. AIR поддерживает интерактивный полноэкранный режим, который допускает ввод с клавиатуры.

На время воспроизведения ролика AIR в полноэкранном режиме экранная заставка ОС и управление питанием отключаются и становятся активными только при выходе из полноэкранного режима или завершении воспроизведения ролика.

В Linux установка displayState на StageDisplayState.FULL_SCREEN или StageDisplayState.FULL_SCREEN_INTERACTIVE является асинхронной операцией.

В следующем примере создается интерактивная демонстрация того, как создавать полноэкранное представление путем модификации свойства displayState.

Примечание. Вследствие ограничений, установленных из соображений безопасности, полноэкранный режим можно запускать только в определенных ситуациях, например, если пользователь щелкнул кнопку или нажал клавишу. При запуске в обозревателе свойство allowFullScreen должно иметь значение true.

package { import flash.display.Sprite; import flash.display.Stage; import flash.events.*; import flash.net.NetConnection; import flash.net.NetStream; import flash.media.Video; public class FullScreenExample extends Sprite { private var videoURL:String = "testVideo.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video; public function FullScreenExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); loaderInfo.addEventListener(Event.INIT, createMouseListener); } private function createMouseListener(event:Event):void { stage.addEventListener(MouseEvent.CLICK,toggleFullScreen); } private function toggleFullScreen(event:MouseEvent):void { switch(stage.displayState) { case "normal": stage.displayState = "fullScreen"; break; case "fullScreen": default: stage.displayState = "normal"; break; } } // Video related: private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Unable to locate video: " + videoURL); break; } } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); video = new Video(stage.stageWidth,stage.stageHeight); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function asyncErrorHandler(event:AsyncErrorEvent):void { // ignore AsyncErrorEvent events. } } }
flash.display.StageDisplayStateStage.scaleModeflash.events.FullScreenEventflash.events.Event.RESIZE
focus Интерактивный объект с фокусом клавиатуры, либо null, если фокус не установлен, а также если объект с фокусом принадлежит к изолированной программной среде безопасности, доступ к которой отсутствует у вызывающего объекта.flash.display:InteractiveObjectВыдает ошибку, если фокус нельзя перевести на цель. ErrorErrorОбъект с фокусом, заданным с клавиатуры. Интерактивный объект с фокусом клавиатуры, либо null, если фокус не установлен, а также если объект с фокусом принадлежит к изолированной программной среде безопасности, доступ к которой отсутствует у вызывающего объекта. В следующем примере фокус изначально помещается в текстовое поле myTF, чтобы пользователь мог сразу начинать ввод текста, не щелкая по полю. При тестировании этого кода в интерфейсе инструмента разработки доступ может быть ограничен несколькими клавишами, так как хост (браузер или инструмент разработки) первым интерпретирует большинство нажатий клавиш. Чтобы протестировать все функции этого примера, его необходимо скомпилировать и запустить полученный SWF-файл. var myTF:TextField = new TextField(); myTF.border =true; myTF.type = TextFieldType.INPUT; addChild(myTF); stage.focus= myTF; frameRate Получает и задает частоту кадров монтажного стола.NumberВызов метода frameRate объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Получает и задает частоту кадров монтажного стола. Частота кадров определяется как число кадров в секунду. По умолчанию используется значение частоты кадров первого загруженного SWF-файла. Допустимые значения частоты кадров находятся в диапазоне 0,01 — 1000 кадров в секунду.

Примечание. Приложение может не воспринимать параметры высокой частоты, если целевая платформа недостаточно быстрая или если проигрыватель синхронизируется с интервалами пробела по вертикали дисплея (обычно это 60 Гц на ЖК-мониторах). В некоторых случаях целевая платформа также может выбирать более низкую максимальную частоту кадров, если ожидает высокий процент использования ЦП.

При работе с содержимым в Adobe AIR настройка свойства frameRate одного объекта Stage приводит к изменению частоты кадров всех объектов Stage (используемых разными объектами NativeWindow).

fullScreenHeight Возвращает ту высоту монитора, которая будет использована при мгновенном переходе в полноэкранный режим.uint Возвращает ту высоту монитора, которая будет использована при мгновенном переходе в полноэкранный режим. Если в системе установлено несколько мониторов, то используется тот из них, на котором в данный момент отображается большая часть рабочей области.

Примечание. Если у пользователя есть возможность перемещать обозреватель с одного монитора на другой между получением значения и переходом в полноэкранный режим, то это значение будет неправильным. Если значение получено в обработчике событий, задающем для Stage.displayState значение StageDisplayState.FULL_SCREEN, то значение будет правильным.

Это высота монитора в пикселях, она равна высоте рабочей области, если для Stage.align задано значение StageAlign.TOP_LEFT, а для Stage.scaleModeStageScaleMode.NO_SCALE.

В данном примере создается зеленый прямоугольник размером с рабочую область, а поверх него накладывается красный квадрат, активируемый в качестве кнопки. Щелчок по красному квадрату запускает обработчик событий enterFullScreen(), который задает свойство fullScreenSourceRect и входит в полноэкранный режим. Чтобы задать свойство fullScreenSourceRect, обработчик событий начинает с местоположения и размеров красного квадрата. Затем он сравнивает соотношение сторон (ширина, разделенная на высоту) красного квадрата с соотношением сторон рабочей области, имеющего ширину и высоту полного экрана, чтобы развернуть прямоугольник (fullScreenSourceRect) в соответствии с соотношением сторон экрана. В результате, красный квадрат занимает всю высоту монитора, а по бокам виден зеленый фон. Если бы не соблюдалось соотношение сторон, то вместо зеленого фона по бокам был бы виден фон рабочей области (по умолчанию белый).

Примечание. Протестируйте этот пример в обозревателе. В диалоговом окне «Параметры публикации Flash», на вкладке «HTML» выберите шаблон «Только Flash — Разрешить полноэкранный режим». Укажите Flash Player версии 9.0.115.0 и не забудьте выбрать форматы Flash и HTML на вкладке «Форматы». Затем опубликуйте и откройте полученный HTML-файл в обозревателе.

import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.MouseEvent; import flash.geom.Rectangle; // cover the stage with a green rectangle var greenRect:Sprite = new Sprite(); greenRect.graphics.beginFill(0x00FF00); greenRect.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); addChild(greenRect); // create red square on stage, turn it into a button for going to full screen var redSquare:Sprite = new Sprite(); redSquare.graphics.beginFill(0xFF0000); redSquare.graphics.drawRect(0, 0, 300, 300); redSquare.x = 50; redSquare.y = 50; redSquare.addEventListener(MouseEvent.CLICK, enterFullScreen); redSquare.buttonMode = true; addChild(redSquare); function enterFullScreen(e:MouseEvent):void { // we will go to full screen zoomed in on the red square var redSquare:Sprite = e.target as Sprite; var fullScreenRect:Rectangle = new Rectangle(redSquare.x, redSquare.y, redSquare.width, redSquare.height); // calculate aspect ratio of the red square var rectAspectRatio:Number = fullScreenRect.width / fullScreenRect.height; // calculate aspect ratio of the screen var screenAspectRatio:Number = stage.fullScreenWidth / stage.fullScreenHeight; // change the fullScreenRect so that it covers the entire screen, keeping it centered on the redSquare // try commenting out this section to see what happens if you do not fix the aspect ratio. if (rectAspectRatio > screenAspectRatio) { var newHeight:Number = fullScreenRect.width / screenAspectRatio; fullScreenRect.y -= ((newHeight - fullScreenRect.height) / 2); fullScreenRect.height = newHeight; } else if (rectAspectRatio < screenAspectRatio) { var newWidth:Number = fullScreenRect.height * screenAspectRatio; fullScreenRect.x -= ((newWidth - fullScreenRect.width) / 2); fullScreenRect.width = newWidth; } // go to full screen stage.fullScreenSourceRect = fullScreenRect; stage.displayState = StageDisplayState.FULL_SCREEN; }
displayStatefullScreenSourceRectfullScreenWidthscaleModeStageDisplayStateflash.events.Event.RESIZEflash.events.FullScreenEvent
fullScreenSourceRect Среда выполнения Flash масштабирует конкретный участок рабочей области в полноэкранный режим.flash.geom:Rectangle Среда выполнения Flash масштабирует конкретный участок рабочей области в полноэкранный режим. Если есть возможность, среда выполнения Flash выполняет масштабирование с использованием аппаратных средств, включая графическую карту и видеокарту на компьютере пользователя. В этом случае отображение содержания, как правило, начинается намного быстрее, чем при масштабировании с помощью программных средств.

Когда в качестве значения этому свойству передан допустимый прямоугольник, а свойство displayState настроено на полноэкранный режим, среда выполнения Flash масштабирует заданную область. Фактический размер рабочей области в пикселях в ActionScript не изменяется. Среда выполнения Flash использует ограничение минимального размера прямоугольника, чтобы показать сообщение «Нажмите Esc для выхода из полноэкранного режима». Обычно минимальный размер бывает около 260 на 30 пикселов, но он может варьироваться в зависимости от платформы и версии среды выполнения Flash.

Это свойство можно настраивать, только когда среда выполнения Flash не находится в полноэкранном режиме. Для правильного использования этого свойства его необходимо настроить первым, и только потом выбирать для свойства displayState полноэкранный режим, как показано в примерах кода.

Чтобы включить масштабирование, задайте свойство fullScreenSourceRect объекту прямоугольника.

// valid, will enable hardware scaling stage.fullScreenSourceRect = new Rectangle(0,0,320,240);

Чтобы отключить масштабирование, задайте fullScreenSourceRect=null в ActionScript 3.0 и undefined в ActionScript 2.0.

stage.fullScreenSourceRect = null;

Конечный пользователь может отключить в параметрах отображения проигрывателя Flash Player аппаратное масштабирование, включенное по умолчанию. Дополнительные сведения см. на странице www.adobe.com/go/display_settings_ru.

Чтобы использовать аппаратное масштабирование, необходимо задать полноэкранный режим для всего рабочей области или его части. Следующий код ActionScript 3.0 задает полноэкранный режим для всего рабочей области. import flash.geom.*; { stage.fullScreenSourceRect = new Rectangle(0,0,320,240); stage.displayState = StageDisplayState.FULL_SCREEN; } В следующем примере пользователь может переключать воспроизведение видео с полноэкранного режима в нормальный и обратно щелчком по рабочей области. Если SWF-файл, рассматриваемый в данном примере, воспроизводится в проигрывателе Flash Player версии 9.0.115.0 или более поздней, то для улучшения полноэкранного масштабирования при отображении будет использоваться аппаратное ускорение.

Прежде чем использовать полноэкранный режим с аппаратным масштабированием, необходимо выполнить следующие условия:

  1. Требуется проигрыватель Flash Player версии 9.0.115.0 или более поздней, а также поддерживающий его инструмент разработки.
  2. необходимо изменить HTML-шаблоны с целью поддержки полноэкранного режима; атрибуту allowFullScreen необходимо задать значение true для тегов object и embed. (Сценарии, создающие теги для внедрения SWF, также должны разрешать переход в полноэкранный режим.) Примеры файлов, которые можно использовать для Flash Builder, см. в статье Exploring full-screen mode in Flash Player 9 (Полноэкранный режим в проигрывателе Flash Player 9).
  3. У приложения должны быть разрешение и доступ к видеофайлу FLV. В данном примере предполагается, что файл Flash Video (FLV) находится в том же каталоге, что и SWF-файл.
  4. Пользователь должен разрешить доступ для полноэкранного режима.
  5. Дополнительные сведения об аппаратном масштабировании см. в статье Поддержка видео с высоким разрешением H.264 и аудио формата AAC в проигрывателе Flash Player.

FLV-файл загружается с использованием объектов NetConnection и NetStream. Так как FLV-файл находится в том же каталоге, что и SWF-файл и будет подключаться через HTTP, то параметру метода NetConnection.connect() задается значение null. Объект connect NetConnection сообщает свое состояние, отправляя событие netStatus, вызывающее метод netStatusHandler(). Метод netStatusHandler() проверяет, успешно ли установлено подключение и вызывает метод connectStream(), который создает объект NetStream, принимающий в качестве параметра объект NetConnection. Он также создает видеообъект и прилагаемый к нему объект NetStream. Затем видеообъект добавляется в список отображения и поток включается на воспроизведение. Так как видеофайл FLV не содержит метаданных или информации о ключевых точках, отправляется событие AsyncError. Необходимо настроить прослушиватель для обработки этого события. В данном примере прослушиватель настроен, он игнорирует событие. Также для объекта NetStream настраивается другой прослушиватель для события netStatus. Он будет отображать сообщение об ошибке, если поток не найден. (Обратите внимание, что метод netStatusHandler() можно использовать для обработки любого объема информации о состоянии потока или подключения.)

Когда становятся доступны свойства и методы загруженного SWF-файла, вызывается метод createMouseListener(). Он настраивает прослушивателя событий щелчка мыши по рабочей области. Метод toggleFullScreen() проверяет, находится ли состояние отображения в полноэкранном или нормальном режиме. Если режим нормальный, размер видеообъекта равен размеру видеопотока. Для свойства fullScreenSourceRect выбирается прямоугольник, соответствующий размерам видеообъекта. Затем для свойства Stage.displayMode задается полный экран, в результате чего видео в исходном прямоугольнике развернется на весь экран. Если выполняются системные требования, графические аппаратные средства компьютера будут использоваться для оптимизации производительности полноэкранной визуализации видеоролика, и состояние отображения переходит в полноэкранный режим. Чтобы улавливать любые ошибки безопасности, которые могут возникнуть при переходе в полноэкранный режим, используется try...catch. (Обратите внимание, что состояние отображения должно переводиться на полноэкранный режим после того, как задано свойство fullScreenSourceRect.) Перед переключением в нормальный режим ширина и высота видеообъекта возвращаются к сохраненным исходным значениям. Если этого не сделать, ширина и высота будут определяться изменениями, внесенными в видеообъект для полноэкранного режима.

package { import flash.display.Sprite; import flash.display.StageDisplayState; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.events.AsyncErrorEvent; import flash.events.SecurityErrorEvent; import flash.events.MouseEvent; import flash.events.Event; import flash.geom.Rectangle; public class Stage_fullScreenSourceRectExample2 extends Sprite { private var videoURL:String = "testVideo1.flv"; private var connection:NetConnection; private var stream:NetStream; private var myVideo:Video; private var savedWidth:uint; private var savedHeight:uint; public function Stage_fullScreenSourceRectExample2() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); loaderInfo.addEventListener(Event.INIT, createMouseListener); } private function createMouseListener(event:Event):void { stage.addEventListener(MouseEvent.CLICK, toggleFullScreen); } private function toggleFullScreen(event:MouseEvent):void { if(stage.displayState == StageDisplayState.NORMAL) { myVideo.width = myVideo.videoWidth; myVideo.height = myVideo.videoHeight; try { stage.fullScreenSourceRect = new Rectangle(myVideo.x, myVideo.y, myVideo.width, myVideo.height); stage.displayState = StageDisplayState.FULL_SCREEN; } catch (e:SecurityError) { trace ("A security error occurred while switching to full screen: " + event); myVideo.width = savedWidth; myVideo.height = savedHeight; } }else { myVideo.width = savedWidth; myVideo.height = savedHeight; stage.displayState = StageDisplayState.NORMAL; } } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace ("Unable to locate video: " + videoURL); break; } } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); myVideo = new Video(); myVideo.attachNetStream(stream); stream.play(videoURL); savedWidth = myVideo.width; savedHeight = myVideo.height; addChild(myVideo); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function asyncErrorHandler(event:AsyncErrorEvent):void { } } }
flash.display.StageDisplayStateStage.displayStateStage.scaleModeflash.events.FullScreenEventflash.events.Event.RESIZE
fullScreenWidth Возвращает ту ширину монитора, которая будет использована при мгновенном переходе в полноэкранный режим.uint Возвращает ту ширину монитора, которая будет использована при мгновенном переходе в полноэкранный режим. Если в системе установлено несколько мониторов, то используется тот из них, на котором в данный момент отображается большая часть рабочей области.

Примечание. Если у пользователя есть возможность перемещать обозреватель с одного монитора на другой между получением значения и переходом в полноэкранный режим, то это значение будет неправильным. Если значение получено в обработчике событий, задающем для Stage.displayState значение StageDisplayState.FULL_SCREEN, то значение будет правильным.

Это ширина монитора в пикселях, она равна ширине рабочей области, если для Stage.align задано значение StageAlign.TOP_LEFT, а для Stage.scaleModeStageScaleMode.NO_SCALE.

В данном примере создается зеленый прямоугольник размером с рабочую область, а поверх него накладывается красный квадрат, активируемый в качестве кнопки. Щелчок по красному квадрату запускает обработчик событий enterFullScreen(), который задает свойство fullScreenSourceRect и входит в полноэкранный режим. Чтобы задать свойство fullScreenSourceRect, обработчик событий начинает с местоположения и размеров красного квадрата. Затем он сравнивает соотношение сторон (ширина, разделенная на высоту) красного квадрата с соотношением сторон рабочей области, имеющего ширину и высоту полного экрана, чтобы развернуть прямоугольник (fullScreenSourceRect) в соответствии с соотношением сторон экрана. В результате, красный квадрат занимает всю высоту монитора, а по бокам виден зеленый фон. Если бы не соблюдалось соотношение сторон, то вместо зеленого фона по бокам был бы виден фон рабочей области (по умолчанию белый).

Примечание. Протестируйте этот пример в обозревателе. В диалоговом окне «Параметры публикации Flash», на вкладке «HTML» выберите шаблон «Только Flash — Разрешить полноэкранный режим». Укажите Flash Player версии 9.0.115.0 и не забудьте выбрать форматы Flash и HTML на вкладке «Форматы». Затем опубликуйте и откройте полученный HTML-файл в обозревателе.

import flash.display.Sprite; import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.MouseEvent; import flash.geom.Rectangle; // cover the stage with a green rectangle var greenRect:Sprite = new Sprite(); greenRect.graphics.beginFill(0x00FF00); greenRect.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); addChild(greenRect); // create red square on stage, turn it into a button for going to full screen var redSquare:Sprite = new Sprite(); redSquare.graphics.beginFill(0xFF0000); redSquare.graphics.drawRect(0, 0, 300, 300); redSquare.x = 50; redSquare.y = 50; redSquare.addEventListener(MouseEvent.CLICK, enterFullScreen); redSquare.buttonMode = true; addChild(redSquare); function enterFullScreen(e:MouseEvent):void { // we will go to full screen zoomed in on the red square var redSquare:Sprite = e.target as Sprite; var fullScreenRect:Rectangle = new Rectangle(redSquare.x, redSquare.y, redSquare.width, redSquare.height); // calculate aspect ratio of the red square var rectAspectRatio:Number = fullScreenRect.width / fullScreenRect.height; // calculate aspect ratio of the screen var screenAspectRatio:Number = stage.fullScreenWidth / stage.fullScreenHeight; // change the fullScreenRect so that it covers the entire screen, keeping it centered on the redSquare // try commenting out this section to see what happens if you do not fix the aspect ratio. if (rectAspectRatio > screenAspectRatio) { var newHeight:Number = fullScreenRect.width / screenAspectRatio; fullScreenRect.y -= ((newHeight - fullScreenRect.height) / 2); fullScreenRect.height = newHeight; } else if (rectAspectRatio < screenAspectRatio) { var newWidth:Number = fullScreenRect.height * screenAspectRatio; fullScreenRect.x -= ((newWidth - fullScreenRect.width) / 2); fullScreenRect.width = newWidth; } // go to full screen stage.fullScreenSourceRect = fullScreenRect; stage.displayState = StageDisplayState.FULL_SCREEN; }
displayStatefullScreenHeightfullScreenSourceRectscaleModeStageDisplayStateflash.events.Event.RESIZEflash.events.FullScreenEvent
height Указывает высоту экранного объекта в пикселях.NumberСсылка на свойство height объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorАбсолютно недопустимо настраивать свойство height объекта Stage, даже если вызывающий объект является его владельцем (главный SWF-файл). IllegalOperationErrorflash.errors:IllegalOperationError Указывает высоту экранного объекта в пикселях. Высота вычисляется на основе границ содержимого экранного объекта. Когда задается свойство height, соответствующим образом изменяется и свойство scaleY, как показано в следующем коде. var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleY) // 1; rect.height = 200; trace(rect.scaleY) // 2;

За исключением объектов TextField и Video, экранные объекты без содержимого (например, пустой спрайт), имеют высоту 0, даже если задать свойству height другое значение.

mouseChildren Определяет, поддерживают ли дочерние объекты события мыши или других устройств пользовательского ввода.BooleanСсылка на свойство mouseChildren объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Определяет, поддерживают ли дочерние объекты события мыши или других устройств пользовательского ввода. Если объект поддерживает эти события, пользователь может взаимодействовать с ним с помощью мыши или другого устройства ввода. Значение по умолчанию — true.

Это свойство удобно использовать, когда кнопка создается с помощью экземпляра класса Sprite (а не класса SimpleButton). Когда для создания кнопки используется экземпляр Sprite, при желании можно украсить кнопку с помощью метода addChild(), добавив дополнительные экземпляры Sprite. Этот процесс может вызывать непредвиденное поведение событий мыши, так как целевым объектом события мыши вместо родительского экземпляра могут стать экземпляры Sprite, добавленные в качестве дочерних. Чтобы родительский экземпляр гарантированно был целевым объектом событий мыши, можно задать его свойству mouseChildren значение false.

При настройке данного свойства события не отправляются. Чтобы создать интерактивные функции, необходимо использовать метод addEventListener().

nativeWindow Ссылка на объект NativeWindow, содержащий данную рабочую область.flash.display:NativeWindow Ссылка на объект NativeWindow, содержащий данную рабочую область.

Данное окно представляет собственное окно операционной системы, а рабочая область — его содержимое. Это свойство действительно только для содержимого, выполняющегося в программе AIR на платформах, поддерживающих класс NativeWindow. На других платформах это свойство будет иметь значение null. В проигрывателе Flash Player (при просмотре содержимого в браузере) значением данного свойства также является null.

numChildren Возвращает число дочерних элементов данного объекта.intСсылка на свойство numChildren объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Возвращает число дочерних элементов данного объекта. orientation Текущая ориентация рабочей области.String Текущая ориентация рабочей области. Этому свойству задается одно из четырех значений, определенных в качестве констант класса StageOrientation: Константа StageOrientationОриентация рабочей областиStageOrientation.DEFAULTЭкран находится ориентации по умолчанию (правой стороной вверх).StageOrientation.ROTATED_RIGHTЭкран повернут вправо.StageOrientation.ROTATED_LEFTЭкран повернут влево.StageOrientation.UPSIDE_DOWNЭкран находится в перевернутом положении.StageOrientation.UNKNOWNПрограмма еще не определила начальную ориентацию экрана. Можно добавить прослушиватель для события orientationChange.

Чтобы задать ориентацию рабочей области, используйте метод setOrientation().

Важный: свойства ориентации поддержаны на устройствах Андроида от 2.6 namespace вперед.

StageOrientationautoOrientsdeviceOrientationsupportsOrientationChange
quality Значение класса StageQuality, определяющее, какое качество визуализации следует применять.StringВызов свойства quality объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Значение класса StageQuality, определяющее, какое качество визуализации следует применять. Ниже приводятся допустимые значения.
  • StageQuality.LOW — низкое качество визуализации. Графические объекты и растровые изображения не сглаживаются, а среда выполнения продолжает использовать множественное отображение.
  • StageQuality.MEDIUM — среднее качество визуализации. Графические объекты сглаживаются с помощью решетки пикселей 2 на 2, сглаживание растровых изображений зависит от значения параметра Bitmap.smoothing. Среда выполнения использует множественные отображения. Эта установка подходит для роликов, не содержащих текст.
  • StageQuality.HIGH — высокое качество визуализации. Графические объекты сглаживаются с помощью решетки пикселей 4 на 4, сглаживание растровых изображений зависит от значения параметра Bitmap.smoothing. Среда выполнения использует множественные отображения. Этот параметр качества визуализации используется проигрывателем Flash Player по умолчанию.
  • StageQuality.BEST — Очень высокое качество визуализации. Графические объекты сглаживаются с помощью решетки пикселей 4 на 4. Если параметр Bitmap.smoothing имеет значение true, то среда выполнения использует высококачественный алгоритм уменьшения размера, который дает меньше помех (в то же время использование StageQuality.BEST с параметром Bitmap.smoothing, равным true, существенно замедляет работу и не рекомендуется).

Более высокие параметры качества обеспечивают более качественную визуализацию масштабированных растровых изображений. Однако это происходит за счет увеличения нагрузки на ресурсы системы. В частности, параметр высокого качества при визуализации масштабированного видео может привести к уменьшению частоты кадров.

В профиле Adobe AIR для настольного компьютера можно задать для параметра quality значение StageQuality.BEST или StageQuality.HIGH (значением по умолчанию является StageQuality.HIGH). Изменение значения параметра на другое ни к чему не приводит (значение свойства остается неизменным). В профиле AIR для мобильных устройств доступны все четыре параметра качества. Значение по умолчанию для мобильных устройств StageQuality.MEDIUM.

При работе с содержимым в Adobe AIR настройка свойства quality одного объекта Stage приводит к изменению качества визуализации всех объектов Stage (используемых разными объектами NativeWindow).

Примечание. Операционная система использует шрифты устройства, вследствие чего на них не влияет свойство quality.
flash.display.StageQualityflash.display.Bitmap.smoothing
scaleMode Значение класса StageScaleMode, задающее режим масштабирования.StringВызов метода scaleMode объекта Stage приводит к созданию исключения для всех вызывающих файлов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЗначение класса StageScaleMode, задающее режим масштабирования. Значение класса StageScaleMode, задающее режим масштабирования. Ниже приводятся допустимые значения.
  • StageScaleMode.EXACT_FIT — Задает видимость всего приложения в указанной области. При этом исходное соотношение сторон не поддерживается. Может возникнуть искажение изображения, в результате чего приложение может выглядеть растянутым или сжатым.
  • StageScaleMode.SHOW_ALL — Задает видимость всего приложения в указанной области без искажений при поддержании исходного соотношения сторон приложения. С двух сторон от приложения могут появиться поля.
  • StageScaleMode.NO_BORDER — Задает заполнение указанной области приложением без искажений, но с возможным усечением. При этом поддерживается исходное соотношение сторон приложения.
  • StageScaleMode.NO_SCALE — Фиксируется размер всего приложения, так что он сохраняется даже при изменении размеров окна проигрывателя. Если окно проигрывателя меньше размеров содержимого, может возникнуть усечение.
flash.display.StageScaleMode
showDefaultContextMenu Задает отображение или скрытие элементов по умолчанию в контекстном меню среды выполнения Flash.BooleanВызов свойства showDefaultContextMenu объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorЗадает отображение или скрытие элементов по умолчанию в контекстном меню Flash Player. Задает отображение или скрытие элементов по умолчанию в контекстном меню среды выполнения Flash.

Если свойство showDefaultContextMenu имеет значение true (по умолчанию), то появляются все элементы контекстного меню. Если свойство showDefaultContextMenu имеет значение false, отображаются только элементы меню «Параметры» и «О проигрывателе...».

softKeyboardRect Часть рабочей области, которая в настоящее время занята программной клавиатурой.flash.geom:Rectangle Часть рабочей области, которая в настоящее время занята программной клавиатурой.

Если программная клавиатура невидима, то размер области равен нулю (0,0,0,0).

Когда клавиатура открывается, softKeyboardRect задается в момент передачи события softKeyboardActivate. Если изменяется размер открытой клавиатуры, то среда выполнения обновляет свойство softKeyboardRect и передает дополнительное событие softKeyboardActivate.

Примечание. В ОС Android занятая клавиатурой область оценивается, если операционная система не предоставляет информацию, необходимую для определения точной области. Эта проблема возникает в полноэкранном режиме, а также если клавиатура открывается в ответ на получение фокуса объектом InteractiveObject или на вызов метода requestSoftKeyboard().

SoftKeyboardEventInteractiveObject.needsSoftKeyboard
stageFocusRect Определяет, должна ли отображаться светящаяся рамка вокруг объектов в фокусе.BooleanВызов свойства stageFocusRect объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorОпределяет, должна ли отображаться светящаяся рамка вокруг объектов в фокусе. Определяет, должна ли отображаться светящаяся рамка вокруг объектов в фокусе. stageHeight Текущая высота объекта Stage в пикселях.intВызов свойства stageHeight объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Текущая высота объекта Stage в пикселях.

Если задать для свойства Stage.scaleMode значение StageScaleMode.NO_SCALE, когда пользователь изменяет размеры окна, содержимое рабочей области сохраняет заданный размер, а свойство stageHeight изменяется, отражая новую высоту области экрана, занимаемой SWF-файлом. (В остальных режимах масштабирования свойство stageHeight всегда отражает исходную высоту SWF-файла.) Можно добавить прослушиватель для события resize, а затем использовать свойство stageHeight класса Stage, чтобы определять фактические размеры в пикселях измененного окна среды выполнения Flash. Прослушиватель событий позволяет контролировать, как содержимое экрана корректируется, когда пользователь изменяет размер окна.

Поведение среды AIR для телевизионных устройств немного отличается от поведения на настольных устройствах при задании свойства stageHeight. Если для свойства Stage.scaleMode установлено значение StageScaleMode.NO_SCALE и задается свойство stageHeight, высота рабочей области не изменяется до отображения следующего кадра SWF-файла.

Примечание. На HTML-странице, содержащей SWF-файл, атрибуты height тегов object и embed должны быть выражены в процентах (например, 100%), а не в пикселях. Если параметры определяются кодом JavaScript, то параметр height метода AC_FL_RunContent() также необходимо настроить на представление в процентах. Эти проценты применяются к значению stageHeight.

flash.display.StageScaleMode
stageVideos Список объектов StageVideo, доступных для воспроизведения внешних видеофайлов. Список объектов StageVideo, доступных для воспроизведения внешних видеофайлов.

Число объектов StageVideo, которые можно использовать одновременно, ограничено. Во время начала выполнения SWF-файла число доступных объектов StageVideo зависит от платформы и доступного оборудования.

Для использования объекта StageVideo назначьте элементу объекта Vector stageVideos переменную StageVideo.

Все объекты StageVideo отображаются в рабочей области позади любых экранных объектов. Все объекты StageVideo отображаются в рабочей области в порядке их появления в объекте Vector stageVideos. Например, если объект Vector stageVideos содержит три записи:

  1. Объект StageVideo, находящийся в указателе 0 объекта Vector stageVideos, отображается позади всех объектов StageVideo.
  2. Объект StageVideo, находящийся в указателе 1, отображается перед объектом StageVideo в указателе 0.
  3. Объект StageVideo, находящийся в указателе 2, отображается перед объектом StageVideo в указателе 1.

Используйте свойство StageVideo.depth для изменения этого порядка.

Примечание. В среде AIR для телевизионных устройств поддерживается только один объект StageVideo.

Следующий код демонстрирует получение объекта StageVideo: var stageVideo:StageVideo; if ( stage.stageVideos.length >= 1 ) { stageVideo = stage.stageVideos[0]; }
flash.media.StageVideoflash.events.StageVideoEvent
stageWidth Задает текущую ширину объекта Stage в пикселях.intВызов свойства stageWidth объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Задает текущую ширину объекта Stage в пикселях.

Если задать для свойства Stage.scaleMode значение StageScaleMode.NO_SCALE, когда пользователь изменяет размеры окна, содержимое рабочей области сохраняет заданный размер, а свойство stageWidth изменяется, отражая новую ширину области экрана, занимаемой SWF-файлом. (В остальных режимах масштабирования свойство stageWidth всегда отражает исходную ширину SWF-файла.) Можно добавить прослушиватель для события resize, а затем использовать свойство stageWidth класса Stage, чтобы определять фактические размеры в пикселях измененного окна среды выполнения Flash. Прослушиватель событий позволяет контролировать, как содержимое экрана корректируется, когда пользователь изменяет размер окна.

Поведение среды AIR для телевизионных устройств немного отличается от поведения на настольных устройствах при задании свойства stageWidth. Если для свойства Stage.scaleMode установлено значение StageScaleMode.NO_SCALE и задается свойство stageWidth, ширина рабочей области не изменяется до отображения следующего кадра SWF-файла.

Примечание. На HTML-странице, содержащей SWF-файл атрибуты width тегов object и embed должны быть выражены в процентах (например, 100%), а не в пикселях. Если параметры определяются кодом JavaScript, то параметр width метода AC_FL_RunContent() также необходимо настроить на представление в процентах. Эти проценты применяются к значению stageWidth.

flash.display.StageScaleMode
supportedOrientations Ориентации поддержаны текущим устройством. Ориентации поддержаны текущим устройством.

Вы можете использовать струны ориентации, включенные в этот список как параметры для setOrientation () метод. Задавание неподдерживаемой ориентации завершается неудачно без ошибки.

Возможные ориентации включают:

Константа StageOrientationОриентация рабочей областиStageOrientation.DEFAULTУстановите для рабочей области ориентацию по умолчанию (правой стороной вверх).StageOrientation.ROTATED_RIGHTЗадайте ориентацию рабочей области, повернув ее вправо.StageOrientation.ROTATED_LEFTЗадайте ориентацию рабочей области, повернув ее влево.StageOrientation.UPSIDE_DOWNЗадайте ориентацию рабочей области, перевернув ее сверху вниз.
StageOrientationautoOrientssetOrientationorientation
supportsOrientationChange Поддерживает ли приложение изменения ориентации рабочей области (и поворот устройства).Boolean Поддерживает ли приложение изменения ориентации рабочей области (и поворот устройства). В настоящее время это свойство имеет значение true только в приложениях AIR на мобильных устройствах. autoOrientsdeviceOrientationsupportsOrientationChangetabChildren Определяет, включен ли переход между нижестоящими элементами объекта с помощью клавиши Tab.BooleanСсылка на свойство tabChildren объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityError Определяет, включен ли переход между дочерними элементами объекта с помощью клавиши Tab. Включает или отключает переход между дочерними объектами с помощью клавиши Tab. Значение по умолчанию — true.

Примечание. Свойство tabChildren не следует использовать с Flex. Вместо него следует использовать свойство mx.core.UIComponent.hasFocusableChildren.

textSnapshot Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer.flash.text:TextSnapshotСсылка на свойство textSnapshot объекта Stage приводит к созданию исключения, так как класс Stage не реализует это свойство. Во избежание этого нужно вызвать свойство textSnapshot контейнера экранного объекта, не содержащего объект Stage. IllegalOperationErrorflash.errors:IllegalOperationError Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer. width Указывает ширину экранного объекта в пикселях.NumberСсылка на свойство width объекта Stage приводит к созданию исключения для всех вызывающих объектов, находящихся не в той же изолированной программной среде безопасности, что и владелец объекта Stage (главный SWF-файл). Во избежание этого владелец объекта Stage может предоставить разрешение домену вызывающего объекта путем вызова метода Security.allowDomain() или метода Security.allowInsecureDomain(). Дополнительные сведения см. в главе «Безопасность» в Руководстве разработчика по ActionScript 3.0. SecurityErrorSecurityErrorАбсолютно недопустимо настраивать свойство width объекта Stage, даже если вы являетесь его владельцем. IllegalOperationErrorflash.errors:IllegalOperationError Указывает ширину экранного объекта в пикселях. Ширина вычисляется на основе границ содержимого экранного объекта. Когда задается свойство width, соответствующим образом изменяется и свойство scaleX, как показано в следующем коде. var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleX) // 1; rect.width = 200; trace(rect.scaleX) // 2;

За исключением объектов TextField и Video, экранные объекты без содержимого (например, пустой спрайт), имеют ширину 0, даже если задать свойству width другое значение.

wmodeGPU Указывает, доступен ли композитинг GPU и используется ли он в данный момент.Boolean Указывает, доступен ли композитинг GPU и используется ли он в данный момент. Свойство wmodeGPU имеет значение true, только когда верны все три перечисленные ниже условия.

  • Получен запрос на композитинг GPU.
  • Композитинг GPU доступен.
  • Композитинг GPU используется в данный момент.

В частности, свойство wmodeGPU указывает на одно из следующих состояний.

  1. Композитинг GPU не востребован или недоступен. В этом случае свойство wmodeGPU имеет значение false.
  2. Композитинг GPU востребован (если он применим и доступен), но среда работает в резервном режиме из-за ограничений содержимого (не может обеспечить оптимальную визуализацию). В этом случае свойство wmodeGPU имеет значение true.
  3. Композитинг GPU востребован (если он применим и доступен), и среда работает в оптимальном режиме. В этом случае свойство wmodeGPU также имеет значение true.

Другими словами, свойство wmodeGPU обозначает возможности и состояние среды визуализации. Если среда выполнения не поддерживает композитинг GPU, например AIR 1.5.2, это свойство всегда имеет значение false, поскольку (как сказано выше) оно имеет значение true, только когда композитинг GPU востребован, доступен и используется.

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

Если Flash Player встроен в браузер, композитинг GPU может быть востребован с помощью значения gpu, присвоенного параметру HTML wmode на странице, содержащей SWF-файл. Для других конфигураций запрос на композитинг GPU можно добавить в заголовок SWF-файла (с помощью инструментов разработки SWF).

Однако свойство wmodeGPU не позволяет определить текущее быстродействие визуализации. Даже если композитинг GPU используется, процесс визуализации может выполняться не в оптимальном режиме. Чтобы скорректировать содержимое для оптимальной визуализации, следует использовать отладочную версию среды выполнения Flash и задать свойство DisplayGPUBlendsetting в файле mm.cfg.

Примечание. Это свойство всегда имеет значение false, когда на него ссылается код ActionScript, исполняемый до того, как среда выполнения осуществляет первый прогон визуализации. Например, если выполняется анализ wmodeGPU из сценария кадра 1 в Adobe Flash Professional и ваш SWF-файл является первым SWF-файлом, загруженным в новый экземпляр среды выполнения, тогда wmodeGPU будет иметь значение false. Чтобы получить точное значение, дождитесь, когда будет выполнен хотя бы один прогон визуализации. Если создан прослушиватель для события exitFrame любого объекта DisplayObject, то свойство wmodeGPU возвращает правильное значение.

В следующем примере свойство wmodeGPU анализируется после визуализации экранного объекта mySprite с целью получения точного значения. mySprite.addEventListener(EXIT_FRAME, exithandler): function exithandler(exiteventobject:Event):void { trace(stage.wmodeGPU); }
Событие exitFrame объекта DisplayObject
NativeWindowInitOptions Класс NativeWindowInitOptions определяет параметры инициализации, используемые при создании нового экземпляра NativeWindow.Object Класс NativeWindowInitOptions определяет параметры инициализации, используемые при создании нового экземпляра NativeWindow.

Свойства, определенные в параметрах, инициализации нельзя изменить после создания окна.

Примечание. Для начального окна приложения, автоматически создаваемого в AIR, все эти свойства, кроме type, задаются в дескрипторе приложения. Начальное окно всегда имеет тип NativeWindowType.NORMAL.

flash.display.NativeWindowflash.display.NativeWindowTypeflash.display.NativeWindowSystemChromeNativeWindowInitOptions Создает новый объект NativeWindowInitOptions. Создает новый объект NativeWindowInitOptions.

По умолчанию вновь созданный объект имеет следующие значения:

  • systemChrome = NativeWindowSystemChrome.STANDARD
  • type = NativeWindowType.NORMAL
  • transparent = false
  • владелец = null
  • resizable = true
  • maximizable = true
  • minimizable = true
maximizable Определяет возможность разворачивания окна пользователем.Booleantrue Определяет возможность разворачивания окна пользователем.

Для окон с системным Chrome этот параметр влияет на внешний вид кнопки для разворачивания. Также она влияет и на другие элементы пользовательского интерфейса, управляемого системой, такие как меню окна в Microsoft Windows.

При значении false окно не может быть развернуто пользователем. При вызове метода NativeWindow maximize() напрямую окно полностью разворачивается.

Примечания о вариантах поведения ОС

  • В операционных системах, таких как Mac OS X, в которых разворачивание окна не предотвращает изменения размеров, значение false необходимо задать как для maximizable, так и для resizable, чтобы предотвратить масштабирование или изменение размеров окна.
  • Некоторые диспетчеры окон Linux разрешают пользователю разворачивать окна на весь экран, даже когда свойству maximizable задано значение false.
flash.display.NativeWindow.displayState
minimizable Определяет возможность сворачивания окна пользователем.Booleantrue Определяет возможность сворачивания окна пользователем.

Для окон с системным Chrome этот параметр влияет на внешний вид кнопки для сворачивания. Также она влияет и на другие элементы пользовательского интерфейса, управляемого системой, такие как меню окна в Microsoft Windows.

При значении false окно не может быть свернуто пользователем. При вызове метода NativeWindow minimize() напрямую окно сворачивается.

Примечание. Некоторые диспетчеры окон Linux разрешают пользователю сворачивать окна, даже когда свойству minimizable задано значение false.

flash.display.NativeWindow.displayState
owner Указывает объект NativeWindow, который должен владеть любыми окнами, созданными с этим NativeWindowInitOptions.flash.display:NativeWindow<code>null</code> Указывает объект NativeWindow, который должен владеть любыми окнами, созданными с этим NativeWindowInitOptions.

Когда у окна есть владелец, то окно всегда отображается перед его владельцем, минимизировано и скрыто наряду с его владельцем, и закрывает, когда его владелец закрывает.

flash.display. NativeWindow.ownerflash.display. NativeWindow.listOwnedWindows ()
resizable Определяет возможность изменения размеров окна пользователем.Booleantrue Определяет возможность изменения размеров окна пользователем.

При установке false размеры окна не могут быть изменены пользователем с помощью системного Chrome. Вызов метода startResize() NativeWindow в ответ на событие мыши разрешает пользователям изменять размеры окна. При задании границ окна напрямую размер окна также изменится.

Примечания о вариантах поведения ОС

  • В операционных системах, таких как Mac OS X, в которых разворачивание окна является операцией изменения размеров, значение false необходимо задать как для maximizable, так и для resizable, чтобы предотвратить масштабирование или изменение размеров окна.
  • Некоторые диспетчеры окон Linux разрешают пользователю изменять размеры, даже когда свойству resizable задано значение false.
flash.display.NativeWindow.bounds
systemChrome Указывает, предусмотрен ли для окна системный Chrome.StringNativeWindowSystemChrome.STANDARD Указывает, предусмотрен ли для окна системный Chrome.

Хромом называются элементы управления окном, позволяющие управлять свойствами окна на рабочем столе. Системный Chrome использует стандартные элементы управления для окружения рабочего стола, в котором работает приложение AIR, и согласует его со стандартным внешним видом, используемым в данной операционной системе.

Чтобы использовать хром, предусмотренный в среде (такой как Flex), или указать собственный хром окна, задайте для systemChrome значение NativeWindowSystemChrome.NONE.

Константы для допустимых значений данного свойства определяются в классе NativeWindowSystemChrome:

  • NativeWindowSystemChrome.NONE
  • NativeWindowSystemChrome.STANDARD

Если не задано иное, по умолчанию для systemChrome используется значение NativeWindowSystemChrome.STANDARD.

Для свойства transparent окна с системным хромом не поддерживается значение true.

flash.display.NativeWindowSystemChrome
transparent Указывает, поддерживает ли окно прозрачность и альфа-смешивание с рабочим столом.Booleanfalse Указывает, поддерживает ли окно прозрачность и альфа-смешивание с рабочим столом.

Если задано значение true, отображение окна согласуется с рабочим столом. Области окна, не закрытые экранным объектом или закрытые объектами отображения с значениями альфа-канала, близкими нулю, становятся невидимы и не реагируют на мышь (при нажатии на объект рабочего стола, находящийся под окном). Значение альфа-канала, при котором объект перестает улавливать события мыши, варьируется от 0,01 до 0,06 в зависимости от операционной системы.

Для свойства transparent окна с системным хромом не поддерживается значение true.

Примечание. Не все диспетчеры окно Linux поддерживают прозрачность. В таких системах прозрачные области окна накладываются на черный фон.

type Задает тип создаваемого окна.StringNativeWindowType.NORMAL Задает тип создаваемого окна.

Константы для допустимых значений данного свойства определяются в классе NativeWindowType:

  • NativeWindowType.NORMAL — Обычное окно. Обычные окна используют полноразмерный хром и отображаются на панели задач в ОС Windows или Linux.
  • NativeWindowType.UTILITY — Палитра инструмента. Окна служебной программы используют более тонкую версию системного Chrome и не отображаются на панели задач Windows.
  • NativeWindowType.LIGHTWEIGHT — облегченные окна не могут иметь системный Chrome и не отображаются на панели задач ОС Windows или Linux. Кроме того, у облегченных окон нет системного меню (Alt-Space) в Windows. Облегченные окна подходят для уведомлений и элементов управления, таких как комбинированное поле, открывающие кратковременную область отображения. Когда используется облегченный тип, свойство systemChrome должно иметь значение NativeWindowSystemChrome.NONE.

Если не задано иное, по умолчанию для type используется значение NativeWindowType.NORMAL.

flash.display.NativeWindowType
ShaderParameter Экземпляр ShaderParameter представляет единственный параметр ввода ядра затенения.Object Экземпляр ShaderParameter представляет единственный параметр ввода ядра затенения. При выполнении ядра можно заставить его работать с нулем, одним или несколькими параметрами, используемыми при выполнении ядра. ShaderParameter предоставляет сведения о параметре, например, ожидаемый тип данных. В нем также заложен механизм, позволяющий указывать значение параметра для использования при выполнении операции затенения. Чтобы задать одно или несколько значений параметра затенения, создайте массив с одним или несколькими значениями и назначьте его свойству value.

Доступ к экземпляру ShaderParameter, представляющему параметр экземпляра Shader, осуществляется в качестве свойства data экземпляра Shader. В коде затенения имя свойства ShaderParameter совпадает с именем параметра. Например, если затенение задает параметр с именем radius, то экземпляр ShaderParameter, представляющий параметр radius, будет доступен в качестве свойства radius. Пример:

var radiusParam:ShaderParameter = myShader.data.radius;

В дополнение к заданным свойствам класса ShaderParameter каждый экземпляр ShaderParameter обладает дополнительными свойствами, соответствующими любым метаданным, определенным для параметра. Эти свойства применяются к объекту ShaderParameter при его создании. Имена свойств совпадают с именами метаданных, указанными в исходном коде затенения. Типы данных каждого свойства различаются в зависимости от типов данных соответствующих метаданных. Значение метаданных текста «описание» является экземпляром String. Свойство метаданных, содержащее не строковое значение (например, minValue или defaultValue), является экземпляром Array. Количество элементов и типов данных элементов совпадает со значениями метаданных.

Предположим, в затенение входит два следующих объявления параметров:

parameter float2 size < description: "The size of the image to which the kernel is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: 0.0; maxValue: 50.0; defaultValue: 25.0; >;

В дополнение к встроенным свойствам в экземпляре ShaderParameter, который соответствует параметру size, присутствуют следующие свойства метаданных:

Имя свойстваТип данныхЗначениеnameString"size"descriptionString"The size of the image to which the kernel is applied"minValueArray[0, 0]maxValueArray[100, 100]defaultValueArray[50, 50]

ShaderParameter, соответствующий параметру radius, обладает следующими дополнительными свойствами:

Имя свойстваТип данныхЗначениеnameString"radius"descriptionString"The radius of the effect"minValueArray[0]maxValueArray[50]defaultValueArray[25]

Обычно в коде разработчика прямое создание экземпляра ShaderParameter не заложено. При создании экземпляра Shader экземпляр ShaderParameter создается автоматически для каждого параметра затенения.

flash.display.ShaderDataflash.display.Shader.dataShaderParameter Создает экземпляр ShaderParameter. Создает экземпляр ShaderParameter. В коде разработчика прямой вызов конструктора ShaderParameter не производится. При создании экземпляра Shader экземпляр ShaderParameter создается автоматически для каждого параметра затенения. index Отсчитываемое от нуля значение индекса для параметра.int Отсчитываемое от нуля значение индекса для параметра. type Тип данных параметра согласно заданному типу в затенении.String Тип данных параметра согласно заданному типу в затенении. Набор возможных значений свойства type определяется константами класса ShaderParameterType. flash.display.ShaderParameterTypevalue Значение или значения, передаваемые в качестве значений параметра затенения.Array Значение или значения, передаваемые в качестве значений параметра затенения. Свойство value является индексированным массивом. Число и тип элементов массива соответствует типу данных параметра и задается с помощью свойства type.

В следующей таблице указан тип параметра и соответствующие значение числа и типа данных value элементов массива:

Тип параметраЧисло элементовТип данных элементовfloat (ShaderParameterType.FLOAT)1Numberfloat2 (ShaderParameterType.FLOAT2)2Numberfloat3 (ShaderParameterType.FLOAT3)3Numberfloat4 (ShaderParameterType.FLOAT4)4Numberint (ShaderParameterType.INT)1int или uintint2 (ShaderParameterType.INT2)2int или uintint3 (ShaderParameterType.INT3)3int или uintint4 (ShaderParameterType.INT4)4int или uintbool (ShaderParameterType.BOOL)1Booleanbool2 (ShaderParameterType.BOOL2)2Booleanbool3 (ShaderParameterType.BOOL3)3Booleanbool4 (ShaderParameterType.BOOL4)4Booleanfloat2x2 (ShaderParameterType.MATRIX2X2)4Numberfloat3x3 (ShaderParameterType.MATRIX3X3)9Numberfloat4x4 (ShaderParameterType.MATRIX4X4)16Number

Если используются параметры типа «матрица», то массив заполняется сначала по горизонтали, затем по вертикали. Предположим, что следующая строка ActionScript используется для заполнения параметра float2x2 с именем myMatrix:

myShader.data.myMatrix.value = [.1, .2, .3, .4];

Значения элементов матрица в заголовке затенения:

  • myMatrix[0][0]: .1
  • myMatrix[0][1]: .2
  • myMatrix[1][0]: .3
  • myMatrix[1][1]: .4
GradientType Класс GradientType передает значения для параметра type в методах beginGradientFill() и lineGradientStyle() класса flash.display.Graphics.Object Класс GradientType передает значения для параметра type в методах beginGradientFill() и lineGradientStyle() класса flash.display.Graphics. LINEAR Значение, с помощью которого задается заливка линейным градиентом.linearString Значение, с помощью которого задается заливка линейным градиентом. RADIAL Значение, с помощью которого задается заливка радиальным градиентом.radialString Значение, с помощью которого задается заливка радиальным градиентом. InterpolationMethod Класс InterpolationMethod передает значения для параметра interpolationMethod в методах Graphics.beginGradientFill() и Graphics.lineGradientStyle().Object Класс InterpolationMethod передает значения для параметра interpolationMethod в методах Graphics.beginGradientFill() и Graphics.lineGradientStyle(). Этот параметр определяет пространство RGB, используемое при визуализации градиента. flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()LINEAR_RGB Задает применение метода линейной RGB-интерполяции.linearRGBString Задает применение метода линейной RGB-интерполяции. Это значит, что используется цветовое пространство RGB, основанное на линейной цветовой модели RGB. RGBRGB Задает применение метода RGB-интерполяции.rgbString Задает применение метода RGB-интерполяции. Это значит, что визуализация градиента выполняется с использованием экспоненциального пространства sRGB (стандартное RGB). Пространство sRGB представляет собой стандарт W3C, определяющий нелинейное преобразование между значениями красного, зеленого и синего компонентов и фактическую интенсивность видимого составляющего цвета.

Например, рассмотрим простой линейный градиент между двумя цветами (параметру spreadMethod задано значение SpreadMethod.REFLECT). Разные методы интерполяции влияют на внешний вид следующим образом:

InterpolationMethod.LINEAR_RGBInterpolationMethod.RGB
LINEAR_RGB
IGraphicsPath Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров path в методах flash.display.Graphics и классах рисования. Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров path в методах flash.display.Graphics и классах рисования. Используйте классы средства реализации данного интерфейса для создания данных свойства path и управления ими, а также для повторного использования этих данных для других экземпляров. flash.display.Graphics.drawGraphicsData()flash.display.Graphics.drawPath()IGraphicsFill Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров fill в методах flash.display.Graphics и классах рисования. Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров fill в методах flash.display.Graphics и классах рисования. Используйте классы средства реализации данного интерфейса для создания данных свойства fill и управления ими, а также для повторного использования этих данных для других экземпляров. flash.display.Graphics.drawGraphicsData()flash.display.GraphicsStroke.fillLoaderInfo Класс LoaderInfo обеспечивает сведения о загружаемом SWF-файле или файле изображения (JPEG, GIF или PNG).flash.events:EventDispatcher Класс LoaderInfo обеспечивает сведения о загружаемом SWF-файле или файле изображения (JPEG, GIF или PNG). Объекты LoaderInfo доступны для любых экранных объектов. Предоставляемая информация включает процесс загрузки, URL-адреса загружающего объекта и загружаемого содержимого, общее количество байт и номинальная высота и ширина содержимого.

Обратиться к объектам LoaderInfo можно двумя способами:

  • Свойство contentLoaderInfo объекта flash.display.Loader — Свойство contentLoaderInfo всегда доступно для объекта Loader. Если объект Loader не вызывал метод load() или loadBytes() или не загрузил достаточный объем содержимого, попытка обратиться ко многим свойствам contentLoaderInfo приведет к появлению ошибки.
  • Свойство loaderInfo экранного объекта.

Свойство contentLoaderInfo объекта Loader передает информацию о содержимом, загружаемом объектом Loader, а свойство loaderInfo объекта DisplayObject передает информацию о его корневом SWF-файле.

При использовании объекта Loader для загрузки экранного объекта (SWF-файла или растрового изображения), значение свойства loaderInfo экранного объекта совпадает со значением свойства contentLoaderInfo объекта Loader (DisplayObject.loaderInfo = Loader.contentLoaderInfo). Так как экземпляр основного класса SWF-файла не имеет объекта Loader, свойство loaderInfo является единственным способом обращения к LoaderInfo для экземпляра основного класса SWF-файла.

На следующей схеме показаны разные возможности применения объекта LoaderInfo: для экземпляра основного SWF-файла, для свойства contentLoaderInfo объекта Loader и для свойства loaderInfo загруженного объекта.

Некоторые свойства contentLoaderInfo объекта Loader остаются недоступными вплоть до завершения загрузки. Но можно получить такие свойства, как bytesLoaded, bytesTotal, url, loaderURL и applicationDomain. Когда объект loaderInfo отправляет событие init, можно обратиться ко всем свойствам объекта loaderInfo и загруженного изображения или SWF-файла.

Примечание. Все свойства объектов LoaderInfo доступны только для чтения.

Метод EventDispatcher.dispatchEvent() не применим к объектам LoaderInfo. Если вызвать метод dispatchEvent() для объекта LoaderInfo, появится ошибка IllegalOperationError.

В следующем примере класс LoaderInfoExample используется для вывода изображения в рабочую область. Это можно сделать, выполнив следующие действия.
  1. Создается свойство url, описывающее местоположение и имя изображения.
  2. Конструктор класса создает объект Loader с именем loader.
  3. Объект loader создает экземпляр прослушивателя событий, чтобы обеспечить правильную загрузку изображения.
  4. Конструктор создает новый экземпляр объекта URLRequest, request, и передает url, чтобы сообщить имя и местоположение файла.
  5. Затем объект request передается методу load() объекта loader, который загружает изображение в список отображения.

Важно! В этом примере требуется добавить файл с именем Image.gif в тот же каталог, что и компилированный SWF-файл. Используйте изображение, область которого соответствует размерам основного SWF-файла.

package { import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; public class LoaderInfoExample extends Sprite { private var url:String = "Image.gif"; public function LoaderInfoExample() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function initHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo); trace("initHandler: loaderURL=" + info.loaderURL + " url=" + info.url); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
flash.display.Loaderflash.display.Loader.contentflash.display.DisplayObjectflash.display.DisplayObject.loaderInfohttpStatus Передается, когда сетевой запрос отправляется через HTTP и возможно определить код состояния HTTP.flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent Передается, когда сетевой запрос отправляется через HTTP и возможно определить код состояния HTTP. Loader.load()unload Передается объектом LoaderInfo каждый раз, когда загруженный объект удаляется с помощью метода unload() объекта Loader, а также когда выполняется повторная загрузка тем же объектом Loader, и перед началом загрузки удаляется исходное содержимое.flash.events.Event.UNLOADflash.events.Event Передается объектом LoaderInfo каждый раз, когда загруженный объект удаляется с помощью метода unload() объекта Loader, а также когда выполняется повторная загрузка тем же объектом Loader, и перед началом загрузки удаляется исходное содержимое. Loader.load()Loader.unload()progress Отправляется в случае получения данных в ходе операции загрузки.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Отправляется в случае получения данных в ходе операции загрузки. Loader.load()open Отправляется при запуске операции загрузки.flash.events.Event.OPENflash.events.Event Отправляется при запуске операции загрузки. Loader.load()ioError Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции загрузки.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Отправляется, когда происходит ошибка ввода-вывода, приводящая к сбою операции загрузки. Loader.load()init Отправляется, когда свойства и методы загруженного SWF-файла становятся доступны и готовы к использованию.flash.events.Event.INITflash.events.Event Отправляется, когда свойства и методы загруженного SWF-файла становятся доступны и готовы к использованию. Содержимое, однако, может продолжать загружаться. Объект LoaderInfo отправляет событие init, когда выполняются два следующих условия:
  • Доступны все свойства и методы, связанные с загруженным объектом и с объектом LoaderInfo.
  • Завершена работа конструкторов для всех дочерних объектов.
  • Код ActionScript в первом кадре основной временной шкалы загруженного SWF-файла был полностью выполнен.

Например, событие Event.INIT отправляется после загрузки первого кадра ролика или анимации. Тогда ролик становится доступным и может быть добавлен в список отображения. Загрузка ролика полностью, однако, может занять больше времени. Событие Event.COMPLETE отправляется только при полной загрузке ролика.

Событие init всегда предшествует событию complete.

Loader.load()
complete Отправляется после успешной загрузки данных.flash.events.Event.COMPLETEflash.events.Event Отправляется после успешной загрузки данных. Другими словами, это событие отправляется при завершении загрузки всего содержимого. Событие complete всегда отправляется после события init. Событие init отправляется, когда объект становится доступным, хотя загрузка содержимого может продолжаться. Loader.load()getLoaderInfoByDefinition Возвращает объект LoaderInfo, связанный с SWF-файлом, определенным в качестве объекта.Вызывающий объект выполняется не в доверенной изолированной программной среде. SecurityErrorSecurityErrorСвязанный объект LoaderInfo. Возвращает значение null при вызове в неотладочных сборках (или когда функция отладки выключена) или если указанный object не имеет связанного объекта LoaderInfo (например, некоторые объекты, используемые средой выполнения AIR). flash.display:LoaderInfoobjectObjectОбъект, для которого нужно получить связанный объект LoaderInfo. Возвращает объект LoaderInfo, связанный с SWF-файлом, определенным в качестве объекта. actionScriptVersion Версия ActionScript загруженного SWF-файла.uintЕсли файл загружен недостаточно для получения запрашиваемой информации. ErrorErrorЕсли файл не является SWF-файлом. ErrorError Версия ActionScript загруженного SWF-файла. Версия языка задается с помощью перечислений в классе ActionScriptVersion, таких как ActionScriptVersion.ACTIONSCRIPT2 и ActionScriptVersion.ACTIONSCRIPT3.

Примечание. Это свойство всегда имеет значение ActionScriptVersion.ACTIONSCRIPT2 или ActionScriptVersion.ACTIONSCRIPT3. ActionScript 1.0 и 2.0 указываются как ActionScriptVersion.ACTIONSCRIPT2 (версия 2.0). Это свойство служит только для того, чтобы отличать ActionScript 1.0 и 2.0 от ActionScript 3.0.

flash.display.ActionScriptVersion
applicationDomain При загрузке внешнего SWF-файла все определения ActionScript 3.0 в загруженном классе сохраняются в свойстве applicationDomain.flash.system:ApplicationDomainИзолированная программная среда безопасности данного вызывающего объекта не имеет доступа к данному домену приложений. SecurityErrorSecurityError При загрузке внешнего SWF-файла все определения ActionScript 3.0 в загруженном классе сохраняются в свойстве applicationDomain.

Все программные коды в SWF-файле определены для существования в домене приложения. Текущим доменом приложения является домен, где выполняется основное приложение. Системный домен содержит все домены приложений, включая текущий домен и все классы проигрывателя Flash Player или Adobe AIR.

Все домены приложений, кроме системного, имеют связанный родительский домен. Родительским доменом свойства applicationDomain основного приложения является системный домен. Загруженные классы определяются только в том случае, если они уже не определены в своих родительских классах. Нельзя перезаписать определение загруженного класса новым определением.

Примеры использования доменов приложений см. в главе «Среда клиентской системы» Руководства разработчика по ActionScript 3.0.

flash.system.ApplicationDomain
bytesLoaded Число загруженных байт мультимедиа-содержимого.uint Число загруженных байт мультимедиа-содержимого. Когда это число равно значению bytesTotal, загружено все содержимое. bytesTotal Число упакованных байт во всем мультимедийном файле.uint Число упакованных байт во всем мультимедийном файле.

До отправки первого события progress соответствующим объектом Loader данного объекта LoaderInfo, bytesTotal имеет значение 0. После отправки события progress объектом Loader bytesTotal отражает фактическое количество байт для загрузки.

flash.events.ProgressEventflash.display.Loader
bytes Байты, связанные с объектом LoaderInfo.flash.utils:ByteArrayЕсли объект, обращающийся к данному API-интерфейсу, не может получить доступ к загруженному объекту из-за ограничений по безопасности. Это может происходить, например, когда объект Loader пытается обратиться к свойству contentLoaderInfo.content и не получает права на доступ к загруженному содержимому по соображениям безопасности.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

SecurityErrorSecurityError
Байты, связанные с объектом LoaderInfo.
childAllowsParent Означает доверительные отношения со стороны содержимого (дочернего элемента) к загрузчику (родителю).Boolean Выдается исключение, если файл загружен недостаточно для получения запрашиваемой информации. ErrorError Означает доверительные отношения со стороны содержимого (дочернего элемента) к загрузчику (родительскому элементу). Если дочерний элемент имеет право доступа к родительскому, значение — true; в противном случае значение — false. Это свойство имеет значение true, если дочерний объект вызвал метод allowDomain() для предоставления права доступа родительскому домену или если в дочернем домене загружена политика URL-адресов, предоставляющая доступ родительскому домену. Если дочерний объект и родительский объект находятся в том же домене, это свойство имеет значение true.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

childSandboxBridge Объект, который может быть задан кодом загруженного содержимого, чтобы сделать свойства и методы доступными для кода в изолированной программной среде объекта Loader.ObjectТолько содержимое в изолированной программной среде загруженного содержимого может задать это свойство. SecurityErrorSecurityError Объект, который может быть задан кодом загруженного содержимого, чтобы сделать свойства и методы доступными для кода в изолированной программной среде объекта Loader. Мост изолированной программной среды позволяет содержимому не из домена приложения получить управляемый доступ к сценариям в изолированной программной среде приложения AIR, и наоборот. Этот мост служит своеобразным шлюзом между изолированными программными средами, обеспечивая открытое взаимодействие между изолированной программной средой приложения и другими изолированными средами. parentSandboxBridgecontentType Тип MIME загруженного файла.String Тип MIME загруженного файла. Имеет значение null, если файл загружен недостаточно для определения его типа. В следующем списке перечислены возможные значения.
  • "application/x-shockwave-flash"
  • "image/jpeg"
  • "image/gif"
  • "image/png"
content Загруженный объект, связанный с данным объектом LoaderInfo.flash.display:DisplayObjectЕсли объект, обращающийся к данному API-интерфейсу, не может получить доступ к загруженному объекту из-за ограничений по безопасности. Это может происходить, например, когда объект Loader пытается обратиться к свойству contentLoaderInfo.content и не получает права на доступ к загруженному содержимому по соображениям безопасности.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

SecurityErrorSecurityError
Загруженный объект, связанный с данным объектом LoaderInfo.
frameRate Номинальная частота кадров загруженного SWF-файла (в кадрах в секунду).NumberЕсли файл загружен недостаточно для получения запрашиваемой информации. ErrorErrorЕсли файл не является SWF-файлом. ErrorError Номинальная частота кадров загруженного SWF-файла (в кадрах в секунду). Значение часто бывает целым числом, хотя это не обязательно.

Это значение может отличаться от фактически используемой частоты кадров. Проигрыватель Flash Player или Adobe AIR одновременно использует одну частоту кадров для всех загруженных SWF-файлов. Она определяется номинальной частотой кадров основного SWF-файла. Иногда невозможно достичь основной частоты кадров в зависимости от аппаратного обеспечения, звуковой синхронизации и других факторов.

height Номинальная высота загруженного файла.intЕсли файл загружен недостаточно для получения запрашиваемой информации. ErrorError Номинальная высота загруженного файла. Это значение может отличаться от фактической высоты области отображения содержимого, так как масштаб загруженного содержимого или его родительских экранных объектов может изменяться. isURLInaccessible Указывает, усечено ли свойство LoaderInfo.url.Boolean Указывает, усечено ли свойство LoaderInfo.url. Когда свойство isURLInaccessible имеет значение true, свойство LoaderInfo.url содержит только домен конечного URL-адреса, с которого загружается содержимое. Например, свойство усекается, если содержимое загружается со страницы http://www.adobe.com/assets/hello.swf и свойство LoaderInfo.url имеет значение http://www.adobe.com. Свойство isURLInaccessible имеет значение true, только когда верны все перечисленные ниже условия.
  • Во время загрузки содержимого произошла переадресация HTTP.
  • SWF-файл, вызывающий метод Loader.load(), находится не в том домене, к которому относится конечный URL-адрес содержимого.
  • SWF-файл, вызывающий метод Loader.load(), не имеет разрешения на доступ к содержимому. Разрешение на доступ к содержимому предоставляется так же, как для метода BitmapData.draw(): вызовите метод Security.allowDomain(), чтобы получить доступ к SWF-файлу (или, если требуется доступ к другому типу содержимого, создайте файл политики и используйте свойство LoaderContext.checkPolicyFile).

Примечание. Свойство isURLInaccessible впервые добавлено в версии Flash Player 10.1 и AIR 2.0. Однако оно доступно для SWF-файлов, созданных во всех версиях, если его поддерживает среда выполнения Flash. Таким образом, использование «строгого режима» в некоторых инструментах разработки приводит к возникновению ошибки. Чтобы обойти эту ошибку, используйте косвенный синтаксис myLoaderInfo ["isURLInaccessible"] или выключите строгий режим. Если для разработки используется ПО Flash Professional CS5 или Flex SDK 4.1, этот API-интерфейс можно использовать и скомпилировать для сред выполнения, выпущенных до Flash Player 10.1 и AIR 2.

Для содержимого приложения в AIR это свойство всегда имеет значение false.

urlBitmapData.draw()flash.system.Security.allowDomain()flash.system.LoaderContext.checkPolicyFile
loaderURL URL-адрес SWF-файла, который запустил загрузку мультимедийного содержимого описанного в данном объекте LoaderInfo.String URL-адрес SWF-файла, который запустил загрузку мультимедийного содержимого описанного в данном объекте LoaderInfo. Для экземпляра основного класса SWF-файла этот URL-адрес совпадает с собственным URL-адресом этого файла. loader Объект Loader, связанный с данным объектом LoaderInfo.flash.display:LoaderЕсли объект, обращающийся к данному API-интерфейсу, не может получить доступ к объекту Loader из-за ограничений по безопасности. Это может происходить, например, когда загруженный SWF-файл пытается обратиться к свойству loaderInfo.loader и не получает права доступа к загружающему SWF-файлу по соображениям безопасности.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

SecurityErrorSecurityError
Объект Loader, связанный с данным объектом LoaderInfo. Если этот объект LoaderInfo является свойством loaderInfo экземпляра основного класса SWF-файла, с ним не связывается объект Loader.
parameters Объект, содержащий пары имен и значений, представляющих параметры для загруженного SWF-файла.Object Объект, содержащий пары имен и значений, представляющих параметры для загруженного SWF-файла.

Можно использовать цикл for-in для извлечения всех имен и значений из объекта parameters.

Существует два источника параметров: строка запроса в URL основного SWF-файла и значения HTML-параметра FlashVars (оно затрагивает только основной SWF-файл).

Свойство parameters заменяет технологию ActionScript 1.0 и 2.0, используемую для передачи параметров SWF-файлов в виде свойств основной временной шкалы.

Значение свойства parameters имеет значение null для объектов Loader, содержащих SWF-файлы, использующие ActionScript 1.0 или 2.0.. Это могут быть только SWF-файлы, использующие ActionScript 3.0, содержатся только в объектах Loader с ненулевым значением.

parentAllowsChild Означает доверительные отношения со стороны загрузчика (родительского элемента) к содержимому (дочернему элементу).Boolean Выдается исключение, если файл загружен недостаточно для получения запрашиваемой информации. ErrorError Означает доверительные отношения со стороны загрузчика (родительского элемента) к содержимому (дочернему элементу). Если предшественник имеет право доступа к дочернему элементу, то true; иначе false. Это свойство имеет значение true, если родительский объект вызвал метод allowDomain() для предоставления права доступа дочернему домену или если в родительском домене загружена политика URL-адресов, предоставляющая доступ дочернему домену. Если дочерний объект и родительский объект находятся в том же домене, это свойство имеет значение true.

Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.

parentSandboxBridge Объект, который может быть задан с помощью кода в изолированной программной среде объекта Loader, чтобы сделать свойства и методы доступными для кода загруженного содержимого.ObjectТолько содержимое в изолированной программной среде объекта Loader может задать это свойство. SecurityErrorSecurityError Объект, который может быть задан с помощью кода в изолированной программной среде объекта Loader, чтобы сделать свойства и методы доступными для кода загруженного содержимого. Мост изолированной программной среды позволяет содержимому не из домена приложения получить управляемый доступ к сценариям в изолированной программной среде приложения AIR, и наоборот. Этот мост служит своеобразным шлюзом между изолированными программными средами, обеспечивая открытое взаимодействие между изолированной программной средой приложения и другими изолированными средами. childSandboxBridgesameDomain Показывает доменную связь между загрузчиком и содержимым: true (если у них общий исходный домен) или false (в противном случае).Boolean Выдается исключение, если файл загружен недостаточно для получения запрашиваемой информации. ErrorError Показывает доменную связь между загрузчиком и содержимым: true (если у них общий исходный домен) или false (в противном случае). sharedEvents Экземпляр EventDispatcher, с помощью которого возможен обмен событиями через зоны с разным уровнем безопасности.flash.events:EventDispatcher Экземпляр EventDispatcher, с помощью которого возможен обмен событиями через зоны с разным уровнем безопасности. Даже если объект Loader и загруженное содержимое находятся в доменах защиты, между которыми отсутствуют отношения доверия, они все равно могут получить свойство sharedEvents и использовать этот объект для отправки и получения событий. swfVersion Версия формата загруженного SWF-файла.uintЕсли файл загружен недостаточно для получения запрашиваемой информации. ErrorErrorЕсли файл не является SWF-файлом. ErrorError Версия формата загруженного SWF-файла. Формат файла задается с помощью перечислений в классе SWFVersion, например SWFVersion.FLASH7 и SWFVersion.FLASH9. flash.display.SWFVersionuncaughtErrorEvents Объект, который отправляет событие uncaughtError при возникновении необработанной ошибки в коде SWF-файла данного объекта LoaderInfo.flash.events:UncaughtErrorEvents Объект, который отправляет событие uncaughtError при возникновении необработанной ошибки в коде SWF-файла данного объекта LoaderInfo. Неперехваченные ошибки возникают, когда ошибка выдается за пределами блока try..catch или когда отправляется объект ErrorEvent, для которого не зарегистрирован прослушиватель.

Это свойство создается после завершения загрузки SWF-файла, связанного с данным объектом LoaderInfo. До тех пор свойство uncaughtErrorEvents имеет значение null. В проекте, созданном с использованием только ActionScript, это свойство можно получить во время или после выполнения функции-конструктора основного класса файла SWF. Для проектов Flex свойство uncaughtErrorEvents становится доступным только после отправки события applicationComplete.

Следующий пример демонстрирует использование обработчика для обнаружения неперехваченных ошибок в проекте ActionScript. В примере определяется обработчик событий uncaughtError для обнаружения неперехваченных ошибок. В нем используется кнопка, при нажатии которой выдается ошибка, регистрируемая обработчиком неперехваченных ошибок.

В конструкторе код регистрирует прослушиватель события uncaughtError, отправляемого свойством uncaughtErrorEvents объекта LoaderInfo.

В методе uncaughtErrorHandler() код проверяет тип данных свойства error и реагирует соответствующим образом.

package { import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.MouseEvent; import flash.events.UncaughtErrorEvent; public class UncaughtErrorEventExample extends Sprite { public function UncaughtErrorEventExample() { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); drawUI(); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } private function drawUI():void { var btn:Sprite = new Sprite(); btn.graphics.clear(); btn.graphics.beginFill(0xFFCC00); btn.graphics.drawRect(0, 0, 100, 50); btn.graphics.endFill(); addChild(btn); btn.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { throw new Error("Gak!"); } } }
Ниже приводится такой же пример для Flex, где в качестве корневого содержимого вместо класса ActionScript используется документ MXML. <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" applicationComplete="applicationCompleteHandler();"> <fx:Script> <![CDATA[ import flash.events.ErrorEvent; import flash.events.MouseEvent; import flash.events.UncaughtErrorEvent; private function applicationCompleteHandler():void { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } private function clickHandler(event:MouseEvent):void { throw new Error("Gak!"); } ]]> </fx:Script> <s:Button label="Cause Error" click="clickHandler(event);"/> </s:WindowedApplication>
UncaughtErrorEventLoader.uncaughtErrorEvents
url URL-адрес загружаемого мультимедийного содержимого.String URL-адрес загружаемого мультимедийного содержимого.

Перед отправкой первого события progress соответствующим объектом Loader данного объекта LoaderInfo значение свойства url может отображать только исходный URL-адрес, заданный в вызове метода load() объекта Loader. После первого события progress свойство url отображает окончательный URL-адрес мультимедийного содержимого после того, как выполнено разрешение всех перенаправлений и относительных URL.

В некоторых случаях значение свойства url усекается; дополнительные сведения см. в описании свойства isURLInaccessible.

isURLInaccessibleflash.display.Loader.load()
width Номинальная ширина загруженного содержимого.intЕсли файл загружен недостаточно для получения запрашиваемой информации. ErrorError Номинальная ширина загруженного содержимого. Это значение может отличаться от фактической ширины области отображения содержимого, так как масштаб загруженного содержимого или его родительских экранных объектов может изменяться.
StageQuality Класс StageQuality передает значения для свойства Stage.quality.Object Класс StageQuality передает значения для свойства Stage.quality. flash.display.Stage.qualityBEST Задает очень высокое качество визуализации: графика сглаживается по сетке 4 x 4 пикселя, растровые изображения всегда сглаживаются.bestString Задает очень высокое качество визуализации: графика сглаживается по сетке 4 x 4 пикселя, растровые изображения всегда сглаживаются. HIGH Задает высокое качество визуализации: графика сглаживается по сетке 4 x 4 пикселя, растровые изображения сглаживаются, если ролик статичен.highString Задает высокое качество визуализации: графика сглаживается по сетке 4 x 4 пикселя, растровые изображения сглаживаются, если ролик статичен. LOW Задает низкое качество визуализации: графика не сглаживается, растровые изображения также не сглаживаются.lowString Задает низкое качество визуализации: графика не сглаживается, растровые изображения также не сглаживаются. MEDIUM Задает среднее качество визуализации: графика сглаживается по сетке 2 x 2 пикселя, растровые изображения не сглаживаются.mediumString Задает среднее качество визуализации: графика сглаживается по сетке 2 x 2 пикселя, растровые изображения не сглаживаются. Эта установка подходит для роликов, не содержащих текст. BitmapData Класс BitmapData позволяет работать с данными (пикселями) растрового изображения объекта Bitmap.Позволяет работать с растровыми данными объекта Bitmap. flash.display:IBitmapDrawableObject Класс BitmapData позволяет работать с данными (пикселами) объекта Bitmap. Методы класса BitmapData можно использовать для создания прозрачных или непрозрачных растровых изображений произвольного размера и выполнять с ними различные операции. Также можно обращаться к BitmapData для получения растрового изображения, загружаемого с помощью класса flash.display.Loader.

Этот класс позволяет отделить операции по визуализации растрового изображения от внутренних подпрограмм обновления отображения проигрывателя Flash Player. Путем манипуляции с объектом BitmapData напрямую можно создавать сложные изображения без необходимости постоянно перерисовывать содержимое из векторных данных в каждом кадре.

Методы класса BitmapData поддерживают эффекты, не доступные через фильтры, предусмотренные для нерастровых экранных объектов.

Объект BitmapData содержит массив пиксельных данных. Эти данные могут представлять собой либо полностью непрозрачное растровое изображение, либо прозрачное растровое изображение с данными альфа-канала. Объекты BitmapData любого типа сохраняются в виде буфера 32-разрядных целых чисел. Каждое 32-разрядное целое число определяет свойства одного пикселя в растровом изображении.

Каждое 32-разрядное целое число представляет собой комбинацию 8-разрядных значений каналов (от 0 до 255), описывающих альфа-прозрачность и значения красного, зеленого и синего (ARGB) пикселя. (Для значений ARGB наиболее значимый байт представляет значение альфа-канала, а за ним следуют красный, зеленый и синий.)

Четыре канала (альфа-канал, красный, зеленый и синий) представлены числами при использовании в методе BitmapData.copyChannel() или свойствами DisplacementMapFilter.componentX и DisplacementMapFilter.componentY, и эти числа представлены следующими константами класса BitmapDataChannel:

  • BitmapDataChannel.ALPHA
  • BitmapDataChannel.RED
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.BLUE

Объекты BitmapData можно присоединить к объекту Bitmap с помощью свойства bitmapData объекта Bitmap.

Объект BitmapData можно использовать для заполнения объекта Graphics с помощью методаGraphics.beginBitmapFill().

Во время выполнения AIR классы DockIcon, Icon, InteractiveIcon и SystemTrayIcon имеют свойство bitmaps, которое является массивом объектов BitmapData, определяющих растровые изображения значка.

В AIR 1.5 и Flash Player 10 максимальный размер объекта BitmapData составляет 8,191 пикселя в ширину или высоту, а общее количество пикселей не может превышать 16,777,215. (Т. е. если ширина объекта BitmapData составляет 8,191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину.

Вызовы любого метода или свойства объекта BitmapData выдают ошибку ArgumentError, если объект BitmapData недействителен (например, если height == 0 и width == 0) или если он был удален с помощью метода dispose().

В следующем примере класс BitmapDataExample используется для загрузки изображения Image.gif в объект DisplayObject в месте по умолчанию (0, 0). Затем копия Image.gif помещается справа от оригинала, в котором применяются новые цвета к пикселям, тестируемым с помощью метода threshold(). Это можно сделать, выполнив следующие действия.
  1. Создается свойство url, описывающее местоположение и имя файла изображения.
  2. Конструктор класса создает объект Loader, который затем создает экземпляр прослушивателя событий, отправляемых по завершении обработки изображения методом completeHandler().
  3. Затем объект URLRequest с именем request передается методу loader.load(), который загружает изображение в память с помощью экранного объекта.
  4. После этого изображение добавляется в список отображения, который отображает изображение на экране в положении с координатами x = 0, y = 0.
  5. Затем метод completeHandler() выполняет следующие действия.
    • Создает второй объект Loader и инициализированный вместе с ним объект Bitmap.
    • Создает второй объект Bitmap, duplicate, который в свою очередь вызывает метод duplicateImage(), создающий дубликат исходного изображения.
    • Создает объект BitmapData, который назначается объекту BitmapData объекта duplicate.
    • Создает новый объект Rectangle, инициализированный с теми же координатами, шириной и высотой, что и исходное изображение.
    • Создает новый объект Point с координатами по умолчанию: x = 0, y = 0.
    • Создает следующие переменные:
      • operation — Использует новый цвет при пороговом значении, которое больше или равно исходному значению.
      • threshold — Значение, с которым сравнивается каждый пиксель (в данном примере это светло-серый цвет со значением альфа-канала 0xCC).
      • color — Цвет, указанный для пикселей, проходящих пороговый тест; в данном случае это желтый цвет.
      • mask — Диаметрально противоположный цвет (прозрачный синий).
      • copySource — Установлено на значение false, указывающее на то, что значения пикселей не копируются в том случае, если они не проходят пороговое значение. Это значение не имеет смысла, потому что изображение продублировано и изменяются только пиксели, прошедшие пороговый тест.
    • Вызывает метод threshold() с использованием предшествующих переменных. В результате мы получаем уравнение порога: if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00.

Примечания.

  • SWF-файл потребуется откомпилировать с установленным для параметра «Безопасность локального воспроизведения» режимом «Доступ только к локальным файлам».
  • Данный пример требует, чтобы файл с именем Image.gif находился в том же каталоге, что и SWF-файл.
  • Рекомендуется использовать изображение с шириной не больше 80 пикселей.

package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class BitmapDataExample extends Sprite { private var url:String = "Image.gif"; private var size:uint = 80; public function BitmapDataExample() { configureAssets(); } private function configureAssets():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.x = size * numChildren; loader.load(request); addChild(loader); } private function duplicateImage(original:Bitmap):Bitmap { var image:Bitmap = new Bitmap(original.bitmapData.clone()); image.x = size * numChildren; addChild(image); return image; } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); var duplicate:Bitmap = duplicateImage(image); var bitmapData:BitmapData = duplicate.bitmapData; var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height); var destPoint:Point = new Point(); var operation:String = ">="; var threshold:uint = 0xCCCCCCCC; var color:uint = 0xFFFFFF00; var mask:uint = 0x000000FF; var copySource:Boolean = true; bitmapData.threshold(bitmapData, sourceRect, destPoint, operation, threshold, color, mask, copySource); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
flash.display.Bitmap.bitmapDataflash.desktop.DockIcon.bitmapsflash.display.Graphics.beginBitmapFill()flash.desktop.Icon.bitmapsflash.desktop.InteractiveIcon.bitmapsflash.display.Loaderflash.desktop.SystemTrayIcon.bitmapsBitmapData Создает объект BitmapData заданной ширины и высоты.ширина и/или высота превышает максимальное значение. ArgumentErrorArgumentErrorwidthintШирина растрового изображения в пикселях. heightintВысота растрового изображения в пикселях. transparentBooleantrueОпределяет, поддерживает ли растровое изображение попиксельную прозрачность. Значение по умолчанию — true (прозрачное). Чтобы создать полностью прозрачное растровое изображение, параметру transparent нужно присвоить значение true, а параметру fillColor — 0x00000000 (или 0). Если задать свойству transparent значение false, то можно незначительно улучшить производительность визуализации. fillColoruint0xFFFFFFFF32-разрядное ARGB-значение цвета, используемое для заливки области растрового изображения. Значение по умолчанию — 0xFFFFFFFF (сплошной белый). Создает объект BitmapData заданной ширины и высоты. Если задать значение для параметра fillColor, каждый пиксель растрового изображения будет окрашен в этот цвет.

По умолчанию растровое изображение создается прозрачным, если не передано значение false для параметра transparent. Создав непрозрачное растровое изображение, его нельзя сделать прозрачным. Каждый пиксель непрозрачного растрового изображения использует только 24 бита информации о цветовых каналах. Если растровое изображение определено как прозрачное, каждый пиксель использует 32 бита информации о цветовых каналах, включая канал альфа-прозрачности.

В AIR 1.5 и Flash Player 10 максимальный размер объекта BitmapData составляет 8,191 пикселя в ширину или высоту, а общее количество пикселей не может превышать 16,777,215. (Т. е. если ширина объекта BitmapData составляет 8,191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Если задать значение ширины или высоты, превышающее 2880, новый экземпляр не будет создан.

applyFilter Создает фильтрованное изображение по исходному изображению и объекту filter.Объекты sourceBitmapData, sourceRect, destPoint или filter имеют значение null. TypeErrorTypeErrorПрозрачность объектов BitmapData несовместима с операцией фильтрации. IllegalOperationErrorflash.errors:IllegalOperationErrorЧисло, указывающее на успешность применения фильтра. Если возвращено значение 0, фильтр был применен успешно. Если возвращено отрицательное число, в процессе применения фильтра произошла ошибка. sourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника. filterflash.filters:BitmapFilterОбъект фильтра, который будет использоваться для выполнения фильтрации. Каждый тип фильтра имеет определенные требования, приведенные ниже.
  • BlurFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения. Если форматы изображений не совпадают, то при сопоставлении формата конечного изображения в ходе фильтрации создается копия исходного изображения.
  • BevelFilter, DropShadowFilter, GlowFilter, ChromeFilter — конечное изображение этих фильтров должно быть прозрачным. При вызове фильтра DropShadowFilter или GlowFilter создается изображение, содержащее данные альфа-канала для тени или бликов. Он не создает тень на конечном изображении. Если использовать эти фильтры для непрозрачного конечного изображения, создается исключение.
  • ConvolutionFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения.
  • ColorMatrixFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения.
  • DisplacementMapFilter — этот фильтр может использовать и прозрачные и непрозрачные исходные и конечные изображения, но форматы исходного и конечного изображений должны совпадать.
Создает фильтрованное изображение по исходному изображению и объекту filter.

Этот метод базируется на поведении встроенных объектов фильтра, которые определяют целевой прямоугольник, затрагиваемый вводным исходным прямоугольником.

Полученное после применения фильтра изображение может быть больше вводного. Например, если класс BlurFilter используется, чтобы размыть очертания исходного прямоугольника с координатами (50,50,100,100) и точку назначения с координатами (10,10), то область конечного изображения будет больше (10,10,60,60) в результате размытости. Это происходит на внутреннем уровне при вызове метода applyFilter().

Если параметр sourceRect параметра sourceBitmapData является внутренней областью, например (50,50,100,100) в изображении 200 x 200, фильтр использует исходные пиксели за пределами параметра sourceRect, чтобы создать целевой прямоугольник.

Если объект BitmapData является объектом, указанным в качестве параметра sourceBitmapData, приложение использует временную копию объекта для выполнения фильтрации. Если требуется обеспечить максимальную производительность, такую ситуацию лучше избегать.

В следующем примере показано применение размывающего фильтра к экземпляру BitmapData. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
flash.filters.BevelFilterflash.filters.BlurFilterflash.filters.ColorMatrixFilterflash.filters.ConvolutionFilterflash.filters.DisplacementMapFilterflash.filters.DropShadowFilterflash.filters.GlowFilterflash.display.DisplayObject.filters
clone Возвращает новый объект BitmapData, являющийся клоном исходного экземпляра с точной копией содержащегося в нем растрового изображения.Новый объект BitmapData, идентичный исходному. flash.display:BitmapDataСоздает новый объект BitmapData, являющийся точной копией исходного растрового изображения. Возвращает новый объект BitmapData, являющийся клоном исходного экземпляра с точной копией содержащегося в нем растрового изображения. В следующем примере клонируется экземпляр BitmapData и показывается, что изменение клонированного экземпляра BitmapData не затрагивает оригинал. import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000); var bmd2:BitmapData = bmd1.clone(); bmd1.setPixel32(1, 1, 0xFFFFFFFF); trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000 var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); bm2.x = 110; this.addChild(bm2); colorTransform Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform.Объекты rect и colorTransform имеют значение null. TypeErrorTypeErrorrectflash.geom:RectangleОбъект Rectangle, определяющий область изображения, в которой применяется объект ColorTransform. colorTransformflash.geom:ColorTransformОбъект ColorTransform, описывающий применяемые значения преобразования цвета. Изменяет значения цветов в заданной области растрового изображения с помощью объекта ColorTransform. Если прямоугольник соответствует границам растрового изображения, этот метод преобразует значения цветов для всего изображения. В следующем примере показано применение преобразования цвета к левой половине объекта BitmapData (прямоугольнику). import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.ColorTransform; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000); var cTransform:ColorTransform = new ColorTransform(); cTransform.alphaMultiplier = 0.5 var rect:Rectangle = new Rectangle(0, 0, 40, 30); bmd.colorTransform(rect, cTransform); var bm:Bitmap = new Bitmap(bmd); addChild(bm); flash.geom.ColorTransformflash.geom.Rectanglecompare Сравнивает два объекта BitmapData.Объект otherBitmapData имеет значение null. TypeErrorTypeErrorЕсли два объекта BitmapData имеют одинаковые размеры (ширину и высоту), метод возвращает новый объект BitmapData с различиями между двумя объектами (см. главное обсуждение темы). Если объекты BitmapData идентичны, метод возвращает значение 0. Если объекты BitmapData имеют разную ширину, метод возвращает значение -3. Если объекты BitmapData имеют разную высоту, метод возвращает значение -4. ObjectotherBitmapDataflash.display:BitmapDataОбъект BitmapData, сравниваемый с исходным объектом BitmapData. Сравнивает два объекта BitmapData. Если два объекта BitmapData имеют одинаковые размеры (ширину и высоту), метод возвращает новый объект BitmapData, в котором каждый пиксель представляет «разницу» между пикселями двух исходных объектов.
  • Если пиксели равны, то пиксель разницы будет иметь значение 0x00000000.
  • Если у двух пикселей разные RGB-значения (игнорирующие значение альфа-канала), то пиксель разницы будет иметь значение 0xRRGGBB, где RR/GG/BB — это индивидуальные значения разницы между красными, зелеными и синими каналами (значение пикселя в исходном объекте минус значение пикселя в объекте otherBitmapData). В данном случае различия значений альфа-канала игнорируются.
  • Если же альфа-канал имеет другое значение, то значением пикселя будет 0xZZFFFFFF, где ZZ - это разница между альфа-значениями (альфа-значение исходного объекта минус альфа-значение объекта otherBitmapData).

В качестве примера рассмотрим два следующих объекта BitmapData.

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200

Примечание. Цвета, использованные для заливки двух объектов BitmapData, имеют немного разные RGB-значения (0xFF0000 и 0xFFAA00). В результате использования метода compare() создается новый объект BitmapData, каждый пиксель которого показывает разницу RGB-значений между двумя растровыми изображениями.

Рассмотрим следующие два объекта BitmapData, у которых одинаковые RGB-цвета, но разные значения альфа-канала.

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff

В результате использования метода compare() создается новый объект BitmapData, каждый пиксель которого показывает разницу значений альфа-канала между двумя растровыми изображениями.

Если объекты BitmapData идентичны (имеют одинаковую высоту, ширину и значения пикселей), метод возвращает значение 0.

Если объекты BitmapData имеют разную ширину, метод возвращает значение -3.

Если объекты BitmapData имеют разную высоту, но одинаковую ширину, метод возвращает значение -4.

В следующем примере сравниваются два объекта Bitmap с разной шириной (50 и 60).

var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -4
В следующем примере показывается значение пикселя объекта BitmapData, полученное в результате сравнения двух объектов BitmapData с одинаковыми размерами. import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2)); var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16); trace (diffValue); // 33ffffff var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 60;
copyChannel Переносит данные из одного канала отдельного объекта BitmapData или текущего объекта BitmapData в канал текущего объекта BitmapData.Объекты sourceBitmapData, sourceRect и destPoint имеют значение null. TypeErrorTypeErrorsourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий объект BitmapData. sourceRectflash.geom:RectangleИсходный объект Rectangle. Чтобы скопировать только данные каналов из меньшей по размеру области растрового изображения, задайте исходный прямоугольник, размер которого меньше общего размера объекта BitmapData. destPointflash.geom:PointЦелевой объект Point, представляющий верхний левый угол прямоугольной области, в которую помещаются новые данные канала. Чтобы скопировать только данные канала из одной области в другую в конечном изображении, укажите другую точку вместо исходной (0,0). sourceChanneluintИсходный канал. Используйте значение класса BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA). destChanneluintЦелевой канал. Используйте значение класса BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA). Переносит данные из одного канала отдельного объекта BitmapData или текущего объекта BitmapData в канал текущего объекта BitmapData. Все данные в других каналах конечного объекта BitmapData сохраняются.

Исходным или конечным значением канала может быть одно из следующих:

  • BitmapDataChannel.RED
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.BLUE
  • BitmapDataChannel.ALPHA
В следующем примере копируется красный канал объекта BitmapData в его собственный синий канал в области с размером 20 x 20 пикселей. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE); var bm:Bitmap = new Bitmap(bmd); this.addChild(bm);
flash.geom.Rectangle
copyPixels Представляет собой процедуру быстрой обработки точек изображений без растяжения, поворота и цветовых эффектов.Объекты sourceBitmapData, sourceRect и destPoint имеют значение null. TypeErrorTypeErrorsourceBitmapDataflash.display:BitmapDataВводное растровое изображение, из которого копируются пиксели. Исходным изображением может быть другой экземпляр BitmapData, или оно может ссылаться на текущий экземпляр BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка назначения, представляющая верхний левый угол прямоугольной области, в которую помещаются новые пиксели канала. alphaBitmapDataflash.display:BitmapDatanullВторичный источник альфа-канала объекта BitmapData. alphaPointflash.geom:PointnullТочка в альфа-источнике объекта BitmapData, соответствующая верхнему левому углу параметра sourceRect. mergeAlphaBooleanfalseЧтобы использовать альфа-канал, нужно задать значение true. Чтобы копировать пиксели без альфа-канала, нужно задать значение false. Представляет собой процедуру быстрой обработки точек изображений без растяжения, поворота и цветовых эффектов. Этот метод копирует прямоугольную область исходного изображения в прямоугольную область того же размера в точке назначения конченого объекта BitmapData.

Если включены параметры alphaBitmap и alphaPoint, можно использовать вторичное изображение в качестве источника альфа-канала для исходного изображения. Если исходное изображение имеет данные альфа-канала, то для переноса пикселей из исходного изображения в конечное используются оба набора данных альфа-канала. Параметр alphaPoint — это точка на альфа-изображении, соответствующая верхнему левому углу исходного прямоугольника. Все пиксели, не находящиеся в области пересечения исходного изображения и альфа-изображения, не копируются в конечное изображение.

Свойство mergeAlpha контролирует, используется или нет альфа-канал при копировании одного прозрачного изображение в другое прозрачное изображение. Чтобы копировать пиксели с данными альфа-канала, задайте свойству mergeAlpha значение true. По умолчанию свойство mergeAlpha имеет значение false.

В следующем примере копируются пиксели из области 20 х 20 пикселей одного объекта BitmapData в другой объект BitmapData. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF); var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd2.copyPixels(bmd1, rect, pt); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 50;
dispose Очищает память, задействованную для хранения объекта BitmapData. Очищает память, задействованную для хранения объекта BitmapData.

Когда для изображения вызывается метод dispose(), его ширина и высота получают значение 0. Все последующие вызовы методов и свойств данного экземпляра BitmapData заканчиваются неудачно и приводят к появлению исключения.

Метод BitmapData.dispose() мгновенно освобождает память, занятую фактическими данными растрового изображения (растровое изображение может потреблять до 64 МБ памяти). После вызова BitmapData.dispose() объект BitmapData больше не может использоваться, и среда выполнения Flash выдает исключение в случае последующего вызова функции для объекта BitmapData. Однако метод BitmapData.dispose() не утилизирует объект BitmapData (около 128 байт); память, занимаемая фактическим объектом BitmapData, освобождается при его утилизации сборщиком мусора.

В следующем примере показан результат вызова метода объекта BitmapData после вызова метода dispose() (выдается исключение). import flash.display.BitmapData; var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF); trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF myBitmapData.dispose(); try { trace(myBitmapData.getPixel(1, 1)); } catch (error:Error) { trace(error); // ArgumentError }
flash.system.System.gc()
draw Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash.Параметр source не является объектом BitmapData или DisplayObject. ArgumentErrorArgumentErrorОбъект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты находятся не в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain(). Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения. SecurityErrorSecurityErrorИсточник имеет значение null или не является действительным объектом IBitmapDrawable. ArgumentErrorArgumentErrorsourceflash.display:IBitmapDrawableЭкранный объект или объект BitmapData для рисования объекта BitmapData. Классы DisplayObject и BitmapData реализуют интерфейс IBitmapDrawable. matrixflash.geom:MatrixnullОбъект Matrix, используемый для масштабирования, поворота и перемещения координат растрового изображения. Если не требуется применять преобразование матрицы в изображение, задайте для этого параметра идентификационную матрицу, созданную с помощью конструктора new Matrix() по умолчанию, или передайте значение null. colorTransformflash.geom:ColorTransformnullОбъект ColorTransform, используемый для настройки значений цвета растрового изображения. Если объект не указан, цвета растрового изображения не преобразуются. Если вам необходимо передать этот параметр, но преобразовывать изображение не нужно, задайте для него объект ColorTransform, созданный с помощью конструктора new ColorTransform() по умолчанию. blendModeStringnullСтроковое значение класса flash.display.BlendMode, задающее режим наложения, которые будет применен к полученному растровому изображению. clipRectflash.geom:RectanglenullОбъект Rectangle, определяющий для рисования область исходного объекта. Если это значение не задано, то обрезка не производится и исходный объект рисуется полностью. smoothingBooleanfalseЛогическое значение, которое определяет, будет ли объект BitmapData сглаживаться при масштабировании или повороте вследствие масштабирования или поворота в параметре matrix. Параметр smoothing применяется, только если параметром source является объект BitmapData. Если smoothing имеет значение false, повернутое или масштабированное изображение BitmapData может получиться нечетким или с зазубренными очертаниями. Например в следующих двух изображениях в качестве параметра source используется один и тот же объект BitmapData, но для левого параметр smoothing имеет значение true, а для правого - false.

Рисование с параметром smoothing в значении true требует больше времени, чем со smoothing в значении false.

Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации среды выполнения Flash. Можно задать параметры matrix, colorTransform, blendMode и clipRect назначения, чтобы управлять процессом визуализации. Также можно указать, должно ли сглаживать растровое изображение при масштабировании (это применимо только если источником является объект BitmapData).

Этот метод напрямую соответствует тому, как рисуются объекты с помощью стандартного векторного средства визуализации в интерфейсе инструмента разработки.

Исходный экранный объект не использует свои примененные преобразования для этого вызова. Он обрабатывается в том виде, в котором представлен в библиотеке или файле: без преобразования матрицы, цвета и без режима наложения. Чтобы нарисовать экранный объект (например, фрагмент ролика) с помощью его собственных свойств преобразования, можно скопировать его объект свойства transform в свойство transform объекта Bitmap, использующего объект BitmapData.

Этот метод поддерживается через протокол RTMP в Flash Player 9.0.115.0 и более поздних версиях и в Adobe AIR. Можно контролировать потоки на сервере Flash Media Server в сценарии, выполняемом на стороне сервера. Дополнительные сведения см. в разделах о свойствах Client.audioSampleAccess и Client.videoSampleAccess в документе Справочник по языку ActionScript на стороне сервера для Adobe Flash Media Server.

Если объект source и (в случае с объектами Sprite и MovieClip) все его дочерние объекты не находятся в том же домене, что и вызывающий объект, или не находятся в содержимом, доступном вызывающему объекту посредством вызова метода Security.allowDomain(), вызов метода draw() выдает исключение SecurityError. Это ограничение не применимо к содержимому AIR в изолированной программной среде безопасности приложения.

Существуют также ограничения по использованию загруженного растрового изображения в качестве объекта source. Вызов метода draw() будет успешным, если загруженное изображение принадлежит тому же домену, что и вызывающий объект. Более того, файл междоменной политики на сервере изображения может предоставить право доступа домену содержимого SWF, вызывающего метод draw(). В таком случае необходимо задать свойство checkPolicyFile объекта LoaderContext и использовать этот объект в качестве параметра context при вызове метода load() объекта Loader, используемого для загрузки изображения. Эти ограничения не применимы к содержимому AIR в изолированной программной среде безопасности приложения.

В Windows метод draw() не может выполнить захват содержимого SWF, встроенного в страницу HTML в объекте HTMLLoader в Adobe AIR.

Метод draw() не может выполнить захват содержимого PDF в Adobe AIR. Он также не может выполнить захват содержимого SWF, встроенного в HTML-файл, в котором атрибут wmode имеет значение window в Adobe AIR.

В следующем примере рисуется объект TextField в объекте BitmapData. import flash.display.Bitmap; import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "bitmap text"; var myBitmapData:BitmapData = new BitmapData(80, 20); myBitmapData.draw(tf); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
flash.display.BlendModeflash.geom.ColorTransformflash.geom.Matrixflash.system.JPEGLoaderContext
fillRect Заполняет прямоугольную область пикселей заданным цветом ARGB.Объект rect имеет значение null. TypeErrorTypeErrorrectflash.geom:RectangleПрямоугольная область для заливки. coloruintЦвет ARGB для заливки области. Цвета ARGB часто указываются в шестнадцатеричном формате, например 0xFF336699. Заполняет прямоугольную область пикселей заданным цветом ARGB. В следующем примере прямоугольная область объекта BitmapData заливается синим цветом: import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x0000FF); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm); flash.geom.RectanglefloodFill Выполняет операцию заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом.xintКоордината x изображения. yintКоордината y изображения. coloruintЦвет ARGB для заливки. Применяет операцию заливки к изображению, начиная с точки с координатами (x, y). Выполняет операцию заливки изображения, начиная с точки с координатами (x, y) и заполняя область определенным цветом. Метод floodFill() напоминает инструмент заливки в различных программах для рисования. Цвет представляет собой цвет ARGB, содержащий информацию альфа-канала и данные цвета. В примере ниже показана заливка области объекта BitmapData (т. е. области вокруг пикселя в точке с координатами (10, 10), в которой все цвета граничат с цветом в данной точке) красным цветом. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x000000FF); rect = new Rectangle(15, 15, 25, 25); myBitmapData.fillRect(rect, 0x000000FF); myBitmapData.floodFill(10, 10, 0x00FF0000); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm); generateFilterRect Определяет целевой прямоугольник, на который оказывает влияние вызов метода applyFilter() при наличии объекта BitmapData, исходного прямоугольника и объекта фильтра.Объекты sourceRect и filter имеют значение null. TypeErrorTypeErrorЦелевой прямоугольник, вычисленный с использованием изображения, параметра sourceRect и фильтра. flash.geom:RectanglesourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. filterflash.filters:BitmapFilterОбъект фильтра, используемый для вычисления конечного прямоугольника. Определяет целевой прямоугольник, на который повлияет вызов метода applyFilter(). Определяет целевой прямоугольник, на который оказывает влияние вызов метода applyFilter() при наличии объекта BitmapData, исходного прямоугольника и объекта фильтра.

Например, размывающий фильтр обычно воздействует на область, размер которой превышает размер исходного изображения. Изображение размером 100 x 200 пикселей, отфильтрованное с использованием экземпляра BlurFilter по умолчанию, где blurX = blurY = 4 создает целевой прямоугольник с координатами (-2,-2,104,204). Метод generateFilterRect() позволяет заранее определять размер целевого прямоугольника, чтобы соответствующим образом изменить его размеры перед применением фильтра.

Некоторые фильтры обрезают целевой прямоугольник по размеру исходного изображения. Например, внутренний фильтр DropShadow не увеличивает размер по сравнению с исходным изображением. В данном API-интерфейсе объект BitmapData используется в качестве исходных границ, а не исходного параметра rect.

В следующем примере метод generateFilterRect() используется для определения прямоугольной области, которую будет занимать изображение после применения фильтра размытия. Результаты метода generateFilterRect() выводятся с помощью функции trace(). import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); trace(bmd.generateFilterRect(rect, filter)); // (x=8, y=8, w=44, h=14) bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm); Обратите внимание, что метод generateFilterRect() не применяет фильтр. Вызовите метод applyFilter(), чтобы применить фильтр.
getColorBoundsRect Определяет прямоугольный участок, полностью охватывающий все пиксели заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пиксели, не содержащие заданный цвет (если параметру findColor присвоено значение false).Область изображения, заполненная заданным цветом. flash.geom:RectanglemaskuintШестнадцатеричное значение, указывающее рассматриваемые биты цвета ARGB. Значение цвета объединяется с данным шестнадцатеричным значением с использованием оператора & (побитовое И). coloruintШестнадцатеричное значение, задающее цвет ARGB для соответствия (если findColor имеет значение true) или не соответствия (если findColor имеет значение false). findColorBooleantrueЕсли задано значение true, то возвращаются границы значения цвета в изображения. Если задано значение false, возвращаются границы области изображения, в которой этого цвета нет. Определяет прямоугольный участок, полностью охватывающий все пиксели заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пиксели, не содержащие заданный цвет (если параметру findColor присвоено значение false).

Например, если имеется исходное изображение и требуется определить прямоугольник изображения, содержащий ненулевой альфа-канал, передайте в качестве параметров {mask: 0xFF000000, color: 0x00000000}. Если параметру findColor задано значение true, в пределах всего изображения ведется поиск границ с пикселями, для которых (value & mask) == color (где value - это значение цвета пикселя). Если параметру findColor задано значение false, в пределах всего изображения ведется поиск границ пикселей, для которых (value & mask)! = color (где value - это значение цвета пиксела). Чтобы определить белое пространство вокруг изображения, передайте {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}, чтобы найти границы не белых пикселей.

В следующем примере создается объект BitmapData с красным цветом в верхней половине пикселей. Затем вызывается метод getColorBoundsRect() для определения прямоугольника, содержащего красные пиксели (0xFF0000), после чего тот же метод вызывается для определения прямоугольника, пиксели которого не красные (параметру findColor задается значение false. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF); var rect:Rectangle = new Rectangle(0, 0, 80, 20); bmd.fillRect(rect, 0xFF0000); var maskColor:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true); trace(redBounds); // (x=0, y=0, w=80, h=20) var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false); trace(notRedBounds); // (x=0, y=20, w=80, h=20) var bm:Bitmap = new Bitmap(bmd); addChild(bm);
getPixel32 Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB.Число, представляющее значение пикселя ARGB. Если координаты (x, y) находятся за пределами изображения, возвращается значение 0. uintxintПоложение пикселя по оси x. yintПоложение пикселя по оси y. Возвращает значение цвета ARGB, содержащее данные альфа-канала и данные RGB. Этот метод подобен методу getPixel(), который возвращает RGB-цвет без данных альфа-канала.

Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.

В следующем примере создается объект BitmapData, залитый цветом, а затем с помощью метода getPixel32() определяется значение цвета в верхнем левом пикселе, после чего определяются шестнадцатеричные значения для каждого компонента цвета (альфа-канал, красный, зеленый и синий). import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(0, 0); var alphaValue:uint = pixelValue >> 24 & 0xFF; var red:uint = pixelValue >> 16 & 0xFF; var green:uint = pixelValue >> 8 & 0xFF; var blue:uint = pixelValue & 0xFF; trace(alphaValue.toString(16)); // ff trace(red.toString(16)); // 44 trace(green.toString(16)); // aa trace(blue.toString(16)); // cc
getPixel()setPixel32()
getPixel Возвращает целое число, представляющее RGB-значение пикселя из объекта BitmapData в конкретной точке (x, y).Число, представляющее RGB-значение пикселя. Если координаты (x, y) находятся за пределами изображения, метод возвращает 0. uintxintПоложение пикселя по оси x. yintПоложение пикселя по оси y. Возвращает целое число, представляющее RGB-значение указанной точки объекта BitmapData. Возвращает целое число, представляющее RGB-значение пикселя из объекта BitmapData в конкретной точке (x, y). Метод getPixel() возвращает неумноженное значение пикселя. Информация альфа-канала не возвращается.

Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.

В следующем примере объект BitmapData заливается красным, а с помощью метода getPixel() определяется значение цвета для верхнего левого пикселя. import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(0, 0); trace(pixelValue.toString(16)); // ff0000;
getPixel32()setPixel()
getPixels Формирует байтовый массив из прямоугольного участка пиксельных данных.Объект rect имеет значение null. TypeErrorTypeErrorОбъект ByteArray, представляющий пиксели в данном объекте Rectangle. flash.utils:ByteArrayrectflash.geom:RectangleПрямоугольная область в текущем объекте BitmapData. Формирует байтовый массив из прямоугольного участка пиксельных данных. Записывает неподписанное целое число (32-разрядное неумноженное значение пикселя) для каждого пикселя в байтовом массиве. В следующем примере создается объект BitmapData, заполненный пикселями, образующими белый шум, а затем с помощью метода getPixels() объект ByteArray заполняется пиксельными значениями объекта BitmapData. import flash.display.BitmapData; import flash.geom.Rectangle; import flash.utils.ByteArray; var bmd:BitmapData = new BitmapData(80, 40, true); var seed:int = int(Math.random() * int.MAX_VALUE); bmd.noise(seed); var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height); var pixels:ByteArray = bmd.getPixels(bounds); flash.utils.ByteArraygetVector Формирует векторный массив из прямоугольного участка пиксельных данных.Объект rect имеет значение null. TypeErrorTypeErrorОбъект Vector, представляющий указанный объект Rectangle. rectflash.geom:RectangleПрямоугольная область в текущем объекте BitmapData. Формирует векторный массив из прямоугольного участка пиксельных данных. Возвращает объект Vector беззнаковых целых чисел (32-разрядное неумноженное пиксельное значение) для заданного прямоугольника. histogram Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData.hRectflash.geom:RectanglenullИспользуемая область объекта BitmapData. Вычисление гистограммы двоичных чисел с 256 значениями для объекта BitmapData. Этот метод возвращает объект Vector, содержащий четыре экземпляра Vector.<Number> (четыре объекта Vector, содержащие объекты Number). Четыре экземпляра Vector представляют красный, зеленый, синий и альфа компоненты по порядку. Каждый экземпляр Vector содержит 256 значений, которые представляют распространение отдельного значения компонента: от 0 до 255. hitTest Выполняет распознавание на уровне пикселей между одним растровым изображением и точкой, прямоугольником или другим растровым изображением.Параметр secondObject не является объектом Point, Rectangle, Bitmap или BitmapData. ArgumentErrorArgumentErrorОбъект firstPoint имеет значение null. TypeErrorTypeErrorИмеет значение true при наличии совпадений; в противном случае - false. BooleanfirstPointflash.geom:Point Положение верхнего левого угла изображения BitmapData в произвольном координатном пространстве. То же координатное пространство используется при определении параметра secondBitmapPoint. firstAlphaThresholduintСамое низкое значение альфа-канала, рассматриваемое как непрозрачное, для данной проверки попадания. secondObjectObjectОбъект Rectangle, Point, Bitmap или BitmapData. secondBitmapDataPointflash.geom:PointnullТочка, определяющая местоположение пикселя во втором объекте BitmapData. Используйте этот параметр, только когда значением secondObject является объект BitmapData. secondAlphaThresholduint1Самое низкое значение альфа-канала, рассматриваемое как непрозрачное во втором объекте BitmapData. Используйте этот параметр, только когда значением secondObject является BitmapData и оба объекта BitmapData прозрачные. Выполняет распознавание на уровне пикселей между одним растровым изображением и точкой, прямоугольником или другим растровым изображением. Попаданием считается наложение точки или прямоугольника на непрозрачный пиксель или два накладывающихся непрозрачных пикселя. При тестировании нажатия растягивание, поворот и другие преобразования обоих объектов не учитываются.

Если изображение непрозрачное, то при использовании данного метода оно считается полностью непрозрачным прямоугольником. Для тестирования нажатия, при котором учитывается прозрачность, оба изображения должны быть прозрачными. Когда тестируются два прозрачных изображения, параметры порога альфа-значений контролируют, какие значения альфа-канала (от 0 до 255) считаются непрозрачными.

В следующем примере создается объект BitmapData, являющийся непрозрачным только в прямоугольной области с координатами (20, 20, 40, 40), и вызывается метод hitTest() с объектом Point в качестве secondObject. При первом вызове объект Point определяет верхний левый угол объекта BitmapData, который является прозрачным, а при втором вызове объект Point определяет центр объекта BitmapData, который является непрозрачным. import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000); var rect:Rectangle = new Rectangle(20, 20, 40, 40); bmd1.fillRect(rect, 0xFF0000FF); var pt1:Point = new Point(1, 1); trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false var pt2:Point = new Point(40, 40); trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock Блокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, не обновлялись при изменении данного объекта BitmapData. Блокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, не обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом unlock() до или после многочисленных вызовов метода setPixel() или setPixel32(). В следующем примере создается объект BitmapData на базе свойства bitmapData объекта Bitmap с именем picture. Затем вызывается метод lock() перед вызовом сложной пользовательской функции, complexTransformation(), изменяющей объект BitmapData. (Объект picture и функция complexTransformation() в этом примере не определяются.) Даже если функция complexTransformation() обновляет свойство bitmapData объекта picture, изменения не отображаются, пока код не вызовет метод unlock() объекта bitmapData. import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData; setPixel()setPixel32()unlock()merge Проводит наложение каналов исходного изображения на целевое изображение.Объекты sourceBitmapData, sourceRect и destPoint имеют значение null. TypeErrorTypeErrorsourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий объект BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника. redMultiplieruintШестнадцатеричное значение, на которое будет умножаться значение красного канала. greenMultiplieruintШестнадцатеричное значение, на которое будет умножаться значение зеленого канала. blueMultiplieruintШестнадцатеричное значение, на которое будет умножаться значение синего канала. alphaMultiplieruintШестнадцатеричное значение, на которое будет умножаться значение альфа-канала. Проводит наложение каналов исходного изображения на целевое изображение. Для каждого канала и каждого пикселя вычисляется новое значение на основе значений каналов исходных и целевых пикселей. Например, в красном канале новое значение вычисляется следующим образом (где redSrc - это значение красного канала для пикселя в исходном изображении, а redDest - это значение красного канала в соответствующем пикселе целевого изображения):

new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;

Значения redMultiplier, greenMultiplier, blueMultiplier и alphaMultiplier являются множителями, используемыми для канала каждого цвета. Используйте шестнадцатеричное значение от 0 до 0x100 (256), где 0 обозначает, что в результате используется полное значение целевого изображения, а 0x100 - что используется полное значение исходного изображения, а промежуточные числа означают, что используется наложение (так 0x80 указывает на 50-процентное наложение).

В следующем примере создаются два объекта BitmapData. Размер обоих составляет 100 х 80 пикселей. Первый объект заливается зеленым цветом, а второй — красным. Код вызывает метод merge(), накладывающий пиксели второго объекта BitmapData на первый объект BitmapData, но только в заданной прямоугольной области: import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00); var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(20, 20); var mult:uint = 0x80; // 50% bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110;
noise Заполняет изображение пикселями, представляющими собой белый шум.randomSeedintНачальное значение, используемое для создания случайных чисел. Если не изменять остальных параметров, можно создавать различные псевдослучайные результаты, изменяя начальное значение случайной последовательности. Функция шума является функцией наложения, а не настоящей функцией создания случайных чисел, поэтому при использовании одного и того же начального числа она каждый раз дает одинаковые результаты. lowuint0Самое низкое значение для создания случайных чисел для каждого канала (от 0 до 255). highuint255Самое высокое значение для создания случайных чисел для каждого канала (от 0 до 255). channelOptionsuint7Число, которое может представлять собой любую комбинацию значений четырех каналов цвета (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN и BitmapDataChannel.ALPHA). Можно использовать логический оператор ИЛИ (|) для комбинирования значений каналов. grayScaleBooleanfalseЛогическое значение. Если имеет значение true, создается изображение с использованием серой шкалы путем присвоения всем цветовым каналам одного и того же значения. На значение альфа-канала не воздействует задание значения true для этого параметра. Заполняет изображение пикселями, представляющими собой белый шум. В следующем примере создается два объекта BitmapData и для каждого из них вызывается метод noise(). Однако параметру grayscale задано значение false для вызова метода noise() первого объекта и true для вызова метода noise() второго объекта. import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; var bmd1:BitmapData = new BitmapData(80, 80); var bmd2:BitmapData = new BitmapData(80, 80); var seed:int = int(Math.random() * int.MAX_VALUE); bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false); bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 90; flash.display.BitmapDataChannel.REDflash.display.BitmapDataChannel.BLUEflash.display.BitmapDataChannel.GREENflash.display.BitmapDataChannel.ALPHApaletteMap Переназначает значения цветовых каналов в изображении, содержащем до четырех массивов данных цветовой палитры, по одному для каждого канала.Объекты sourceBitmapData, sourceRect и destPoint имеют значение null. TypeErrorTypeErrorsourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка в целевом изображении (текущем объекте BitmapData), соответствующая правому левому углу исходного прямоугольника. redArrayArraynullЕсли redArray не имеет значение null, красный = redArray[исходное значение красного], в противном случае красный = исходное значение красного (red = redArray[source red value] else red = source rect value). greenArrayArraynullЕсли greenArray не имеет значение null, зеленый = greenArray[исходное значение зеленого], в противном случае зеленый = исходное значение зеленого (green = greenArray[source green value] else green = source green value.) blueArrayArraynullЕсли blueArray не имеет значение null, синий = blueArray[исходное значение синего], в противном случае синий = исходное значение синего (blue = blueArray[source blue value] else blue = source blue value. alphaArrayArraynullЕсли alphaArray не имеет значение null, альфа = alphaArray[исходное альфа-значение], в противном случае альфа = исходное альфа-значение (alpha = alphaArray[source alpha value] else alpha = source alpha value). Переназначает значения цветовых каналов в изображении, содержащем до четырех массивов данных цветовой палитры, по одному для каждого канала.

Среда выполнения Flash предпринимает следующие шаги для создания конечного изображения.

  1. После вычисления значения красного, зеленого, синего и альфа-каналов складываются, образуя стандартное 32-разрядное целое число.
  2. Значения красного, зеленого, синего и альфа-каналов каждого пикселя извлекаются в отдельные значения от 0 до 255. Эти значения используются для поиска новых значений цвета в соответствующем массиве: redArray, greenArray, blueArray и alphaArray. Каждый из этих четырех массивов должен содержать 256 значений.
  3. После получения новых значений для всех четырех каналов, они образуют стандартное значение ARGB, которое применяется к пикселю.

Этот метод может поддерживать эффекты, создаваемые с использованием разных каналов. Каждый вводный массив содержит полные 32-разрядные значения, поэтому при складывании значений не происходит смещения. Эта подпрограмма не поддерживает фиксацию по каналам.

Если для канала не задан массив, то канал цвета копируется из исходного изображения в целевое.

Этот метод можно использовать для самых разнообразных эффектов, таких как общее наложение палитры (преобразование одного канала для создания псевдо-цветного изображения). Этот метод можно использовать для различных расширенных алгоритмов манипуляций с цветом, таких как использование гаммы, кривых, уровней и квантизации.

В следующем примере создается зеленый объект BitmapData с красным квадратом по центру, а затем вызывается метод paletteMap(), чтобы поменять местами красный и зеленый в нижней прямоугольной области объекта BitmapData. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000); myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00); var redArray:Array = new Array(256); var greenArray:Array = new Array(256); for(var i:uint = 0; i < 255; i++) { redArray[i] = 0x00000000; greenArray[i] = 0x00000000; } redArray[0xFF] = 0x0000FF00; greenArray[0xFF] = 0x00FF0000; var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40); var pt:Point = new Point(0, 0); myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray); var bm1:Bitmap = new Bitmap(myBitmapData); addChild(bm1);
perlinNoise Создает изображение с шумом Перлина.baseXNumberЧастота, используемая по оси x. Например, чтобы создать объект с шумом для изображения размером 64 x 128, передайте 64 для значения baseX. baseYNumberЧастота для использования в направлении y. Например, чтобы создать объект с шумом для изображения размером 64 x 128, передайте 128 для значения baseY. numOctavesuintКоличество октав или индивидуальных функций шума, которые необходимо объединить с целью создания шума. Чем больше октав, тем более детальное изображение создается. Также чем больше октав, тем больше времени требуется на обработку. randomSeedintНачальное значение, используемое для создания случайных чисел. Если не изменять остальных параметров, можно создавать различные псевдослучайные результаты, изменяя начальное значение случайной последовательности. Функция шума Перлина является функцией наложения, а не настоящей функцией создания случайных чисел, поэтому при использовании одного и того же начального числа она каждый раз дает одинаковые результаты. stitchBooleanЛогическое значение. При значении true метод пытается сгладить края перехода изображения, чтобы создать бесшовную текстуру для мозаичной заливки растровым изображением. fractalNoiseBooleanЛогическое значение. При значении true метод создает фрактальный шум, в противном случае создается турбулентность. Изображение с турбулентностью имеет видимые прерывания градиента, благодаря чему оно больше подходит для более резких визуальных эффектов, например для создания языков пламени или морских волн. channelOptionsuint7 Число, которое может представлять собой любую комбинацию значений четырех каналов цвета (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN и BitmapDataChannel.ALPHA). Можно использовать логический оператор ИЛИ (|) для комбинирования значений каналов. grayScaleBooleanfalseЛогическое значение. При значении true создается изображение с использованием серой шкалы путем присвоения каналам красного, зеленого и синего цветов идентичных значений. Значение альфа-канала остается без изменений, если данному параметру задано значение true. offsetsArraynullМассив точек, соответствующий смещениям в направлениях x и y для каждой октавы. Изменяя значения смещения, можно плавно прокручивать слои изображения с шумом Перлина. Каждая точка в массиве смещения применяется к функции шума конкретной октавы. Создает изображение с шумом Перлина.

Алгоритм создания шума Перлина интерполирует и объединяет отдельные функции случайного шума (называемые октавами) в одну функцию, создающую более естественный случайный шум. Как и в музыкальных октавах, каждая функция октавы удваивает частоту предыдущей. Шум Перлина описывается как «фрактальная сумма шума», так как он объединяет несколько наборов шумовых данных с разным уровнем детализации.

Функции шума Перлина можно использовать для симуляции естественных явлений и ландшафтов, таких как текстура древесины, облака и горные хребты. В большинстве случаев результат функции шума Перлина не отображается непосредственно: он используется для доработки других изображений, придавая им псевдослучайные вариации.

Простые функции цифрового белого шума часто дают изображения с резко контрастирующими точками. Такое явление редко встречается в естественных условиях. Алгоритм шума Перлина объединяет несколько функций шума с разным уровнем детализации. В результате чего разница между значениями соседних пикселей становится не столь большой.

В следующем примере создается объект BitmapData 200 х 200 пикселей, который вызывает метод perlinNoise() для создания эффекта красной и синей акварели. import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC); var seed:Number = Math.floor(Math.random() * 10); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
pixelDissolve Выполняет растворение точек от исходного изображения до целевого или для одного изображения.Объекты sourceBitmapData, sourceRect и destPoint имеют значение null. TypeErrorTypeErrornumPixels имеет отрицательное значение. TypeErrorTypeErrorНовое начальное значение случайного числа для последующих вызовов. intsourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника. randomSeedint0Начальное значение случайного числа, используемое для начала растворения точек. numPixelsint0По умолчанию составляет 1/30 исходной области (ширина x высота). fillColoruint0Значение цвета ARGB, используемое для заливки пикселей, для которых исходное значение равно целевому. Выполняет растворение точек от исходного изображения до целевого или для одного изображения. Среда выполнения Flash использует значение randomSeed для выполнения случайного растворения точек. Возвращаемое значение функции должно передаваться при последующих вызовах для продолжения растворения точек вплоть до завершения операции.

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

Если исходное и целевое изображения одинаковы, пиксели заполняются с помощью параметра color. Этот процесс позволяет выполнить растворение из заполненного изображения. В данном режиме целевой параметр point игнорируется.

В следующем примере метод pixelDissolve() используется для преобразования серого объекта BitmapData в красный: одновременно растворяется по 40 пикселей до тех пор, пока не будет изменен цвет всех пикселей. import flash.display.BitmapData; import flash.display.Bitmap; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.Timer; import flash.events.TimerEvent; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC); var bitmap:Bitmap = new Bitmap(bmd); addChild(bitmap); var tim:Timer = new Timer(20); tim.start(); tim.addEventListener(TimerEvent.TIMER, timerHandler); function timerHandler(event:TimerEvent):void { var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE); dissolve(randomNum); } function dissolve(randomNum:Number):void { var rect:Rectangle = bmd.rect; var pt:Point = new Point(0, 0); var numberOfPixels:uint = 100; var red:uint = 0x00FF0000; bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red); var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true); if(grayRegion.width == 0 && grayRegion.height == 0 ) { tim.stop(); } }
scroll Прокручивает изображение на заданное число точек (x, y).xintЧисло точек для прокрутки по горизонтали. yintЧисло точек для прокрутки по вертикали. Прокручивает изображение на заданное число точек (x, y). Края за пределами области прокрутки остаются без изменений. В следующем примере показывается эффект прокрутки объекта BitmapData на 40 пикселей вправо. import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC); var rect:Rectangle = new Rectangle(0, 0, 40, 40); bmd.fillRect(rect, 0xFFFF0000); var bm:Bitmap = new Bitmap(bmd); addChild(bm); trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc bmd.scroll(30, 0); trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000 setPixel32 Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData.xintПоложение по оси x пикселей, значение которого меняется. yintПоложение по оси y пикселя, значение которого меняется. coloruintПолученный ARGB-цвет пикселя. Если растровое изображение непрозрачное, то альфа-составляющая значения цвета игнорируется. Задает значения цвета и альфа-прозрачности отдельно взятой точки объекта BitmapData. Этот метод поход на метод setPixel(). Основное различие заключается в том, что метод setPixel32() принимает ARGB-значение цвета, содержащее информацию об альфа-канале.

Все пиксели в объекте BitmapData сохраняются как предварительно умноженные значения цвета. В предварительно умноженном пикселе изображения значения красного, зеленого и синего канала уже умножены на данные альфа-канала. Например, если значение альфа-канала равно нулю, то значения RGB-каналов также равны нулю независимо от их значений до умножения. Потеря данных может вызвать проблемы при выполнении операций. Все методы BitmapData принимают и возвращают неумноженные значения. Перед тем как возвращать значение, внутреннее представление пикселя преобразуется из предварительно умноженного в неумноженное. Во время операции настройки, значение пикселя предварительно умножается, и только после этого настраивается необработанный пиксель изображения.

Примечание. Для повышения производительности при многократном использовании метода setPixel() или setPixel32() вызовите метод lock() перед тем, как вызывать setPixel() или setPixel32(), а по завершении внесения изменений в пиксели, вызовите метод unlock(). Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселей.

В следующем примере с помощью метода setPixel32() рисуется прозрачная красная линия в объекте BitmapData (значение альфа-канала = 0х60). import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC); for (var i:uint = 0; i < 80; i++) { var red:uint = 0x60FF0000; bmd.setPixel32(i, 40, red); } var bm:Bitmap = new Bitmap(bmd); addChild(bm);
setPixel()getPixel32()lock()unlock()
setPixel Задает одиночный пиксель объекта BitmapData.xintПоложение по оси x пикселей, значение которого меняется. yintПоложение по оси y пикселя, значение которого меняется. coloruintПолученный RGB-цвет пикселя. Задает одиночный пиксель объекта BitmapData. При выполнении этой операции сохраняется текущее значение альфа-канала пикселя изображения. Значение параметра RGB-цвета обрабатывается как неумноженное значение цвета.

Примечание. Для повышения производительности при многократном использовании метода setPixel() или setPixel32() вызовите метод lock() перед тем, как вызывать setPixel() или setPixel32(), а по завершении внесения изменений в пиксели, вызовите метод unlock(). Эта процедура не позволяет объектам, ссылающимся на данный экземпляр BitmapData, обновляться, пока не будет завершено изменение пикселей.

В следующем примере с помощью метода setPixel() рисуется красная линия в объекте BitmapData. import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC); for (var i:uint = 0; i < 80; i++) { var red:uint = 0xFF0000; bmd.setPixel(i, 40, red); } var bm:Bitmap = new Bitmap(bmd); addChild(bm);
getPixel()setPixel32()lock()unlock()
setPixels Преобразует массив байтов в прямоугольный участок пиксельных данных.Объект inputByteArray не содержит достаточно данных для заполнения области прямоугольника rect. Метод заполняет максимально возможное количество пикселей, а затем выдает исключение. EOFErrorflash.errors:EOFErrorОбъекты rect и inputByteArray имеют значение null. TypeErrorTypeErrorrectflash.geom:RectangleЗадает прямоугольную область объекта BitmapData. inputByteArrayflash.utils:ByteArrayОбъект ByteArray состоит из 32-разрядных неумноженных пиксельных значений, которые должны использоваться в прямоугольной области. Преобразует массив байтов в прямоугольный участок пиксельных данных. Для каждого пикселя вызывается метод ByteArray.readUnsignedInt() и записывается возвращаемое значение. Если массив байтов заканчивается, прежде чем будет заполнен весь прямоугольник, функция возвращает исключение. Массив байтов должен содержать 32-разрядные ARGB-значения пикселей. Перед считыванием пикселей и после него поиск по массиву байтов не выполняется. В следующем примере методы getPixels() и setPixels() используются для копирования пикселей из одного объекта BitmapData в другой. import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC); var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 100, 100); var bytes:ByteArray = bmd1.getPixels(rect); bytes.position = 0; bmd2.setPixels(rect, bytes); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110; flash.utils.ByteArray.readUnsignedInt()setVector Преобразует вектор в прямоугольную область пиксельных данных.Векторный массив недостаточно большой для чтения всех пиксельных данных. RangeErrorRangeErrorrectflash.geom:RectangleЗадает прямоугольную область объекта BitmapData. inputVectorВекторный объект состоит из 32-разрядных неумноженных пиксельных значений, используемых в прямоугольной области Преобразует вектор в прямоугольную область пиксельных данных. Для каждого пикселя элемент вектора считывается и записывается в пиксель BitmapData. Ожидается, что данные в векторе являются 32-разрядными ARGB-значениями пикселей. threshold Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселям, прошедшим проверку, новые цветовые значения.Объекты sourceBitmapData, sourceRect, destPoint или operation имеют значение null. TypeErrorTypeErrorСтрока operation не является допустимой операцией. ArgumentErrorArgumentErrorЧисло измененных пикселей. uintsourceBitmapDataflash.display:BitmapDataВводное растровое изображение для использования. Исходным изображением может быть другой объект BitmapData, или оно может ссылаться на текущий экземпляр BitmapData. sourceRectflash.geom:RectangleПрямоугольник, определяющий область исходного изображения, которое будет использоваться для ввода. destPointflash.geom:PointТочка в целевом изображении (текущем экземпляре BitmapData), соответствующая правому левому углу исходного прямоугольника. operationStringВ качестве строки String передается один из следующих операторов сравнения: "<", "<=", ">", ">=", "==", "! =" thresholduintЗначение, с которым сопоставляется каждый пиксель, чтобы узнать, больше он или равен порогу. coloruint0Значение цвета, которое получает пиксель при успешном прохождении пороговой проверки. Значение по умолчанию — 0x00000000. maskuint0xFFFFFFFFМаска используется с целью изоляции компонента цвета. copySourceBooleanfalseПри значении true пиксельные значения из исходного изображения копируются в целевое, если пиксель не проходит пороговый тест. При значении false исходное изображение не копируется, если пиксель не проходит пороговую проверку. Сопоставляет пиксельные значения в изображении с заданным пороговым значением и присваивает пикселям, прошедшим проверку, новые цветовые значения. С помощью метода threshold() можно изолировать и заменить диапазоны в изображении и выполнить другие логические операции над пикселями изображения.

Проверка метода threshold() имеет следующую логику:

  1. если ((pixelValue & mask) operation (threshold & mask)), то установите color для пикселя;
  2. В противном случае, если copySource == true, то пиксель получает соответствующее значение из sourceBitmap.

Параметр operation задает оператор сравнения, используемый при пороговой проверке. Например, используя «==» в качестве параметра operation можно изолировать конкретное цветовое значение в изображении. Или с помощью операции {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000} можно сделать все целевые пиксели полностью прозрачными, если альфа-значение пикселя исходного изображения меньше 0x7F. Этот прием можно использовать для анимированных переходов и других эффектов.

В следующем примере используется метод perlinNoise() для добавления сине-красного рисунка в объект BitmapData, а затем вызывается метод threshold(), чтобы скопировать эти пиксели из первого объекта BitmapData во второй, заменяя пиксели, в которых значение красного больше 0x80 (50%), пикселями с прозрачным красным цветом(0x20FF0000). import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.geom.Point; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var seed:int = int(Math.random() * int.MAX_VALUE); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); var bitmap1:Bitmap = new Bitmap(bmd1); addChild(bitmap1); var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var pt:Point = new Point(0, 0); var rect:Rectangle = new Rectangle(0, 0, 200, 200); var threshold:uint = 0x00800000; var color:uint = 0x20FF0000; var maskColor:uint = 0x00FF0000; bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true); var bitmap2:Bitmap = new Bitmap(bmd2); bitmap2.x = bitmap1.x + bitmap1.width + 10; addChild(bitmap2);
unlock Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData.changeRectflash.geom:RectanglenullИзмененная область объекта BitmapData. Если не задать значения для данного параметра, измененной считается вся область объекта BitmapData. Для использования этого параметра требуется проигрыватель Flash Player версии 9.0.115.0 или более поздней. Разблокирует изображение, чтобы любые объекты, ссылающиеся на объект BitmapData, например объекты Bitmap, обновлялись при изменении данного объекта BitmapData. Чтобы повысить производительность, используйте этот метод вместе с методом lock() до или после многочисленных вызовов метода setPixel() или setPixel32(). В следующем примере создается объект BitmapData на базе свойства bitmapData объекта Bitmap с именем picture. Затем вызывается метод lock() перед вызовом сложной пользовательской функции, complexTransformation(), изменяющей объект BitmapData. (Объект picture и функция complexTransformation() в этом примере не определяются.) Даже если функция complexTransformation() обновляет свойство bitmapData объекта picture, изменения не отображаются, пока код не вызовет метод unlock() объекта bitmapData. import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData; lock()setPixel()setPixel32()height Высота растрового изображения в пикселях.int Высота растрового изображения в пикселях. rect Прямоугольник, определяющий размер и расположение растрового изображения.flash.geom:Rectangle Прямоугольник, определяющий размер и расположение растрового изображения. Верхняя левая точка прямоугольника имеет значение 0; ширина и высота в пикселях равны размерам объекта BitmapData. transparent Определяет, поддерживает ли растровое изображение попиксельную прозрачность.Boolean Определяет, поддерживает ли растровое изображение попиксельную прозрачность. Это значение можно задавать, только когда при создании объекта BitmapData в конструкторе передается значениеtrue для параметра transparent. Затем, когда объект BitmapData создан, можно узнать, поддерживает ли он попиксельную прозрачность: для этого нужно проверить, имеет ли свойство transparent значение true. width Ширина растрового изображения в пикселях.int Ширина растрового изображения в пикселях.
JointStyle Класс JointStyle — это перечисление значений констант, задающих стили соединений при рисовании линий.Object Класс JointStyle — это перечисление значений констант, задающих стили соединений при рисовании линий. Эти константы предназначены для использования в качестве значений параметра joints метода flash.display.Graphics.lineStyle(). Этот метод использует три типа стыков: уголок, круглый и фаска, как показано в следующем примере.

В следующем примере используется класс JointStyleExample для иллюстрации применения разных стилей стыков к трем группам соединенных линий. Это можно сделать, выполнив следующие действия.
  1. Для каждой линии заданы следующие свойства.
    • Длина линии — 80 пикселей.
    • Цвет рамки — оранжевый.
    • Размер рамки — 30 пикселей.
    • Цвет подсветки — серый.
    • Размер подсветки — ноль пикселей.
    • Значение альфа-канала — 1 для получения сплошного цвета.
    • Хинтинг пикселей имеет значение false (не выполняется хинтинг до полных пикселей).
    • Режим масштабирования линий - обычный: масштабирование по ширине.
    • Концы рамки и длина уголков объявлены, но не заданы, поэтому используются значения по умолчанию.
  2. Конструктор класса создает три группы по два соединенных сегмента линии. Сегменты начинаются в точке с координатами x = 0, y = 0 и рисуются путем троекратного вызова метода doDrawCorner() с использованием трех стилей стыков (уголок, круглый и фаска). В каждом из трех вызовов doDrawCorner() используются описанные выше свойства и стили стыков для отрисовки двух соединенных сегментов линии и соответствующих подсветок.. С этой целью сначала создается новый объект Shape с именем child, затем используются методы класса Graphics для указания стиля линий и отрисовки линий и подсветок. Каждый экземпляр child добавляется в список отображения и тут же отрисовывается в рабочей области.
  3. Затем соединенные сегменты линии перерисовываются с использованием метода refreshLayout() на пикселях y = 80, начиная с пикселей x = 80, где сегменты линии разделены 25 пикселями.
package { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.JointStyle; import flash.display.LineScaleMode; import flash.display.Shape; import flash.display.Sprite; public class JointStyleExample extends Sprite { private var size:uint = 80; private var borderColor:uint = 0xFFCC00; private var borderSize:uint = 30; private var highlightColor:uint = 0x666666; private var highlightSize:uint = 0; private var gutter:uint = 25; private var borderAlpha:uint = 1; private var borderPixelHinting:Boolean = false; private var borderScaleMode:String = LineScaleMode.NORMAL; private var borderCaps:String; private var borderMiterLimit:uint; public function JointStyleExample() { doDrawCorner(JointStyle.MITER); doDrawCorner(JointStyle.ROUND); doDrawCorner(JointStyle.BEVEL); refreshLayout(); } private function doDrawCorner(jointStyle:String):void { var halfSize:uint = Math.round(size / 2); var child:Shape = new Shape(); child.graphics.lineStyle(borderSize, borderColor, borderAlpha, borderPixelHinting, borderScaleMode, borderCaps, jointStyle, borderMiterLimit); child.graphics.lineTo(0, 0); child.graphics.lineTo(size, 0); child.graphics.lineTo(halfSize, size); child.graphics.endFill(); child.graphics.moveTo(0, 0); child.graphics.lineStyle(highlightSize, highlightColor); child.graphics.lineTo(0, 0); child.graphics.lineTo(size, 0); child.graphics.lineTo(halfSize, size); addChild(child); } private function refreshLayout():void { var ln:uint = numChildren; var child:DisplayObject; var lastChild:DisplayObject = getChildAt(0); lastChild.x = size; lastChild.y = size; for (var i:uint = 1; i < ln; i++) { child = getChildAt(i); child.x = gutter + lastChild.x + lastChild.width; child.y = size; lastChild = child; } } } }
flash.display.Graphics.lineStyle()BEVEL Задает использование скошенных стыков сегментов параметром joints метода flash.display.Graphics.lineStyle().bevelString Определяет использование скошенных стыков сегментов в параметре joints метода flash.display.Graphics.lineStyle(). MITER Задает использование параметром joints метода flash.display.Graphics.lineStyle() угловых стыков сегментов.miterString Определяет использование угловых стыков сегментов в параметре joints метода flash.display.Graphics.lineStyle(). ROUND Задает использование круглых стыков сегментов параметром joints метода flash.display.Graphics.lineStyle().roundString Определяет использование круглых стыков сегментов в параметре joints метода flash.display.Graphics.lineStyle().
AVM1Movie AVM1Movie — это простой класс, представляющий фрагменты роликов AVM1, которые используют ActionScript 1.0 или 2.0.flash.display:DisplayObject AVM1Movie — это простой класс, представляющий фрагменты роликов AVM1, которые используют ActionScript 1.0 или 2.0. (AVM1 представляет собой виртуальную машину ActionScript, используемую для выполнения ActionScript 1.0 и 2.0. AVM2 представляет собой виртуальную машину ActionScript, используемую для выполнения ActionScript 3.0 При использовании Flash Player 8 или более ранней версии SWF-файл загружается объектом Loader, и создается объект AVM1Movie. Объект AVM1Movie может использовать методы и свойства, унаследованные от класса DisplayObject (например, x, y, width и т.д.). Однако наследование между объектами AVM1Movie и AVM2 (например, вызов методов или использование параметров) не поддерживается.

Существует ряд ограничений для SWF-файлов AVM1, загруженных SWF-файлами AVM2.

  • Загруженный объект AVM1Movie выступает в роли псевдокорневого объекта для SWF-файла AVM1 и всех загруженных им SWF-файлов AVM1 SWF (как если бы свойство lockroot в ActionScript 1.0 имело значение true). Ролик AVM1 всегда находится на верхнем уровне выполнения кода ActionScript 1.0 или 2.0 в его дочерних объектах. Свойством _root для загруженных дочерних элементов всегда является SWF-файл AVM1, если в загруженном SWF-файле AVM1 не задано свойство lockroot.
  • Содержимое AVM1 не может выполнять поуровневую загрузку файлов. Например, с его помощью невозможна загрузка файлов вызовом метода loadMovieNum("url", levelNum).
  • SWF-файл AVM1, загруженный SWF-файлом AVM2, не может загружать другой SWF-файл в this. Он не может загружать через себя другой SWF-файл. Однако можно загрузить в this дочерние объекты Sprite, MovieClip или другие SWF-файлы AVM1, загруженные данным SWF-файлом.
DisplayObjectЗагрузчик
ShaderInput Экземпляр ShaderInput представляет единственное изображение ввода для ядра затенения.Object Экземпляр ShaderInput представляет единственное изображение ввода для ядра затенения. При выполнении ядра можно заставить его работать с нулем, одним или несколькими исходными изображениями, используемыми при выполнении ядра. В экземпляре ShaderInput заложен механизм, позволяющий указывать изображение ввода для использования при выполнении операции затенения. Чтобы задать значение ввода, создайте экземпляр BitmapData, ByteArray или Vector.<Number>, содержащий данные изображения, и назначьте его свойству input.

Доступ к экземпляру ShaderInput, представляющему изображение ввода экземпляра Shader, осуществляется в качестве свойства data экземпляра Shader. В коде затенения имя свойства ShaderInput совпадает с именем ввода. Например, если затенение задает ввод с именем src, то экземпляр ShaderInput, представляющий ввод src, будет доступен в качестве свойства src. Пример:

myShader.data.src.image = new BitmapData(50, 50, true, 0xFF990000);

В некоторых случаях с использованием экземпляра Shader указывать изображение ввода не требуется, так как оно назначается операцией автоматически. Указывать ввод требуется только тогда, когда затенение используется для следующего:

  • Заливка затенением
  • ShaderFilter используется только для вторых или дополнительных вводов, при условии что затенение настроено на использование нескольких вводов. (Объект, к которому применяется фильтр, автоматически используется в качестве первичного ввода.)
  • Режим наложения затенения используется только для третьих или дополнительных вводов, при условии что затенение настроено на использование более двух вводов. (Накладываемые объекты автоматически используются в качестве первого и второго ввода.)
  • Выполнение ShaderJob в фоне

Если операция затенения запускается с использованием экземпляра ShaderJob для обработки массива ByteArray, данные в котором расположены линейно, настройте параметры экземпляра ShaderInput следующим образом: установите для height значение 1, для width — значение числа 32-разрядных значений с плавающей запятой в массиве ByteArray. В этом случае значение ввода затенения должно принадлежать типу данных image1.

Обычно, в коде разработчика создание экземпляра ShaderInput не заложено. При создании экземпляра Shader экземпляр ShaderInput создается автоматически для каждого ввода затенения.

flash.display.ShaderDataflash.display.Shader.dataflash.display.ShaderJobShaderInput Создает экземпляр ShaderInput. Создает экземпляр ShaderInput. Обычно, в коде разработчика прямой вызов конструктора ShaderInput не производится. При создании экземпляра Shader экземпляр ShaderInput создается автоматически для каждого ввода затенения. channels Число каналов во вводе затенения.int Число каналов во вводе затенения. Данное свойство принимается во внимание только если данными ввода являются экземпляр ByteArray или Vector.<Number>. height Высота ввода затенения.int Высота ввода затенения. Данное свойство используется только если данными ввода является экземпляр ByteArray или Vector.<Number>. Если вводом является экземпляр BitmapData, высота определяется автоматически. index Отсчитываемое от нуля значение индекса для ввода затенения отражает порядок определений вводов в затенении.int Отсчитываемое от нуля значение индекса для ввода затенения отражает порядок определений вводов в затенении. input Данные ввода, используемые при выполнении операции затенения.Object Данные ввода, используемые при выполнении операции затенения. Это свойство может быть экземпляром BitmapData, ByteArray или Vector.<Number>.

При присвоении значения ByteArray свойству input необходимо выполнить следующие условия:

  • Необходимо настроить свойства height и width.
  • Массив байтов должен состоять только из 32-разрядных значений с плавающей запятой. Эти значения должны быть записаны с помощью метода ByteArray.writeFloat().
  • Общая длина ByteArray в байтах должна равняться произведению width х height х channels х 4.
  • Свойство endian байтов массива должно быть Endian.LITTLE_ENDIAN.

Если экземпляр Vector.<Number> присваивается свойству input, длина Vector должна равняться произведению width х height х channels.

width Ширина ввода затенения.int Ширина ввода затенения. Данное свойство используется только если данными ввода является экземпляр ByteArray или Vector.<Number>. Если вводом является экземпляр BitmapData, ширина определяется автоматически.
ColorCorrection Класс ColorCorrection передает значения для свойства flash.display.Stage.colorCorrection.Object Класс ColorCorrection передает значения для свойства flash.display.Stage.colorCorrection. flash.display.Stage.colorCorrectionDEFAULT Использование цветокоррекции хоста по умолчанию.defaultString Использование цветокоррекции хоста по умолчанию. Для веб-проигрывателя хостом обычно является обозреватель, и в приложении Flash Player предпринимается попытка использования цветокоррекции, соответствующей цветокоррекции веб-страницы, на которой содержится SWF-файл. OFF Отключение цветокоррекции вне зависимости от среды хоста проигрывателя.offString Отключение цветокоррекции вне зависимости от среды хоста проигрывателя. Этот параметр позволяет повысить производительность. ON По возможности включение цветокоррекции вне зависимости от среды хоста проигрывателя.onString По возможности включение цветокоррекции вне зависимости от среды хоста проигрывателя. Shader Экземпляр Shader представляет ядро затенения Pixel Bender в ActionScript.Object Экземпляр Shader представляет ядро затенения Pixel Bender в ActionScript. Чтобы использовать затенение в приложении, необходимо создать экземпляр Shader. Затем можно использовать этот экземпляр Shader соответствующим образом в зависимости от желаемого эффекта. Например, чтобы использовать затенение в качестве фильтра, необходимо назначить экземпляр Shader свойству shader объекта ShaderFilter.

Затенение задает функцию, которая по очереди обрабатывает каждый пиксель изображения. В результате каждого вызова функции цвет пикселя в конкретном месте изображения меняется. В затенении может быть указано более одного изображения ввода, содержимое которого или которых может быть использовано для определения вывода функции. В затенении также может быть указан один или несколько параметров, представляющих значения ввода, которые могут быть использованы в расчетах вывода функции. При однократном выполнении операции затенения значения ввода и параметра остаются неизменными. Изменяются только координаты пикселя, цвет которого является результатом вычисления функции. Повышение производительности достигается параллельной работой нескольких функций затенения.

Байт-код затенения можно загрузить в среду выполнения с помощью экземпляра URLLoader. В следующем примере демонстрируется загрузка файла байт-кода затенения в среду выполнения и его привязка к экземпляру Shader.

var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, onLoadComplete); loader.load(new URLRequest("myShader.pbj")); var shader:Shader; function onLoadComplete(event:Event):void { // Create a new shader and set the loaded data as its bytecode shader = new Shader(); shader.byteCode = loader.data; // You can also pass the bytecode to the Shader() constructor like this: // shader = new Shader(loader.data); // do something with the shader }

Вы можете непосредственно встроить затенение в ролик SWF на этапе компиляции. Для этого используйте тег метаданных [Embed]. Тег метаданных [Embed] доступен только в том случае, если при компиляции SWF используется Flex SDK. В теге [Embed] параметр source указывает на файл затенения, а параметр mimeType является "application/octet-stream". Пример:

[Embed(source="myShader.pbj", mimeType="application/octet-stream)] var MyShaderClass:Class; // ... // create a new shader and set the embedded shader as its bytecode var shaderShader = new Shader(); shader.byteCode = new MyShaderClass(); // You can also pass the bytecode to the Shader() constructor like this: // var shader:Shader = new Shader(new MyShaderClass()); // do something with the shader

В любом из двух случаев происходит привязка необработанного затенения (свойства URLLoader.data или экземпляра класса данных [Embed]) к экземпляру Shader. По аналогии с предыдущим примером это можно проделать двумя способами. Можно передать байт-код затенения в качестве аргумента конструктору Shader(). Либо можно задать его в качестве свойства byteCode экземпляра Shader.

После создания экземпляра Shader его можно использовать по-разному:

  • Заливка затенением: вывод затенения используется в качестве заливки при рисовании содержимого с помощью соответствующего API. Следует передать экземпляр Shader в качестве аргумента метода Graphics.beginShaderFill().
  • Фильтр затенением: вывод затенения используется в качестве графического фильтра, применяемого к экранному объекту. Следует назначить экземпляр Shader свойству shader экземпляра ShaderFilter.
  • Режим наложения: вывод затенения используется визуализируется в качестве наложения двух пересекающихся экранных объектов. Следует назначить экземпляр Shader свойству blendShader верхнего из двух пересекающихся экранных объектов.
  • Фоновая обработка затенения: выполнение операции затенения происходит в фоновом режиме, исключая зависания программного окна. По окончании операции отправляется соответствующее событие. Следует назначить экземпляр Shader свойству shader экземпляра ShaderJob.

Заливки, фильтры и переходы, использующие затенение, не поддерживаются при визуализации с использованием графического процессора.

Поддержка в мобильных браузерах: эта функция не поддерживается в мобильных браузерах.

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не на всех мобильных устройствах. Он не поддерживается в среде AIR для телевизионных устройств. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

В следующем примере происходит загрузка файла байт-кода затенения в среду выполнения и создание экземпляра Shader, связанного с ним.

Обратите внимание, что в этом примере мы исходим из того, что существует файл байт-кодов с именем donothing.pbj, хранящийся в каталоге, который является выходным для приложения. Исходный код Pixel Bender для затенения DoNothing доступен в примере класса ShaderData.

package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class LoadedShaderExample extends Sprite { private var loader:URLLoader; public function LoadedShaderExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; // do something with the Shader instance } } }
В следующем примере происходит внедрение файла байт-кода в SWF при компиляции и его привязка к экземпляру Shader.

Примечание. В данном примере подразумевается наличие файла байт-кода затенения с именем donothing.pbj в каталоге исходного кода, а также использование Flex SDK при компиляции SWF-файла. Исходный код Pixel Bender для затенения DoNothing доступен в примере класса ShaderData.

package { import flash.display.Shader; import flash.display.Sprite; public class EmbeddedShaderExample extends Sprite { [Embed(source="donothing.pbj", mimeType="application/octet-stream")] private static var DoNothingShader:Class; public function EmbeddedShaderExample() { var shader:Shader = new Shader(); shader.byteCode = new DoNothingShader(); // do something with the Shader instance } } }
flash.display.DisplayObject.blendShaderflash.display.Graphics.beginShaderFill()flash.display.ShaderJobflash.filters.ShaderFilterflash.net.URLLoaderShader Создает новый экземпляр Shader.codeflash.utils:ByteArraynullНеобработанный байт-код затенения, привязываемый к экземпляру Shader. Создает новый экземпляр Shader. data Предоставляет доступ к параметрам, изображениям ввода и метаданным данного экземпляра Shader.flash.display:ShaderData Предоставляет доступ к параметрам, изображениям ввода и метаданным данного экземпляра Shader. При создании экземпляра Shader все объекты ShaderParameter, представляющие параметры затенения, объекты ShaderInput, представляющие изображения ввода и прочие значения, представляющие метаданные затенения, динамически добавляются в качестве свойств объекта data. Эти свойства можно использовать для анализа затенения, а также для настройки параметров и значений ввода.

Дополнительные сведения по получению доступа к динамическим свойствам объекта data и их изменению находятся в описании класса ShaderData.

flash.display.ShaderDataflash.display.ShaderInputflash.display.ShaderParameter
precisionHint Точность вычисления математических операций, выполняемых затенением.String Точность вычисления математических операций, выполняемых затенением.

Набор возможных значений свойства precisionHint определяется константами класса ShaderPrecision.

Значение по умолчанию — ShaderPrecision.FULL. Если установить для точности значение ShaderPrecision.FAST, то выполнение математических вычислений ускорится в ущерб точности.

В полном режиме точности (ShaderPrecision.FULL) все математические операции выполняются с использованием полного 32-разрядного стандарта IEEE, что обеспечивает согласованное поведение на всех платформах. Вычисление некоторых математических функций в этом режиме, например тригонометрических и экспонентных, может выполняться очень медленно.

Быстрый режим точности (ShaderPrecision.FAST) предусмотрен для максимального повышения производительности, но он дает несогласованные результаты для разных платформ и индивидуальных конфигураций ЦП. Во многих случаях этого уровня точности достаточно для создания графических эффектов без видимых искажений.

Выбор режима точности затенения влияет на следующие операции затенения. При использовании процессора Intel с набором инструкций SSE данные операции выполняются быстрее:

  • sin(x)
  • cos(x)
  • tan(x)
  • asin(x)
  • acos(x)
  • atan(x)
  • atan(x, y)
  • exp(x)
  • exp2(x)
  • log(x)
  • log2(x)
  • pow(x, y)
  • reciprocal(x)
  • sqrt(x)
flash.display.ShaderPrecision
byteCode Необработанный байт-код затенения для данного экземпляра Shader.flash.utils:ByteArray Необработанный байт-код затенения для данного экземпляра Shader.
LineScaleMode Класс LineScaleMode передает значения для параметра scaleMode метода Graphics.lineStyle().Object Класс LineScaleMode передает значения для параметра scaleMode метода Graphics.lineStyle(). flash.display.Graphics.lineStyle()HORIZONTAL При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии масштабируется только по вертикали.horizontalString При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии масштабируется только по вертикали. Например, рассмотрим следующие окружности, нарисованные линией толщиной в 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.VERTICAL. Масштаб окружности слева изменен только по вертикали, а окружности справа — и по вертикали и по горизонтали.

NONE При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии не масштабируется.noneString При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии не масштабируется. NORMAL При использовании этого параметра в качестве параметра scaleMode в методе lineStyle() толщина линии всегда будет масштабироваться при масштабировании объекта (по умолчанию).normalString При использовании этого параметра в качестве параметра scaleMode в методе lineStyle() толщина линии всегда будет масштабироваться при масштабировании объекта (по умолчанию). VERTICAL При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии масштабируется только по горизонтали.verticalString При использовании этого параметра в качестве параметра scaleMode метода lineStyle() толщина линии масштабируется только по горизонтали. Например, рассмотрим следующие окружности, нарисованные линией толщиной 1 пиксель, для каждой из которых параметру scaleMode задано значение LineScaleMode.HORIZONTAL. Масштаб окружности слева изменен только по горизонтали, а окружности справа — и по вертикали и по горизонтали.

IGraphicsData Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров в методах flash.display.Graphics, включая заливки, линии и контуры. Данный интерфейс используется для определения объектов, которые можно использовать в виде параметров в методах flash.display.Graphics, включая заливки, линии и контуры. Используйте классы implementor данного интерфейса для создания данных свойства drawing и управления ими, а также для повторного использования этих данных для других экземпляров. Затем используйте методы класса Graphics для визуализации графических объектов. flash.display.Graphics.drawGraphicsData()MovieClip Классы, которым наследует класс MovieClip: Sprite, DisplayObjectContainer, InteractiveObject, DisplayObject и EventDispatcher.Базовые экранный объект для объектов, создаваемых ActionScript. flash.display:Sprite Классы, которым наследует класс MovieClip: Sprite, DisplayObjectContainer, InteractiveObject, DisplayObject и EventDispatcher.

В отличие от объекта Sprite, объект MovieClip имеет временную шкалу.

> Во Flash Professional методы для класса MovieClip обеспечивают те же функции, что и действия, нацеленные на фрагменты роликов. Некоторые дополнительные методы не имеют эквивалентных действий в наборе инструментов «Действия» на панели «Действия» в инструменте разработки Flash.

Дочерние экземпляры, помещенные в рабочую область в Flash Professional, нельзя вызвать с помощью кода из конструктора родительского экземпляра, так как они еще не созданы на момент выполнения кода. Перед обращением к дочернему элементу родительский должен либо создать дочерний экземпляр с помощью кода, либо отложить вызов, пока функция обратного вызова, прослушивающая события дочернего элемента, не отправит его события Event.ADDED_TO_STAGE.

Если изменить следующие свойства объекта MovieClip, содержащего анимацию движения, точка воспроизведения в этом объекте MovieClip останавливается: alpha, blendMode, filters, height, opaqueBackground, rotation, scaleX, scaleY, scale9Grid, scrollRect, transform, visible, width, x или y. Однако он не останавливает точку воспроизведения в дочерних элементах объектов MovieClip данного объекта MovieClip.

Примечание. Flash Lite 4 поддерживает свойство MovieClip.opaqueBackground, только если определено значение для FEATURE_BITMAPCACHE. В стандартной конфигурации Flash Lite 4 значение FEATURE_BITMAPCACHE не определено. Чтобы сделать свойство MovieClip.opaqueBackground доступным для подходящего устройства, в проекте необходимо определить значение для FEATURE_BITMAPCACHE.

Ниже на примере класса MovieClipExample иллюстрируется отслеживание различных свойств объекта MovieClip. Это можно сделать, выполнив следующие действия.
  1. Функция конструктора определяет текстовое поле, используемое для отображения значений свойств объекта MovieClipExample (расширяющего MovieClip).
  2. Возвращаемое значение метода getPropertiesString() используется в качестве текстового поля outputText. Метод getPropertiesString() возвращает строку, заполненную значениями следующих свойств фрагмента ролика: currentFrame, currentLabel, currentScene, framesLoaded, totalFrames и trackAsMenu.
  3. Две строки кода в функции конструктора настраивают свойства width и height текстового поля outputText.
  4. Последняя строка функции конструктора добавляет текстовое поле outputText в список отображения.
package { import flash.display.MovieClip; import flash.text.TextField; public class MovieClipExample extends MovieClip { public function MovieClipExample() { var outputText:TextField = new TextField(); outputText.text = getPropertiesString(); outputText.width = stage.stageWidth; outputText.height = outputText.textHeight; addChild(outputText); } private function getPropertiesString():String { var str:String = "" + "currentFrame: " + currentFrame + "\n" + "currentLabel: " + currentLabel + "\n" + "currentScene: " + currentScene + "\n" + "framesLoaded: " + framesLoaded + "\n" + "totalFrames: " + totalFrames + "\n" + "trackAsMenu: " + trackAsMenu + "\n"; return str; } } }
MovieClip Создает новый экземпляр MovieClip. Создает новый экземпляр MovieClip. Создав MovieClip, вызовите метод addChild() или addChildAt() контейнера экранных объектов, находящегося в рабочей области. gotoAndPlay Запускает воспроизведение SWF-файла с заданного кадра.frameObjectЧисло, указывающее номер кадра, или строка, представляющая ярлык кадра, на который отправлена точка воспроизведения. Если указать номер, он будет определяться относительно заданного монтажного кадра. Если не указать монтажный кадр, для определения глобального номера воспроизводимого кадра используется текущая сцена. Если указать монтажный кадр, точка воспроизведения перескакивает к нужному кадру заданного монтажного кадра. sceneStringnullИмя воспроизводимого монтажного кадра. Этот параметр является необязательным. Запускает воспроизведение SWF-файла с заданного кадра. Это происходит после того, как завершается выполнения всех оставшихся действий. Чтобы указать монтажный кадр и кадр, задайте значение для параметра scene. В следующем коде используется метод gotoAndPlay(), чтобы переместить точку воспроизведения фрагмента ролика mc1 на пять кадров вперед от текущего местоположения. mc1.gotoAndPlay(mc1.currentFrame + 5); В следующем коде метод gotoAndPlay() используется для перемещения точки воспроизведения фрагмента ролика mc1 к кадру с подписью "intro" в сцене "Scene 12". mc1.gotoAndPlay("intro", "Scene 12"); gotoAndStop Переводит точку воспроизведения в заданный кадр фрагмента ролика и останавливает ее в этом кадре.Если заданные scene или frame отсутствуют в данном фрагменте ролика. ArgumentErrorArgumentErrorframeObjectЧисло, указывающее номер кадра, или строка, представляющая ярлык кадра, на который отправлена точка воспроизведения. Если указать номер, он будет определяться относительно заданного монтажного кадра. Если не указать монтажный кадр, для определения глобального номера кадра, с которого нужно начать и на котором нужно остановить воспроизведение, используется текущий монтажный кадр. Если указать монтажный кадр, точка воспроизведения переходит к нужному кадру заданного монтажного кадра и останавливается. sceneStringnullИмя монтажного кадра. Этот параметр является необязательным. Переводит точку воспроизведения в заданный кадр фрагмента ролика и останавливает ее в этом кадре. Это происходит после того, как завершается выполнения всех оставшихся действий. Если требуется указать монтажный кадр вместе с кадром, задайте параметр scene. В следующем коде используется метод gotoAndStop() и свойство currentFrame, чтобы переместить точку воспроизведения фрагмента ролика mc1 на пять кадров вперед от текущего местоположения и остановить ее. mc1.gotoAndStop(mc1.currentFrame + 5); В следующем коде метод gotoAndStop() используется для перемещения точки воспроизведения фрагмента ролика mc1 к кадру с меткой finale в монтажном кадре Scene 12 и ее остановки. mc1.gotoAndStop("finale", "Scene 12"); nextFrame Переводит точку воспроизведения в следующий кадр и останавливает ее. Переводит точку воспроизведения в следующий кадр и останавливает ее. Это происходит после того, как завершается выполнения всех оставшихся действий. В следующем примере временную шкалу контролируют два объекта SimpleButton. Кнопка prev перемещает точку воспроизведения к предыдущему кадру, а кнопкаnextBtn перемещает точку воспроизведения к следующему кадру. import flash.events.MouseEvent; mc1.stop(); prevBtn.addEventListener(MouseEvent.CLICK, goBack); nextBtn.addEventListener(MouseEvent.CLICK, goForward); function goBack(event:MouseEvent):void { mc1.prevFrame(); } function goForward(event:MouseEvent):void { mc1.nextFrame(); } prevFrame()nextScene Перемещает точку воспроизведения в следующий монтажный кадр экземпляра MovieClip. Перемещает точку воспроизведения в следующий монтажный кадр экземпляра MovieClip. Это происходит после того, как завершается выполнения всех оставшихся действий. В следующем примере временную шкалу контролируют два объекта SimpleButton. Кнопка prevBtn перемещает точку воспроизведения к предыдущему монтажному кадру, а кнопкаnextBtn перемещает точку воспроизведения к следующему монтажному кадру. import flash.events.MouseEvent; mc1.stop(); prevBtn.addEventListener(MouseEvent.CLICK, goBack); nextBtn.addEventListener(MouseEvent.CLICK, goForward); function goBack(event:MouseEvent):void { mc1.prevScene(); } function goForward(event:MouseEvent):void { mc1.nextScene(); } play Перемещает точку воспроизведения по временной шкале фрагмента ролика. Перемещает точку воспроизведения по временной шкале фрагмента ролика. В следующем примере метод stop() для остановки фрагмента ролика с именем mc1 и возобновления воспроизведения, когда пользователь щелкает текстовое поле с именем continueText. import flash.text.TextField; import flash.events.MouseEvent; var continueText:TextField = new TextField(); continueText.text = "Play movie..."; addChild(continueText); mc1.stop(); continueText.addEventListener(MouseEvent.CLICK, resumeMovie); function resumeMovie(event:MouseEvent):void { mc1.play(); } gotoAndPlay()prevFrame Переводит точку воспроизведения в предыдущий кадр и останавливает ее. Переводит точку воспроизведения в предыдущий кадр и останавливает ее. Это происходит после того, как завершается выполнения всех оставшихся действий. В следующем примере временную шкалу контролируют два объекта SimpleButton. Кнопка prev перемещает точку воспроизведения к предыдущему кадру, а кнопкаnextBtn перемещает точку воспроизведения к следующему кадру. import flash.events.MouseEvent; mc1.stop(); prevBtn.addEventListener(MouseEvent.CLICK, goBack); nextBtn.addEventListener(MouseEvent.CLICK, goForward); function goBack(event:MouseEvent):void { mc1.prevFrame(); } function goForward(event:MouseEvent):void { mc1.nextFrame(); } prevScene Перемещает точку воспроизведения в предыдущий монтажный кадр экземпляра MovieClip. Перемещает точку воспроизведения в предыдущий монтажный кадр экземпляра MovieClip. Это происходит после того, как завершается выполнения всех оставшихся действий. В следующем примере временную шкалу контролируют два объекта SimpleButton. Кнопка prevBtn перемещает точку воспроизведения к предыдущему монтажному кадру, а кнопкаnextBtn перемещает точку воспроизведения к следующему монтажному кадру. import flash.events.MouseEvent; mc1.stop(); prevBtn.addEventListener(MouseEvent.CLICK, goBack); nextBtn.addEventListener(MouseEvent.CLICK, goForward); function goBack(event:MouseEvent):void { mc1.prevScene(); } function goForward(event:MouseEvent):void { mc1.nextScene(); } stop Останавливает точку воспроизведения во фрагменте ролика. Останавливает точку воспроизведения во фрагменте ролика. currentFrameLabel Подпись текущего кадра на временной шкале экземпляра MovieClip.String Подпись текущего кадра на временной шкале экземпляра MovieClip. Если текущий кадр не имеет подписи, значение свойства currentLabel равно null. currentFrame Определяет номер кадра, в котором точка воспроизведения находится на временной шкале экземпляра MovieClip.int Определяет номер кадра, в котором точка воспроизведения находится на временной шкале экземпляра MovieClip. Если фрагмент ролика содержит несколько монтажных кадров, это значение является номером кадра в текущем монтажном кадре. В следующем коде используется метод gotoAndStop() и свойство currentFrame, чтобы переместить точку воспроизведения фрагмента ролика mc1 на пять кадров вперед от текущего местоположения и остановить ее. mc1.gotoAndStop(mc1.currentFrame + 5); currentLabel Текущая подпись, в которой точка воспроизведения расположена на временной шкале экземпляра MovieClip.String Текущая подпись, в которой точка воспроизведения расположена на временной шкале экземпляра MovieClip. Если у текущего кадра нет подписи, для currentLabel используется имя предыдущего кадра с подписью. Если текущий и предыдущий кадры не имеют подписи, currentLabel возвращает значение null. На примере следующего кода показано использование свойства currentLabel объекта MovieClip с именем mc1. trace(mc1.currentLabel); currentLabels Возвращает массив объектов FrameLabel для текущего монтажного кадра.Array Возвращает массив объектов FrameLabel для текущего монтажного кадра. Если экземпляр MovieClip не использует монтажных кадров, массив включает все метки кадров из всего экземпляра MovieClip. На примере следующего кода показано использование свойства currentLabel объекта MovieClip с именем mc1. import flash.display.FrameLabel; var labels:Array = mc1.currentLabels; for (var i:uint = 0; i < labels.length; i++) { var label:FrameLabel = labels[i]; trace("frame " + label.frame + ": " + label.name); } flash.display.FrameLabelcurrentScene Текущий монтажный кадр, в котором точка воспроизведения расположена на временной шкале экземпляра MovieClip.flash.display:Scene Текущий монтажный кадр, в котором точка воспроизведения расположена на временной шкале экземпляра MovieClip. На примере следующего кода показано использование свойства currentScene объекта MovieClip с именем mc1. import flash.display.Scene; var scene:Scene = mc1.currentScene; trace(scene.name + ": " + scene.numFrames + " frames"); Сценаenabled Логическое значение, определяющее включение фрагмента ролика.Boolean Логическое значение, определяющее включение фрагмента ролика. По умолчанию свойство enabled имеет значение true. Если для enabled задано значение false, отключаются карды фрагмента ролика с подписями Over, Down и Up. Фрагмент ролика продолжает получать события (например, mouseDown, mouseUp, keyDown и keyUp).

Свойство enabled управляет только кнопочными свойствами фрагмента ролика. Свойство enabled можно изменить в любое время; обновленный фрагмент ролика немедленно включается или выключается. Если enabled имеет значение false, объект не включается в автоматическую последовательность перехода с помощью клавиши Tab.

На примере следующего кода показано использование свойства enabled для отключения кнопочных свойств объекта MovieClip с именем mc1. mc1.enabled = false;
framesLoaded Число кадров, загружаемых из потокового SWF-файла.int Число кадров, загружаемых из потокового SWF-файла. Можно использовать свойство framesLoaded, чтобы определить, будет ли содержимое конкретного кадра и всех предшествующих загружаться и открываться локально в обозревателе. Также его можно использовать для отслеживания загрузки больших SWF-файлов. Например, можно показывать пользователям сообщение о том, что SWF-файл загружается, до того момента, пока не закончит загружаться заданный кадр файла.

Если фрагмент ролика содержит несколько монтажных кадров, свойство framesLoaded возвращает количество кадров, загруженных для всех монтажных кадров фрагмента ролика.

На примере следующего кода показано, как использовать свойства framesLoaded и totalFrames, чтобы определить, полностью ли загружен объект MovieClip с именем mc1. if (mc1.framesLoaded == mc1.totalFrames) { trace("OK."); }
Класс Loader
scenes Массив объектов Scene, каждый из которых содержит имя, число кадров и подписи кадров для одного из монтажных кадров в экземпляре MovieClip.Array Массив объектов Scene, каждый из которых содержит имя, число кадров и подписи кадров для одного из монтажных кадров в экземпляре MovieClip. На примере следующего кода показано использование свойства scenes объекта MovieClip с именем mc1. import flash.display.Scene; for (var i:uint = 0; i < mc1.scenes.length; i++) { var scene:Scene = mc1.scenes[i]; trace("scene " + scene.name + ": " + scene.numFrames + " frames"); } ScenetotalFrames Общее число кадров в экземпляре MovieClip.int Общее число кадров в экземпляре MovieClip.

Если фрагмент ролика содержит несколько кадров, свойство totalFrames возвращает общее количество кадров во всех монтажных кадрах фрагмента ролика.

На примере следующего кода показано использование свойства totalFrames объекта MovieClip с именем mc1. trace(mc1.totalFrames);
trackAsMenu Указывает, могут ли другие экранные объекты, представленные экземплярами SimpleButton или MovieClip, получать события отпускания мыши или другие события отпускания пользовательского ввода.Boolean Указывает, могут ли другие экранные объекты, представленные экземплярами SimpleButton или MovieClip, получать события отпускания мыши или другие события отпускания пользовательского ввода. Свойство trackAsMenu позволяет создавать меню. Свойство trackAsMenu можно задать для любого объекта SimpleButton или MovieClip. По умолчанию свойство trackAsMenu имеет значение false.

Свойство trackAsMenu можно изменить в любой момент; модифицированный фрагмент ролика немедленно начинает использовать новое поведение.

На примере следующего кода показано, как использовать свойство trackAsMenu, чтобы включить события отпускания кнопки мыши для MovieClip с именем mc1. mc1.trackAsMenu = true;
SWFVersion Класс SWFVersion — это перечисление значений констант, соответствующих версии формата загруженного SWF-файла.Object Класс SWFVersion — это перечисление значений констант, соответствующих версии формата загруженного SWF-файла. Константы класса SWFVersion предоставляются для использования при проверке свойства swfVersion объекта flash.display.LoaderInfo. flash.display.LoaderInfo.swfVersionFLASH10 Формат SWF-файла версии 10.0.10uint Формат SWF-файла версии 10.0. FLASH11 Формат SWF-файла версии 11.0.11uint Формат SWF-файла версии 11.0. FLASH1 Формат SWF-файла версии 1.0.1uint Формат SWF-файла версии 1.0. FLASH2 Формат SWF-файла версии 2.0.2uint Формат SWF-файла версии 2.0. FLASH3 Формат SWF-файла версии 3.0.3uint Формат SWF-файла версии 3.0. FLASH4 Формат SWF-файла версии 4.0.4uint Формат SWF-файла версии 4.0. FLASH5 Формат SWF-файла версии 5.0.5uint Формат SWF-файла версии 5.0. FLASH6 Формат SWF-файла версии 6.0.6uint Формат SWF-файла версии 6.0. FLASH7 Формат SWF-файла версии 7.0.7uint Формат SWF-файла версии 7.0. FLASH8 Формат SWF-файла версии 8.0.8uint Формат SWF-файла версии 8.0. FLASH9 Формат SWF-файла версии 9.0.9uint Формат SWF-файла версии 9.0. NativeWindowResize Класс NativeWindowResize определяет константы для различных значений параметра edgeOrCorner метода NativeWindow startResize().Определяет константы, используемые при изменении размеров окна в ответ на действие пользователя. Object Класс NativeWindowResize определяет константы для различных значений параметра edgeOrCorner метода NativeWindow startResize().

Определяется константа для присвоения имени каждой стороне и углу окна.

flash.display.NativeWindow.startResize()BOTTOM_LEFT Нижний левый угол окна.BLString Нижний левый угол окна. BOTTOM_RIGHT Нижний правый угол окна.BRString Нижний правый угол окна. BOTTOM Нижняя сторона окна.BString Нижняя сторона окна. LEFT Левая сторона окна.LString Левая сторона окна. NONE Используется для изменения размеров с помощью клавиатуры в системах, поддерживающих изменение размера с клавиатуры (например, Windows).String Используется для изменения размеров с помощью клавиатуры в системах, поддерживающих изменение размера с клавиатуры (например, Windows). В ОС Windows это подобно выбору команды «Размер» в меню, которое вызывается нажатием клавиш Alt+Space. Когда вызывается метод NativeWindow.startResize(NativeWindowResize.NONE), пользователь Windows может изменить размер окна с помощью клавиш со стрелками. RIGHT Правая сторона окна.RString Правая сторона окна. TOP_LEFT Верхний левый угол окна.TLString Верхний левый угол окна. TOP_RIGHT Верхний правый угол окна.TRString Верхний правый угол окна. TOP Верхняя сторона окна.TString Верхняя сторона окна.
BitmapDataChannel Класс BitmapDataChannel — это перечисление значений констант, обозначающих применяемый канал: красный, синий, зеленый или альфа-прозрачность.Object Класс BitmapDataChannel — это перечисление значений констант, обозначающих применяемый канал: красный, синий, зеленый или альфа-прозрачность.

При вызове некоторых методов можно использовать побитовый оператор ИЛИ (|), чтобы комбинировать константы BitmapDataChannel для индикации многоцветных каналов.

Константы BitmapDataChannel передаются для использования в качестве значений в:

  • параметрах sourceChannel и destChannel метода flash.display.BitmapData.copyChannel();
  • параметре channelOptions метода flash.display.BitmapData.noise();
  • в свойствах flash.filters.DisplacementMapFilter.componentX и flash.filters.DisplacementMapFilter.componentY.
flash.display.BitmapData.copyChannel()flash.display.BitmapData.noise()flash.filters.DisplacementMapFilter.componentXflash.filters.DisplacementMapFilter.componentYALPHA Альфа-канал.8uint Альфа-канал. BLUE Синий канал.4uint Синий канал. GREEN Зеленый канал.2uint Зеленый канал. RED Красный канал.1uint Красный канал.
GraphicsSolidFill Определяет сплошную заливку.flash.display:IGraphicsFillflash.display:IGraphicsDataObject Определяет сплошную заливку.

Используйте объект GraphicsSolidFill совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsSolidFill эквивалентно вызову метода Graphics.beginFill().

flash.display.Graphics.beginFill()flash.display.Graphics.drawGraphicsData()GraphicsSolidFill Создает новый объект GraphicsSolidFill.coloruint0Значение цвета. Действительны значения в шестнадцатеричном формате 0xRRGGBB. alphaNumber1.0Значение альфа-прозрачности. Допустимые значения находятся в диапазоне 0 (полностью прозрачный) — 1 (полностью непрозрачный). Создает новый объект GraphicsSolidFill. alpha Указывает значение альфа-прозрачности заливки.1.0Number Указывает значение альфа-прозрачности заливки. Допустимые значения находятся в диапазоне 0 (полностью прозрачный) — 1 (полностью непрозрачный). Значением по умолчанию является 1. Экранные объекты, для которых значение alpha равно 0, являются активными, несмотря на невидимость. color Цвет заполнения.0uint Цвет заполнения. Действительны значения в шестнадцатеричном формате 0xRRGGBB. Значение по умолчанию — 0xFF0000 (или uint 0).
IBitmapDrawable Интерфейс IBitmapDrawable реализуется объектами, которые могут передаваться в качестве параметра source метода draw() класса BitmapData. Интерфейс IBitmapDrawable реализуется объектами, которые могут передаваться в качестве параметра source метода draw() класса BitmapData. Эти объекты относятся к типу BitmapData или DisplayObject. flash.display.BitmapData.draw()flash.display.BitmapDataflash.display.DisplayObjectCapsStyle Класс CapsStyle — это перечисление значений констант, задающих стили концов линий при рисовании линий.Object Класс CapsStyle — это перечисление значений констант, задающих стили концов линий при рисовании линий. Константы предназначены для использования в качестве значений параметра caps метода flash.display.Graphics.lineStyle(). Можно задать концы линий трех типов:

В следующем примере класс CapsStyleExample используется для рисования трех параллельных линий с разными типами концов.
  1. Для каждой линии заданы следующие свойства.
    • Длина линии — 80 пикселей.
    • Цвет рамки — оранжевый.
    • Размер рамки — 30 пикселей.
    • Цвет подсветки — серый.
    • Размер подсветки — 0 пикселей.
    • Значение альфа-канала — 1 для получения сплошного цвета.
    • Хинтинг пикселей имеет значение false (не выполняется хинтинг до полных пикселей).
    • Режим масштабирования линий - обычный: масштабирование по ширине.
    • Стиль стыка концов рамки - MITER (уголок).
    • Длина уголка - 1, то есть, уголок обрезается близко к линии.
  2. Конструктор класса создает три вертикальные линии, начиная с координат x = 0, y = 0, путем троекратного вызова метода drawLine() с использованием разных стилей концов линий (нет, круглые, квадратные). В каждом из трех вызовов метода drawLine() используются перечисленные выше стиль концов и свойства для рисования вертикальной линии и соответствующей подсветки. Первый вызов создает новый объект Shape child, а затем с помощью методов класса Graphics задается стиль линии и рисуются линии с подсветкой. Каждый экземпляр child добавляется в список отображения и отрисовывается в рабочей области.
  3. Соединенные сегменты линии перерисовываются с использованием метода refreshLayout() на пикселях y = 80, начиная с пикселей x = 80, где сегменты линии разделены 25 пикселями.
package { import flash.display.CapsStyle; import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.JointStyle; import flash.display.LineScaleMode; import flash.display.Shape; import flash.display.Sprite; public class CapsStyleExample extends Sprite { private var lineLength:uint = 80; private var borderColor:uint = 0xFFCC00; private var borderSize:uint = 30; private var highlightColor:uint = 0x666666; private var highlightSize:uint = 0; private var gutter:uint = 25; private var borderAlpha:uint = 1; private var borderPixelHinting:Boolean = false; private var borderScaleMode:String = LineScaleMode.NORMAL; private var borderJointStyle:String = JointStyle.MITER; private var borderMiterLimit:uint = 1; public function CapsStyleExample() { drawLine(CapsStyle.NONE); drawLine(CapsStyle.ROUND); drawLine(CapsStyle.SQUARE); refreshLayout(); } private function drawLine(capsStyle:String):void { var child:Shape = new Shape(); child.graphics.lineStyle(borderSize, borderColor, borderAlpha, borderPixelHinting, borderScaleMode, capsStyle, borderJointStyle, borderMiterLimit); child.graphics.lineTo(0, 0); child.graphics.lineTo(0, lineLength); child.graphics.endFill(); child.graphics.moveTo(0, 0); child.graphics.lineStyle(highlightSize, highlightColor); child.graphics.lineTo(0, 0); child.graphics.lineTo(0, lineLength); addChild(child); } private function refreshLayout():void { var ln:uint = numChildren; var child:DisplayObject; var lastChild:DisplayObject = getChildAt(0); lastChild.x = lineLength; lastChild.y = lineLength; for (var i:uint = 1; i < ln; i++) { child = getChildAt(i); child.x = gutter + lastChild.x + lastChild.width; child.y = lineLength; lastChild = child; } } } }
flash.display.Graphics.lineStyle()NONE С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задается отсутствие концов линий.noneString С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задается отсутствие концов линий. ROUND С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задаются круглые концы линий.roundString С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задаются круглые концы линий. SQUARE С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задаются квадратные концы линий.squareString С его помощью в параметре caps метода flash.display.Graphics.lineStyle() задаются квадратные концы линий.
StageScaleMode Класс StageScaleMode передает значения для свойства Stage.scaleMode.Object Класс StageScaleMode передает значения для свойства Stage.scaleMode. flash.display.Stage.scaleModeEXACT_FIT Задает видимость всего приложения в указанной области. При этом исходное соотношение сторон не сохраняется.exactFitString Задает видимость всего приложения в указанной области. При этом исходное соотношение сторон не сохраняется. Может возникнуть искажение изображения. NO_BORDER Задает заполнение указанной области приложением без искажений, но с возможным усечением. При этом поддерживается исходное соотношение сторон приложения.noBorderString Задает заполнение указанной области приложением без искажений, но с возможным усечением. При этом поддерживается исходное соотношение сторон приложения. NO_SCALE Задает фиксированный размер приложения, который сохраняется даже при изменении размеров окна проигрывателя.noScaleString Задает фиксированный размер приложения, который сохраняется даже при изменении размеров окна проигрывателя. Если окно проигрывателя меньше размеров содержимого, может возникнуть усечение. SHOW_ALL Задает видимость всего приложения в указанной области без искажений при поддержании исходного соотношения сторон приложения.showAllString Задает видимость всего приложения в указанной области без искажений при поддержании исходного соотношения сторон приложения. С двух сторон от приложения могут появиться поля. SpreadMethod Класс SpreadMethod содержит значения параметра spreadMethod методов beginGradientFill() и lineGradientStyle() класса Graphics.Object Класс SpreadMethod содержит значения параметра spreadMethod методов beginGradientFill() и lineGradientStyle() класса Graphics.

В следующем примере показана та же заливка градиентом с использованием разных методов нанесения.

SpreadMethod.PADSpreadMethod.REFLECTSpreadMethod.REPEAT
flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()PAD Показывает, что градиент применяет нанесение заполнением.padString Показывает, что градиент применяет нанесение заполнением. REFLECT Показывает, что градиент применяет нанесение отражением.reflectString Показывает, что градиент применяет нанесение отражением. REPEAT Показывает, что градиент применяет нанесение повторением.repeatString Показывает, что градиент применяет нанесение повторением.
FocusDirection В классе FocusDirection перечислены значения, используемые параметром direction метода assignFocus() объекта Stage, а также в качестве свойства direction объекта FocusEvent.Object В классе FocusDirection перечислены значения, используемые параметром direction метода assignFocus() объекта Stage, а также в качестве свойства direction объекта FocusEvent. flash.events.FocusEvent.directionflash.display.Stage.assignFocus()BOTTOM Указывает на то, что фокус будет передан объекту в конце последовательности считывания.bottomString Указывает на то, что фокус будет передан объекту в конце последовательности считывания. NONE Указывает на то, что объект с фокусом в пределах интерактивного объекта изменяться не должен.noneString Указывает на то, что объект с фокусом в пределах интерактивного объекта изменяться не должен. TOP Указывает на то, что фокус будет передан объекту в начале последовательности считывания.topString Указывает на то, что фокус будет передан объекту в начале последовательности считывания. StageAlign Класс StageAlign передает значения констант для свойства Stage.align.Object Класс StageAlign передает значения констант для свойства Stage.align. flash.display.Stage.alignBOTTOM_LEFT Задает выравнивание рабочей области по левому нижнему углу.BLString Задает выравнивание рабочей области по левому нижнему углу. BOTTOM_RIGHT Задает выравнивание рабочей области по правому нижнему углу.BRString Задает выравнивание рабочей области по правому нижнему углу. BOTTOM Задает выравнивание рабочей области по нижнему краю.BString Задает выравнивание рабочей области по нижнему краю. LEFT Задает выравнивание рабочей области по левому краю.LString Задает выравнивание рабочей области по левому краю. RIGHT Задает выравнивание рабочей области по правому краю.RString Задает выравнивание рабочей области по правому краю. TOP_LEFT Задает выравнивание рабочей области по левому верхнему углу.TLString Задает выравнивание рабочей области по левому верхнему углу. TOP_RIGHT Задает выравнивание рабочей области по правому верхнему углу.TRString Задает выравнивание рабочей области по правому верхнему углу. TOP Задает выравнивание рабочей области по верхнему краю.TString Задает выравнивание рабочей области по верхнему краю. ColorCorrectionSupport Класс ColorCorrectionSupport передает значения для свойства flash.display.Stage.colorCorrectionSupport.Object Класс ColorCorrectionSupport передает значения для свойства flash.display.Stage.colorCorrectionSupport. flash.display.Stage.colorCorrectionSupportDEFAULT_OFF Цветокоррекция поддерживается, но отключена по умолчанию.defaultOffString Цветокоррекция поддерживается, но отключена по умолчанию. DEFAULT_ON Цветокоррекция поддерживается и включена по умолчанию.defaultOnString Цветокоррекция поддерживается и включена по умолчанию. UNSUPPORTED Цветокоррекция не поддерживается средой хоста.unsupportedString Цветокоррекция не поддерживается средой хоста. GraphicsShaderFill Определяет заливку затенением.flash.display:IGraphicsFillflash.display:IGraphicsDataObject Определяет заливку затенением.

Используйте объект GraphicsShaderFill совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsShaderFill эквивалентно вызову метода Graphics.beginShaderFill().

flash.display.Graphics.beginShaderFill()flash.display.Graphics.drawGraphicsData()GraphicsShaderFill Создает новый объект GraphicsShaderFill.shaderflash.display:ShadernullЗатенение, которое должно использоваться для заливки. Для указания входного изображения данный экземпляр Shader не требуется. Однако, если в затенении входное изображение указано, его необходимо настроить вручную в свойстве input соответствующего свойства ShaderInput свойства Shader.data. matrixflash.geom:MatrixnullОбъект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в затенении. Создает новый объект GraphicsShaderFill. flash.geom.Matrixflash.display.Shadermatrix Объект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в затенении.flash.geom:Matrix Объект матрицы (из класса flash.geom.Matrix), который можно использовать для определения преобразований в затенении. Например, можно использовать следующую матрицу для поворота затенения на 45 градусов (пи/4 радиан): matrix = new flash.geom.Matrix(); matrix.rotate(Math.PI / 4);

В основе полученных в затенении координат лежит матрица, указанная для параметра matrix. В матрице по умолчанию (null) этими координатами в затенении являются локальные координаты пикселей, которые могут быть использованы для пробы ввода.

flash.geom.Matrix
shader Затенение, которое должно использоваться для заливки.flash.display:Shader Затенение, которое должно использоваться для заливки. Для указания входного изображения данный экземпляр Shader не требуется. Однако, если в затенении входное изображение указано, его необходимо настроить вручную в свойстве input соответствующего свойства ShaderInput свойства Shader.data.

При передачи экземпляра Shader в качестве аргумента происходит его копирование на внутреннем уровне. При выполнении операции заливки используется эта копия, а не ссылка за исходное затенение. Изменения параметров затенения (изменение значения параметра, ввода или байт-кода) не влияют на используемую для заливки копию затенения.

flash.display.Shader
Shape Этот класс позволяет создавать облегченные фигуры с помощью API-интерфейса для рисования ActionScript.Экранный объект, используемый для фигур. flash.display:DisplayObject Этот класс позволяет создавать облегченные фигуры с помощью API-интерфейса для рисования ActionScript. Класс Shape включает свойство graphics, обеспечивающее доступ к методам класса Graphics.

Класс Sprite также включает свойство graphics и другие функции, недоступные в классе Shape. Например, объект Sprite является контейнером экранных объектов, а объект Shape не является (и не может содержать дочерних элементов экранных объектов). По этой причине объекты Shape используют меньше памяти, чем объекты Sprite, содержащие те же графические элементы. Однако объект Sprite поддерживает события пользовательского ввода, а объект Shape — нет.

В следующем примере рассматривается использование класса ShapeExample для рисования круга, прямоугольного примитива со скругленными углами и квадрата. Это можно сделать, выполнив следующие действия.
  1. Объявите свойство size для последующего использования при определении размера каждой фигуры.
  2. Объявите свойства, определяющие оранжевый цвет фона, темно-серый цвет рамки, размер рамки в пикселях, равный 0, радиус угла, равный 9 пикселям; также задайте расстояние между краем рабочей области и другими объектами, равное 5 пикселям.
  3. Используйте свойства, объявленные в предыдущих шагах, вместе со встроенными методами класса Graphics, чтобы нарисовать круг, прямоугольный примитив со скругленными углами и квадрат с координатами x = 0, y = 0.
  4. Повторно нарисуйте все эти фигуры у верхнего края рабочей области, начиная с точки x = 5, y = 5 с расстоянием 5 пикселей между ними с использованием метода refreshLayout().
package { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.JointStyle; import flash.display.LineScaleMode; import flash.display.Shape; import flash.display.Sprite; public class ShapeExample extends Sprite { private var size:uint = 80; private var bgColor:uint = 0xFFCC00; private var borderColor:uint = 0x666666; private var borderSize:uint = 0; private var cornerRadius:uint = 9; private var gutter:uint = 5; public function ShapeExample() { doDrawCircle(); doDrawRoundRect(); doDrawRect(); refreshLayout(); } private function refreshLayout():void { var ln:uint = numChildren; var child:DisplayObject; var lastChild:DisplayObject = getChildAt(0); lastChild.x = gutter; lastChild.y = gutter; for (var i:uint = 1; i < ln; i++) { child = getChildAt(i); child.x = gutter + lastChild.x + lastChild.width; child.y = gutter; lastChild = child; } } private function doDrawCircle():void { var child:Shape = new Shape(); var halfSize:uint = Math.round(size/2); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawCircle(halfSize, halfSize, halfSize); child.graphics.endFill(); addChild(child); } private function doDrawRoundRect():void { var child:Shape = new Shape(); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawRoundRect(0, 0, size, size, cornerRadius); child.graphics.endFill(); addChild(child); } private function doDrawRect():void { var child:Shape = new Shape(); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); addChild(child); } } }
flash.display.Graphicsflash.display.SpriteShape Создает новый объект Shape. Создает новый объект Shape. graphics Указывает объект Graphics, принадлежащий этому объекту Shape, где можно выполнять команды векторного рисования.flash.display:GraphicsЗадает объект Graphics для объекта Shape. Указывает объект Graphics, принадлежащий этому объекту Shape, где можно выполнять команды векторного рисования.
ShaderParameterType Этот класс содержит константы, представляющие возможные значения для свойства type класса ShaderParameter.Object Этот класс содержит константы, представляющие возможные значения для свойства type класса ShaderParameter. Каждая константа представляет один из типов данных параметров, доступных для использования в Flash Player на языке Pixel Bender для затенений. flash.display.ShaderParameter.typeBOOL2 Указывает на то, что значение параметра затенения имеет тип bool2 и в ActionScript совпадает с массивом с двумя экземплярами Boolean.bool2String Указывает на то, что значение параметра затенения имеет тип bool2 и в ActionScript совпадает с массивом с двумя экземплярами Boolean. BOOL3 Указывает на то, что значение параметра затенения имеет тип bool3 и в ActionScript совпадает с массивом с тремя экземплярами Boolean.bool3String Указывает на то, что значение параметра затенения имеет тип bool3 и в ActionScript совпадает с массивом с тремя экземплярами Boolean. BOOL4 Указывает на то, что значение параметра затенения имеет тип bool4 и в ActionScript совпадает с массивом с четырьмя экземплярами Boolean.bool4String Указывает на то, что значение параметра затенения имеет тип bool4 и в ActionScript совпадает с массивом с четырьмя экземплярами Boolean. BOOL Указывает на то, что значение параметра затенения имеет тип bool и в ActionScript совпадает с единственным экземпляром Boolean.boolString Указывает на то, что значение параметра затенения имеет тип bool и в ActionScript совпадает с единственным экземпляром Boolean.

Имейте ввиду, что несмотря на то, что данный параметр ожидает единственное значение, свойство ShaderParameter.value является массивом. Поэтому, данное значение должно являться единственным значением массива, присвоенное свойству value. Например:

// assumes the shader has a parameter named "param" // whose data type is bool myShader.data.param.value = [true];
FLOAT2 Указывает на то, что значение параметра затенения имеет тип float2 и совпадает с массивом с двумя экземплярами Number в ActionScript.float2String Указывает на то, что значение параметра затенения имеет тип float2 и совпадает с массивом с двумя экземплярами Number в ActionScript. flash.display.ShaderParameter.typeFLOAT3 Указывает на то, что значение параметра затенения имеет тип float3 и в ActionScript совпадает с массивом с тремя экземплярами Number.float3String Указывает на то, что значение параметра затенения имеет тип float3 и в ActionScript совпадает с массивом с тремя экземплярами Number. FLOAT4 Указывает на то, что значение параметра затенения имеет тип float4 и в ActionScript совпадает с массивом с четырьмя экземплярами Number.float4String Указывает на то, что значение параметра затенения имеет тип float4 и в ActionScript совпадает с массивом с четырьмя экземплярами Number. FLOAT Указывает на то, что значение параметра затенения имеет тип float и в ActionScript совпадает с единственным экземпляром Number.floatString Указывает на то, что значение параметра затенения имеет тип float и в ActionScript совпадает с единственным экземпляром Number.

Имейте ввиду, что несмотря на то, что данный параметр ожидает единственное значение, свойство ShaderParameter.value является массивом. Поэтому, данное значение должно являться единственным значением массива, присвоенное свойству value. Например:

// assumes the shader has a parameter named "param" // whose data type is float myShader.data.param.value = [22.5];
flash.display.ShaderParameter.type
INT2 Указывает на то, что значение параметра затенения имеет тип int2 и в ActionScript совпадает с массивом с двумя экземплярами int или uint.int2String Указывает на то, что значение параметра затенения имеет тип int2 и в ActionScript совпадает с массивом с двумя экземплярами int или uint. INT3 Указывает на то, что значение параметра затенения имеет тип int3 и в ActionScript совпадает с массивом с тремя экземплярами int или uint.int3String Указывает на то, что значение параметра затенения имеет тип int3 и в ActionScript совпадает с массивом с тремя экземплярами int или uint. INT4 Указывает на то, что значение параметра затенения имеет тип int4 и в ActionScript совпадает с массивом с четырьмя экземплярами int или uint.int4String Указывает на то, что значение параметра затенения имеет тип int4 и в ActionScript совпадает с массивом с четырьмя экземплярами int или uint. INT Указывает на то, что значение параметра затенения имеет тип int и в ActionScript совпадает с единственным экземпляром int или uint.intString Указывает на то, что значение параметра затенения имеет тип int и в ActionScript совпадает с единственным экземпляром int или uint.

Имейте ввиду, что несмотря на то, что данный параметр ожидает единственное значение, свойство ShaderParameter.value является массивом. Поэтому, данное значение должно являться единственным значением массива, присвоенное свойству value. Например:

// assumes the shader has a parameter named "param" // whose data type is int myShader.data.param.value = [275];
MATRIX2X2 Указывает на то, что значение параметра затенения имеет тип float2x2 и совпадает с матрицей 2 на 2.matrix2x2String Указывает на то, что значение параметра затенения имеет тип float2x2 и совпадает с матрицей 2 на 2. В ActionScript данная матрица представляет массив из четырех экземпляров Number. MATRIX3X3 Указывает на то, что значение параметра затенения имеет тип float3x3 и совпадает с матрицей 3 на 3.matrix3x3String Указывает на то, что значение параметра затенения имеет тип float3x3 и совпадает с матрицей 3 на 3. В ActionScript данная матрица представляет массив из девяти экземпляров Number. MATRIX4X4 Указывает на то, что значение параметра затенения имеет тип float4x4 и совпадает с матрицей 4 на 4.matrix4x4String Указывает на то, что значение параметра затенения имеет тип float4x4 и совпадает с матрицей 4 на 4. В ActionScript данная матрица представляет массив из шестнадцати экземпляров Number.
GraphicsPathWinding Класс GraphicsPathWinding содержит значения для свойства flash.display.GraphicsPath.winding и метода flash.display.Graphics.drawPath() для определения направления отрисовки контура.Object Класс GraphicsPathWinding содержит значения для свойства flash.display.GraphicsPath.winding и метода flash.display.Graphics.drawPath() для определения направления отрисовки контура. Направление контура по часовой стрелке считается положительным, а против часовой стрелки — отрицательным:

При пересечении или наложении контуров их направление определяет правило заливки областей, созданных пересечением или наложением:

flash.display.GraphicsPath.windingflash.display.Graphics.drawPath()EVEN_ODD Задает заливку по правилу четности-нечетности.evenOddString Задает заливку по правилу четности-нечетности. Заливка по правилу четности-нечетности используется всеми API для рисования и является типом заливки по умолчанию для метода flash.display.Graphics.drawPath(). Для накладывающихся контуров заливка будет перемежаться пустыми областями. При пересечении двух квадратов с одинаковой заливкой область пересечения останется без заливки. Смежные области всегда разные (одна с заливкой, другая — без). NON_ZERO Задает заливку по правилу ненулевого направления.nonZeroString Задает заливку по правилу ненулевого направления. При заливке по правилу ненулевого направления в случае пересечения разнонаправленных контуров область пересечения останется без заливки (как при заливке по правилу четности-нечетности). При пересечении однонаправленных контуров область пересечения будет закрашена.
ActionScriptVersion Класс ActionScriptVersion является перечислением значений констант, указывающих на версию языка загруженного SWF-файла.Object Класс ActionScriptVersion является перечислением значений констант, указывающих на версию языка загруженного SWF-файла. Константы версии языка предоставляются для использования при проверке свойства actionScriptVersion объекта flash.display.LoaderInfo. flash.display.LoaderInfo.actionScriptVersionACTIONSCRIPT2 Язык ActionScript версии 2.0 и более ранних версий.2uint Язык ActionScript версии 2.0 и более ранних версий. ACTIONSCRIPT3 Язык ActionScript версии 3.0.3uint Язык ActionScript версии 3.0. GraphicsPath Набор команд рисования и параметры координат для этих команд.flash.display:IGraphicsPathflash.display:IGraphicsDataObject Набор команд рисования и параметры координат для этих команд.

Используйте объект GraphicsPath совместно с методом Graphics.drawGraphicsData(). Рисование объекта GraphicsPath эквивалентно вызову метода Graphics.drawPath().

Для класса GraphicsPath также предусмотрен собственный набор методов (curveTo(), lineTo(), moveTo() wideLineTo() и wideMoveTo()), которые аналогичны методам в классе Graphics для корректировки векторных массивов GraphicsPath.commands и GraphicsPath.data.

flash.display.Graphics.drawGraphicsData()flash.display.Graphics.drawPath()GraphicsPath Создает новый объект GraphicsPath.commandsnullВектор целых чисел, представляющий команды, определенные классом GraphicsPathCommand. datanullВектор чисел, где каждая пара чисел рассматривается как точка (пара координат x, y). windingStringevenOddУказывает правило изгиба с использованием значения, определенного в классе GraphicsPathWinding. Создает новый объект GraphicsPath. flash.display.GraphicsPathCommandflash.display.GraphicsPathWindingcurveTo Добавляет новую команду curveTo к вектору commands и новые координаты к вектору data.controlXNumberЧисло, указывающее горизонтальное положение контрольной точки относительно точки регистрации родительского экранного объекта. controlYNumberЧисло, указывающее вертикальное положение опорной точки относительно точки регистрации родительского экранного объекта. anchorXNumberЧисло, указывающее горизонтальное положение следующей точки привязки относительно точки регистрации родительского экранного объекта. anchorYNumberЧисло, указывающее вертикальное положение следующей точки привязки относительно точки регистрации родительского экранного объекта. Добавляет новую команду curveTo к вектору commands и новые координаты к вектору data. flash.display.GraphicsPathCommand.CURVE_TOflash.display.Graphics.curveTo()lineTo Добавляет новую команду lineTo к вектору commands и новые координаты к вектору data.xNumberКоордината x точки назначения прямой. yNumberКоордината y точки назначения прямой. Добавляет новую команду lineTo к вектору commands и новые координаты к вектору data. flash.display.GraphicsPathCommand.LINE_TOflash.display.Graphics.lineTo()moveTo Добавляет новую команду moveTo к вектору commands и новые координаты к вектору data.xNumberКоордината x точки назначения. yNumberКоордината y точки назначения. Добавляет новую команду moveTo к вектору commands и новые координаты к вектору data. flash.display.GraphicsPathCommand.MOVE_TOflash.display.Graphics.moveTo()wideLineTo Добавляет новую команду wideLineTo к вектору commands и новые координаты к вектору data.xNumberКоордината x точки назначения прямой. yNumberКоордината y точки назначения прямой. Добавляет новую команду wideLineTo к вектору commands и новые координаты к вектору data. flash.display.GraphicsPathCommand.WIDE_LINE_TOwideMoveTo Добавляет новую команду wideMoveTo к вектору commands и новые координаты к вектору data.xNumberКоордината x точки назначения. yNumberКоордината y точки назначения. Добавляет новую команду wideMoveTo к вектору commands и новые координаты к вектору data. flash.display.GraphicsPathCommand.WIDE_MOVE_TOcommands Вектор команд рисования в виде целых чисел, представляющий контур. Вектор команд рисования в виде целых чисел, представляющий контур. Каждая команда может представлять одно из значений, заданных в классе GraphicsPathCommand. flash.display.GraphicsPathCommanddata Вектор чисел, содержащий параметры, используемые для команд рисования. Вектор чисел, содержащий параметры, используемые для команд рисования. winding Указывает правило изгиба с использованием значения, определенного в классе GraphicsPathWinding.String Указывает правило изгиба с использованием значения, определенного в классе GraphicsPathWinding. flash.display.GraphicsPathWinding
MorphShape Класс MorphShape представляет объекты MorphShape в списке отображения.flash.display:DisplayObject Класс MorphShape представляет объекты MorphShape в списке отображения. Объекты MorphShape нельзя создавать непосредственно в ActionScript; они создаются при создании анимации формы в инструменте разработки Flash. PixelSnapping Класс PixelSnapping — это перечисление значений констант для задания параметров привязки к пикселям с помощью свойства pixelSnapping объекта Bitmap.Object Класс PixelSnapping — это перечисление значений констант для задания параметров привязки к пикселям с помощью свойства pixelSnapping объекта Bitmap. flash.display.Bitmap.pixelSnappingALWAYS Значение константы, применяемое свойством pixelSnapping объекта Bitmap: растровое изображение всегда привязывается к ближайшему пикселю независимо от преобразований.alwaysString Значение константы, применяемое свойством pixelSnapping объекта Bitmap: растровое изображение всегда привязывается к ближайшему пикселю независимо от преобразований. AUTO Значение константы, применяемое свойством pixelSnapping объекта Bitmap: растровое изображение привязывается к ближайшему пикселю, если не выполнялось вращение или наклон, а также если оно отображено в масштабе от 99,9% до 100,1%.autoString Значение константы, применяемое свойством pixelSnapping объекта Bitmap: растровое изображение привязывается к ближайшему пикселю, если не выполнялось вращение или наклон, а также если оно отображено в масштабе от 99,9% до 100,1%. Если эти условия удовлетворяются, изображение отображается в масштабе 100% с привязкой к ближайшему пикселю. На внутреннем уровне этот параметр позволяет показывать изображение с максимальной быстротой с помощью векторного средства визуализации. NEVER Значение константы, применяемое свойством pixelSnapping объекта Bitmap: привязка к пикселям не применяется.neverString Значение константы, применяемое свойством pixelSnapping объекта Bitmap: привязка к пикселям не применяется. GraphicsPathCommand Задает значения, которые используются для указания команд рисования контуров.Object Задает значения, которые используются для указания команд рисования контуров.

Значения данного класса используются методом Graphics.drawPath() или хранятся в векторе commands объекта GraphicsPath.

flash.display.Graphics.drawPath()flash.display.GraphicsPath.commandsCURVE_TO Указывает команду рисования, которая рисует кривую от текущего положения инструмента рисования до точки с координатами х и у, заданными вектором данных.3int Указывает команду рисования, которая рисует кривую от текущего положения инструмента рисования до точки с координатами х и у, заданными вектором данных. Данная команда приводит к тому же результату, что и метод Graphics.lineTo(), и использует две точки в векторе данных — контрольную и точку привязки: (cx, cy, ax, ay). flash.display.Graphics.curveTo()LINE_TO Указывает команду рисования, которая рисует линию от текущего положения инструмента рисования до точки с координатами х и у, заданными вектором данных.2int Указывает команду рисования, которая рисует линию от текущего положения инструмента рисования до точки с координатами х и у, заданными вектором данных. Данная команда приводит к тому же результату, что и метод Graphics.lineTo(), и использует одну точку в векторе данных: (x,y). flash.display.Graphics.lineTo()MOVE_TO Указывает команду рисования, которая перемещает текущее положение инструмента рисования в точку с координатами х и у, заданными вектором данных.1int Указывает команду рисования, которая перемещает текущее положение инструмента рисования в точку с координатами х и у, заданными вектором данных. Данная команда приводит к тому же результату, что и метод Graphics.moveTo(), и использует одну точку в векторе данных: (x,y). flash.display.Graphics.moveTo()NO_OP Представляет команду по умолчанию «do nothing».0int Представляет команду по умолчанию «do nothing». WIDE_LINE_TO Задает команду рисования «line to», но использует две пары координат (четыре значения) вместо одной.5int Задает команду рисования line to, но использует две пары координат (четыре значения) вместо одной. Данная команда позволяет переключаться между командами line to и curve to, не изменяя количества значений данных, используемых командой. Данная команда использует два набора значений вектора данных: один набор фиктивных координат и один набор координат положения (x,y).

Варианты команды WIDE_LINE_TO и WIDE_MOVE_TO используют такое же количество параметров, что и команда CURVE_TO.

LINE_TOflash.display.Graphics.lineTo()
WIDE_MOVE_TO Задает команду рисования move to, но использует две пары координат (четыре значения) вместо одной.4int Задает команду рисования «move to», но использует две пары координат (четыре значения) вместо одной. Данная команда позволяет переключаться между командами «move to» и «curve to», не изменяя количества значений данных, используемых командой. Данная команда использует два набора значений вектора данных: один набор фиктивных координат и один набор координат положения (x,y).

Варианты команды WIDE_LINE_TO и WIDE_MOVE_TO используют такое же количество параметров, что и команда CURVE_TO.

MOVE_TOflash.display.Graphics.moveTo()