Actionscript 3 如何将字符串转换为对象名。as3 公共类颜色库{ 私有变量allColorCodes:Object; 公共函数库(){ init(); } 私有函数init(){ _所有颜色代码={ “黑色”:“000000”, “白色”:“FFFFFF”, “黄色”:“000000” } } 公共函数exchangeColor(颜色:字符串){ var colorArray:Array=colors.split(','); for(变量i:int=0;i

Actionscript 3 如何将字符串转换为对象名。as3 公共类颜色库{ 私有变量allColorCodes:Object; 公共函数库(){ init(); } 私有函数init(){ _所有颜色代码={ “黑色”:“000000”, “白色”:“FFFFFF”, “黄色”:“000000” } } 公共函数exchangeColor(颜色:字符串){ var colorArray:Array=colors.split(','); for(变量i:int=0;i,actionscript-3,Actionscript 3,知道如何将字符串转换为实例名吗?非常感谢~!在这里挣扎你已经在那里找到了一个对象,所以你已经可以走了: \u所有颜色代码。黑色。。等 考虑到\u allColorCodes是私有的,您可以做一个非常好的小getter,如下所示: public class ColorLibrary { private var _allColorCodes:Object; public function ColorLibrary() { init(); } pri

知道如何将字符串转换为实例名吗?非常感谢~!在这里挣扎

你已经在那里找到了一个对象,所以你已经可以走了:

\u所有颜色代码。黑色
。。等

考虑到
\u allColorCodes
私有的
,您可以做一个非常好的小getter,如下所示:

public class ColorLibrary {
    private var _allColorCodes:Object;

    public function ColorLibrary() {
        init();
    }

    private function init(){
        _allColorCodes = {
            'black'     :   '000000',
            'white'     :   'FFFFFF',
            'yellow'    :   '000000'
        }
    }

    public function exchangeColor(colors:String){
        var colorArray:Array = colors.split(',');
        for ( var i:int = 0; i < colorArray.length; i++ ) {
            _allColorCodes.getDefinitionByName(colorArray[i]);
        }

    }

}
然后就有:

public function get colorCode():Object
{ 
    return _allColorCodes; 
}
话虽如此,我要做的是将所有这些内容存储在类中,比如
ColorCodes
,比如:

trace(colorCode.black);
trace(colorCode.yellow);
然后通过以下方式访问它们:

package
{
    public class ColorCodes
    {
        public static const BLACK:uint = 0x000000;
        public static const RED:uint = 0xFF0000;
        public static const BLUE:uint = 0x0000FF;
        public static const GREEN:uint = 0x00FF00;
        public static const WHITE:uint = 0xFFFFFF;
    }
}
您可以做的更高级的事情是使用Proxy和flash_Proxy来覆盖该方法。这意味着您可以直接使用ColorLibrary.color:

trace(
    ColorCodes.RED
);

对评论的答复:

好的,这里不需要使用getDefinitionByName,只需使用括号通过解析字符串来访问对象的值

例如:

package
{
    import flash.utils.Proxy;
    import flash.utils.flash_proxy;

    public class ColorLibrary
    {
        private var _allColorCodes:Object;

        public function ColorLibrary()
        {
            _allColorCodes = {
                'black'     :   '000000',
                'white'     :   'FFFFFF',
                'yellow'    :   '000000'
            }
        }

        override flash_proxy function getProperty(name:*)*
        {
            return _allColorCodes[name];
        }
    }
}
为您的
exchangeColor()
函数尝试以下操作:

var object:Object = {
    something: 2,
    anotherThing: "something awesome"
};

trace(object["something"]); // same as object.something
trace(object["anotherThing"]); // same as object.anotherThing

您已经有了一个对象,因此您可以:

\u所有颜色代码。黑色
。。等

考虑到
\u allColorCodes
私有的
,您可以做一个非常好的小getter,如下所示:

public class ColorLibrary {
    private var _allColorCodes:Object;

    public function ColorLibrary() {
        init();
    }

    private function init(){
        _allColorCodes = {
            'black'     :   '000000',
            'white'     :   'FFFFFF',
            'yellow'    :   '000000'
        }
    }

    public function exchangeColor(colors:String){
        var colorArray:Array = colors.split(',');
        for ( var i:int = 0; i < colorArray.length; i++ ) {
            _allColorCodes.getDefinitionByName(colorArray[i]);
        }

    }

}
然后就有:

public function get colorCode():Object
{ 
    return _allColorCodes; 
}
话虽如此,我要做的是将所有这些内容存储在类中,比如
ColorCodes
,比如:

trace(colorCode.black);
trace(colorCode.yellow);
然后通过以下方式访问它们:

package
{
    public class ColorCodes
    {
        public static const BLACK:uint = 0x000000;
        public static const RED:uint = 0xFF0000;
        public static const BLUE:uint = 0x0000FF;
        public static const GREEN:uint = 0x00FF00;
        public static const WHITE:uint = 0xFFFFFF;
    }
}
您可以做的更高级的事情是使用Proxy和flash_Proxy来覆盖该方法。这意味着您可以直接使用ColorLibrary.color:

trace(
    ColorCodes.RED
);

对评论的答复:

好的,这里不需要使用getDefinitionByName,只需使用括号通过解析字符串来访问对象的值

例如:

package
{
    import flash.utils.Proxy;
    import flash.utils.flash_proxy;

    public class ColorLibrary
    {
        private var _allColorCodes:Object;

        public function ColorLibrary()
        {
            _allColorCodes = {
                'black'     :   '000000',
                'white'     :   'FFFFFF',
                'yellow'    :   '000000'
            }
        }

        override flash_proxy function getProperty(name:*)*
        {
            return _allColorCodes[name];
        }
    }
}
为您的
exchangeColor()
函数尝试以下操作:

var object:Object = {
    something: 2,
    anotherThing: "something awesome"
};

trace(object["something"]); // same as object.something
trace(object["anotherThing"]); // same as object.anotherThing

我不明白您为什么要这样做,但这里有一个函数,它传递颜色列表(字符串)并返回十六进制代码(数组)。如果一种颜色不存在,您将在阵列中丢失。我建议使用
ColorList.RED
或至少
ColorManager.getColor(“RED”)

var colorList:Array=getColorList(“黑色,黄色”);
公共函数getColorList(颜色:字符串):数组
{
变量结果:数组=新数组();
var colorArray:Array=colors.split(',');
for(变量i:int=0;i
我不明白为什么要这样做,但这里有一个函数,它传递颜色列表(字符串)并返回十六进制代码(数组)。如果一种颜色不存在,您将在阵列中丢失。我建议使用
ColorList.RED
或至少
ColorManager.getColor(“RED”)

var colorList:Array=getColorList(“黑色,黄色”);
公共函数getColorList(颜色:字符串):数组
{
变量结果:数组=新数组();
var colorArray:Array=colors.split(',');
for(变量i:int=0;i
你想用你的函数(exchangeColor)实现什么?你想用你的函数(exchangeColor)实现什么?谢谢你的快速回复,但我的情况是我有一系列颜色var color:string='黑、白、黄';我使用split转换数组,然后使用这个数组查找对象并返回十六进制数。我想这样做_allColorCodes.colorArray[i],但这行不通。有什么想法吗?哇,这真是太奇妙了,第一次看到这个。很好,我会试试的。非常感谢您的快速回复,但我的情况是我有一系列颜色var color:string='黑、白、黄';我使用split转换数组,然后使用这个数组查找对象并返回十六进制数。我想这样做_allColorCodes.colorArray[i],但这行不通。有什么想法吗?哇,这真是太奇妙了,第一次看到这个。很好,我会试试的。非常感谢非常感谢,你的解决方案就是我要找的,而且效果很好。我想投票支持你的解决方案,但我的声誉不好:(再次感谢你的帮助!哇,非常感谢,你的解决方案就是我想要的,而且效果很好。我想投票支持你的解决方案,但我的声誉不好:(再次感谢你的帮助!