flex
2012-02-21 63 views 1 likes 
1

我需要動態地創建帶圖標的LinkBut​​ton。文件(圖標)的名稱格式爲images/icon_0.pngimages/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',它將期望一個字符串路徑而不是一個Class對象。這樣你可以手動設置(在擴展按鈕內)icon.source = iconPath而不必使用嵌入。

0

請試試這個。

<?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

他希望在嵌入標籤內動態設置路徑。對不起,但我不會看到你使用它。也許是因爲它不工作... – 2012-02-21 09:53:43

相關問題