2009-04-20 5 views
2

Flexのリソースバンドルからアイコンを取得できません。ここではシナリオです:私が持っているicons.propertiesでFlexのリソースバンドルからアイコンを引き出す際に問題が発生する

-ResourceManagerTest 
    -resources 
    -icons 
     -icon1.png 
     -icon2.png 
     -icons.properties 
-src 
    -MyButton.as 
    -ResourceManagerTest.mxml 

ディレクトリ構造は次のようになります

CIRCLE_FILLED=Embed("icon1.png") 
CIRCLE_CONTOUR=Embed("icon2.png") 

私は、そのアイコンから引き出されているボタンでToggleButtonBarのを作成したいのですがリソースバンドル。

は、ここでプログラムで作成したボタンのソースです:私はToggleButtonBarのを定義し

package 
{ 
    import mx.resources.ResourceManager; 

    public class MyButton extends Object 
    { 
    public var icon:Class; 
    public function MyButton() 
    { 
     super(); 
     icon = ResourceManager.getInstance().getClass("icons", "CIRCLE_FILLED"); 
    } 

} 

}

そして、ここではResourceManagerTestは次のとおりです。

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" 
creationComplete="onCreationComplete()"> 

<mx:Script> 
    <![CDATA[ 
     [Bindable] 
     public var dataProvider:Array; 

     public function onCreationComplete():void { 

      dataProvider = new Array(); 
      dataProvider.push(new MyButton()); 
      dataProvider.push(new MyButton()); 
      tgb.dataProvider = dataProvider; 
     } 

    ]]> 
</mx:Script> 


<mx:ToggleButtonBar id="tgb"/> 

ボタンが任意のアイコンせずに、表示されません。私は間違って何をしていますか?

答えて

1

まず、ビルドにリソースバンドルを含めていないようです。あなたはおそらく、あなたがバンドルを持っていることを確認し完了したら

<mx:Metadata> 
     [ResourceBundle("RegistrationForm")] 
</mx:Metadata> 
MXMLで

か、単に

[ResourceBundle("RegistrationForm")] 

あなたのクラスのトップ

のようなものが必要になるだろう...文字列リソースを追加して、それを取得できるかどうかを確認してください。あなたがバンドルを持っていて、まだ動作しない場合は、あなたのアイコンのための異なるパスで遊びましょう。彼らはリソースに相対的なものではないかもしれません。

+0

答えが欲しい場合はアップボートしてください。問題が解決したら正解とマークする必要があります。 –

+0

パスはプロパティファイルからの相対パスでなければなりません。 – Janosch

1

Flex 3でResourceBundleを設定する方法については、アドビのlivedocsの「Using Resources」があります。

[ResourceBundle("icons")] 

リソースバンドルを追加するだけでなく、コンパイル時にリソースパスを含める必要があります。詳細については、Adobeのドキュメントを参照してください。

関連する問題