Динамический выбор статического встроенного изображения? - PullRequest
2 голосов
/ 25 февраля 2012

Вот моя текущая ситуация:

У меня есть изображения, встроенные в класс.

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. * класс выбрать. Буду очень признателен за любую помощь или подсказку.

1 Ответ

3 голосов
/ 25 февраля 2012

Удалить точку после имени класса.Должно работать следующее:

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