0

FXGの使用アプリケーションアセットの埋め込みに関するAdobeのドキュメントを読みましたが、FXGを埋め込むことができるのはMXMLを介してのみです-

ここに画像の説明を入力してください

MyStars.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    firstView="views.Home">
</s:ViewNavigatorApplication>

Home.mxml(MXMLを介してFXGを埋め込む場合は、正常に機能します):

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:comps="assets.*"
        title="Home">

    <comps:Star />
</s:View>

Star.fxg(src / Assets / Star.fxgにあります):

<?xml version='1.0' encoding='UTF-8'?>
<fxg:Graphic xmlns:fxg="http://ns.adobe.com/fxg/2008" version="2">    
    <fxg:Path x="9.399" y="10.049" data="M 82.016 78.257 L 51.895 69.533 L 27.617 89.351 L 26.621 58.058 L 0.231 41.132 L 29.749 30.52 L 37.714 0.241 L 56.944 24.978 L 88.261 23.181 L 70.631 49.083 Z">
        <fxg:fill>
            <fxg:SolidColor color="#FFFFFF"/>
        </fxg:fill>
        <fxg:stroke>
            <fxg:SolidColorStroke 
                caps="none" 
                color="#4769C4" 
                joints="miter" 
                miterLimit="4" 
                weight="20"/>
        </fxg:stroke>
    </fxg:Path>
</fxg:Graphic>

ただし、ActionScriptを使用してFXGグラフィックをインスタンス化しようとすると(同じFlexモバイルプロジェクト内にあります)、コンパイルエラーが発生します。

ここに画像の説明を入力してください

Call to a possibly undefined method Star

Home.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:comps="assets.*"
        title="Home">

    <fx:Script>
        <![CDATA[
            import spark.core.SpriteVisualElement;

            private static const STAR:SpriteVisualElement = new Star();
        ]]>
    </fx:Script>  

<s:BitmapImage source="{STAR}" />
</s:View>

コンプのインポートも試しました。および/または新しいcomps.Star();

FXGファイルをsrc/に移動し、 xmlns:comps = "*"を使用すると、すべてが機能します。

4

2 に答える 2

1

スターをActionScriptにインポートします。これは、コードに基づいて次のようになると思います。

import assets.Star
private static const STAR:SpriteVisualElement = new Star();

私はそれがコンパイラエラーを取り除くだろうと思う。ただし、SpriteVisualElementをBitmapImageのソースとして使用できるかどうかはわかりません。親コンテナの子としてSpriteVisualElementを追加し、これを行うためにFlexコンポーネントライフサイクルを利用する必要がある場合があります。

私はこれについていくつかの実験を行い、このコードをApacheFlexに提供しました。 特定のクラスはここにあります。ただし、何らかの理由で、FXG要素がSpriteVisualElementsである可能性があるという事実を見逃しました。FXGImageクラスを使用しても、ActionScriptでコンポーネントを作成する場合、ActionScriptでコンポーネントのサイズと位置を調整する必要はありません。

于 2012-04-09T13:25:03.113 に答える
1

FXGグラフィックの場合、アートワークのサイズに注意してください。FXGを使用してオブジェクトを作成する場合、アイコンの周りの空白が重要になります。アートワークのサイズをアイコンのサイズに設定してください(アイコンの周りに余分な空白はありません)。このように、bitmapImageに埋め込むと、FXGアセットの見栄えが大幅に向上します。

于 2013-12-04T01:59:34.163 に答える