2012-04-09 8 views
0

でMXMLで動作しますが、ではない私は、AdobeのドキュメントUsing FXGEmbedding application assetsを読みましたが、唯一のMXMLてFXGを埋め込むことができます -は、ActionScript

enter image description here

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 /資産/ 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グラフィックをinstansiateしよう(まだ同じのFlexモバイルプロジェクトで)、私はコンパイルエラーを取得:

enter image description here

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();

私はのsrc/にFXGファイルを移動し、のxmlnsを使用します。= "*"すべての作品カンプ。

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

私はコンパイラエラーを取り除くだろうと思われる:私は仮定

答えて

1

あなたのコードに基づいて、ActionScriptのインポートスターは、このようなものになります。しかし、BitmapImageのソースとしてSpriteVisualElementを使用できるかどうかはわかりません。 SpriteVisualElementを親コンテナの子として追加し、これを行うにはFlexコンポーネントライフサイクルを使用する必要があります。

これを回避するためにいくつか試してみましたが、ちょうどcontributed this code to Apache Flexです。 The specific class is here。何らかの理由で、FXG要素がSpriteVisualElementsになる可能性があるという事実を忘れてしまいました。私のFXGImageクラスを使用しても、ActionScriptでコンポーネントを作成した場合、ActionScriptでコンポーネントのサイズや配置を行う必要はありません。

+0

"import assets.Star;"うまくいく、ありがとう。 ImageとBitmapImageは* source = *とすることもできます。残念ながら、* width *と* height *を設定すると、それらはうまく動作しません。何らかの理由でFXGファイルのスケーリングがうまく動作しません。 –

+1

@AlexanderFarber画像が拡大縮小していないという問題はありますか?またはアスペクト比が維持されていないという問題がありますか?以下は私のFXGImageコンポーネントのサンプルです:http://www.flextras.com/labs/FlextrasFridayLunch/2012/FXGImage/FXGImageSamplehtml。あなたは高さと幅w/oの問題を変更することができます。 – JeffryHouser

+0

あなたのFXGImageコンポーネントははるかに良く見えます。 ImageとBitmapImageは縮尺は変わりますが、見栄えが悪いです。たとえば、上記のアプリケーションでこのコードを使用した場合:\t

1

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