Как получить доступ к viewWidth и viewHeight импортированной графики FXG? - PullRequest
1 голос
/ 08 августа 2011

В моем проекте ActionScript 3 графические объекты FXG импортируются как экземпляры SpriteVisualElement следующим образом:

// with the FXG file myPackage/myFXGFile.fxg
import myPackage.myFXGFile;
var myFXG:SpriteVisualElement = new myPackage.myFXGFile();
addChild( myFXG );

Файлы FXG имеют «кадры», определенные с использованием свойств viewWidth и viewHeight, равных <Graphic>. Ниже приведен пример простого изображения. Он состоит из прямоугольника с центром в большем прямоугольнике, причем только первый является частью рамы вида.

<?xml version="1.0" encoding="utf-8"?>
<Graphic viewWidth="100" viewHeight="200" xmlns="http://ns.adobe.com/fxg/2008" version="2">    
    <Rect id="rect1" width="120" height="240" x="-10" y="-20">
         <fill><SolidColor color="#FF0000"/></fill>
    </Rect>
    <Rect id="rect1" width="100" height="200" x="0" y="0">
         <fill><SolidColor color="#0000FF"/></fill>
    </Rect>
</Graphic>

В коде мне нужно знать размеры этого кадра, то есть значения viewWidth и viewHeight. Есть ли способ получить их из импортированных файлов? Есть ли решение без разбора файла FXG вручную?

Обновление : Я только что просмотрел все методы и свойства, доступные для SpriteVisualElement, а getPreferredBoundsWidth() и - Height(), кажется, делают то, что я ищу. Однако я не достаточно уверен в источнике Flex, чтобы найти источник этих значений, и пара условий заставляет меня сомневаться. Это правильный и рекомендуемый способ?

1 Ответ

0 голосов
/ 26 сентября 2016

SpriteVisualElement - это класс, который наследуется от FlexSprite и flash.display.Sprite. FXG является примером этого:

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

Существует два других метода, помимо вышеупомянутых getPreferredBoundsWidth() и getPreferredBoundsHeight():

getLayoutBoundsHeight   ()  method   
public function getLayoutBoundsHeight(postLayoutTransform:Boolean = true):Number

Language Version :  ActionScript 3.0
Product Version :   Flex 4
Runtime Versions :  Flash Player 10, AIR 1.5

Returns the element's layout height. This is the size that the element uses to draw on screen.

Parameters
    postLayoutTransform:Boolean (default = true) — When postLayoutTransform is true, the method returns the element's bounding box width. The bounding box is in the element's parent coordinate space and is calculated from the element's layout size and layout transform matrix.

Returns
    Number — The element's layout height.


getLayoutBoundsWidth    ()  method   
public function getLayoutBoundsWidth(postLayoutTransform:Boolean = true):Number

Language Version :  ActionScript 3.0
Product Version :   Flex 4
Runtime Versions :  Flash Player 10, AIR 1.5

Returns the element's layout width. This is the size that the element uses to draw on screen.

Parameters
    postLayoutTransform:Boolean (default = true) — When postLayoutTransform is true, the method returns the element's bounding box width. The bounding box is in element's parent coordinate space and is calculated from the element's layout size and layout transform matrix.

Returns
    Number — The element's layout width. 

Есть ли решение без синтаксического анализа файла FXG вручную?

В качестве альтернативы используйте FXG Editor .

Ссылки

...