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],但这行不通。有什么想法吗?哇,这真是太奇妙了,第一次看到这个。很好,我会试试的。非常感谢非常感谢,你的解决方案就是我要找的,而且效果很好。我想投票支持你的解决方案,但我的声誉不好:(再次感谢你的帮助!哇,非常感谢,你的解决方案就是我想要的,而且效果很好。我想投票支持你的解决方案,但我的声誉不好:(再次感谢你的帮助!