我有一个AssetManager单例,我用它作为各种数据提供者。
public static var L1_1:Object = {pic:'../Assets/images/test.jpg', answer:'someAnswer', pool: 'somePool'}
所以我试图在另一个类中使用它来获取一个图像类的路径,该图像类将字符串作为一个参数,如下所示:
var image:Image = new Image(AssetManager.L1_1.pic , 540, 540);
这很好用,但是,我需要增加上面的第二个“1”以使其动态,所以我可以说例如,
var image:Image = new Image(AssetManager.L1_5.pic , 540, 540);
我尝试过这样的事情,传递一个imageNum属性但无法对其进行排序。
var tempObj:Object = ['AssetManager.L' + imageNum + '_' + imageNum + '.pic'];
trace(tempObj)
有更简单的方法吗?谢谢!
答案 0 :(得分:0)
我现在通过简单地使用这样的数组来修复:
public static var L1_1:Array = new Array();
L1_1[0] = ['../Assets/images/test.jpg', "apple", "appletakeout"];
用以下方式调用它:
image = new Image(AssetManager.L1_1[0][imageNum], 540, 540);
它有效,只是感觉有点乱。如果有更有效的方法来做到这一点,我很乐意听到。感谢。
答案 1 :(得分:0)
可以使用括号语法访问AS3中的静态和公共属性。
以下是一个例子:
public static var L1_1:Object = {pic:'../Assets/images/test.jpg', answer:'someAnswer', pool: 'somePool'};
var imageNum:int = 1;
var propertyName:String = "L1"+ "_" + imageNum.toString();
var tempObj:Object = AssetManager[propertyName];
var pathToPic:String = tempObj.pic;
trace(pathToPic);
上面的示例应该追溯../Assets/images/test.jpg
但是,请注意括号语法比点语法慢,并且在编译时不进行类型检查。
我希望这会有所帮助。