2012-02-21 23 views
1

アイコンを使ってLinkBut​​tonを動的に作成する必要があります。ファイル(アイコン)の名前は、images/icon_0.png,images/icon_1.png、... images/icon_1000.pngの形式です。しかし、私はこのボタンの特定のイメージを知らない。私はアイコンのインデックスしか知りません。埋め込み画像を動的に作成

ノー成功し、これを試してみました:

var path:String = "@Embed(source='images/icon_" + imageindex + ".png')"; 
myButton.setStyle("icon", path); 

を私はランタイムエラーを取得:動作しないこと

Type Coercion failed: 
*cannot convert "@Embed(source='images/icons/icon_427.png')" to Class* 

答えて

1

は申し訳ありません。

imageindexはコンパイル時の変数なので、タグを埋め込むとエラーメッセージが表示されます。

ボタンをオーバーライドして、 'iconPath'のような追加プロパティを追加しないと、クラスオブジェクトではなく文字列パスが必要になります。この方法で、埋め込みを使わなくてもicon.source = iconPathを(拡張ボタンの内側で)手動で設定することができます。

0

plsこれを試してください。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="application1_creationCompleteHandler(event)" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
<fx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 
     [Embed(source='icon_1.png')] 
     [Bindable] 
     private var linkButtonIcon:Class; 


     protected function application1_creationCompleteHandler(event:FlexEvent):void 
     { 
      lnkbutton.setStyle("icon",linkButtonIcon); 

     } 

     protected function button1_clickHandler(event:MouseEvent):void 
     { 

      [Embed(source='icon_2.png')] 
      var linkButtonIcon2:Class; 
      lnkbutton.setStyle("icon",linkButtonIcon2); 

     } 

    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

<s:VGroup> 
    <mx:LinkButton label="test" id="lnkbutton"/> 
    <s:Button label="change Icon" click="button1_clickHandler(event)"/> 
</s:VGroup> 

</s:Application> 
+0

埋め込みタグ内にパスを動的に設定したいとします。申し訳ありませんが、私はあなたがそれを使用して参照してください。多分それは動作しないため... –

関連する問題