2012-02-25 122 views
2

這是我目前的情況:動態選擇靜態嵌入圖像?

我有圖像嵌入在一個類。

package system 
{ 
    public class Embedded 
    { 
     [Embed(source="assets/srcorangeboxidle.png")] 
     public static const btnSrcOrangeBoxIdle:Class; 

     [Embed(source="assets/srcorangeboxpressed.png")] 
     public static const btnSrcOrangeBoxPressed:Class; 

     [Embed(source="assets/hl1idle.png")] 
     public static const btnHL1Idle:Class; 

     [Embed(source="assets/hl1pressed.png")] 
     public static const btnHL1Pressed:Class; 

     public function Embedded(){} 
    } 
} 

現在在我的主MXML文件中,我有以下內容。

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

    <fx:Script> 
     <![CDATA[ 
      import system.Embedded; 

      protected function toggleButtonState(target:Object,pressed:Boolean=false):void 
      { 
       var baseImageName:String = target.id.toString(); 
       if (!pressed) { 
        target.source = Embedded.[baseImageName+"Idle"]; 
       } else { 
        target.source = Embedded.[baseImageName+"Pressed"]; 
       } 
      } 
     ]]> 
    </fx:Script> 
    <s:Image id="btnSrcOrangeBox" x="107" y="245" source="{Embedded.btnSrcOrangeBoxIdle}" mouseDown="toggleButtonState(btnSrcOrangeBox,true)" mouseUp="toggleButtonState(btnSrcOrangeBox,false)"/> 
    <s:Image id="btnHL1" x="107" y="355" source="{Embedded.btnHL1Idle}" mouseDown="toggleButtonState(btnHL1,true)" mouseUp="toggleButtonState(btnHL1,false)"/> 
</s:Application> 

正如你所看到的,上面的代碼似乎沒有辦法。我只是想動態地選擇其中的Embedded。*類來選擇。任何幫助或提示將不勝感激。

回答

3

刪除類名後面的點。以下應該工作:

target.source = Embedded[baseImageName + "Idle"]; 
+0

太棒了!正是我需要的!如果問題不是太多,你可以發佈文檔頁面說明這一點嗎?我無法搜索關於這種事情的關鍵字。 :) – Propeller 2012-02-25 20:10:26

+0

我不確定你可以在Flex文檔中找到這個... – 2012-02-25 21:08:10

+0

但是你是如何知道如何去做的? – Propeller 2012-02-26 11:40:10