2012-02-25 79 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