jao*_*jao 2 apache-flex dictionary actionscript-3
有没有办法在Flex应用程序中使用ActionScript实现字典.例如,我想存储这样的东西.
public var orientation:ArrayCollection = new ArrayCollection([
{a: new Direction('0','0','b','0')},
{b: new Direction('a','c','0','h')},
{c: new Direction('0','b','d','e')},
{d: new Direction('c','0','0','0')},
{e: new Direction('f','g','0','c')},
{f: new Direction('0','0','e','0')},
{g: new Direction('0','0','0','e')},
{h: new Direction('0','b','0','i')},
{i: new Direction('l','h','j','m')},
{j: new Direction('i','k','0','0')},
{k: new Direction('0','0','0','j')},
{l: new Direction('0','0','i','0')},
{m: new Direction('0','i','0','0')}
]);
Run Code Online (Sandbox Code Playgroud)
所以,而不是
orientation.getItemAt(3).north
Run Code Online (Sandbox Code Playgroud)
我可以去做类似的事情
orientation.getItemAt('d')north
Run Code Online (Sandbox Code Playgroud)
没有得到以下错误
Implicit coercion of a value of type String to an unrelated type int.
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
这是一个非常奇怪的结构,你正在使用.为什么不直接使用Dictionary?
var orientation:Dictionary = new Dictionary();
orientation["a"] = new Direction('0','0','b','0');
orientation["b"] = new Direction('a','c','0','h');
// etc.
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过键直接访问该值 - trace(orientation["a"]).
如果您真的必须使用当前结构,则可以创建自定义函数以按您希望的方式访问项目.这样的东西应该工作(未经测试):
function getItemByKey(var array:ArrayCollection, var key:String):* {
for (var i:int = 0; i < array.length; i++) {
var item:* = array[i];
if (item[key]) return item;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6206 次 |
| 最近记录: |