字典()as3

Dus*_*sty 0 flash actionscript-3

我正在使用字典变量来匹配drop和drag exercice.

var dict = new Dictionary ();
dict[box_a]=s1;
dict[box_b]=s2;
dict[box_c]=s3;
dict[box_d]=s4;
Run Code Online (Sandbox Code Playgroud)

问题1:最后我想检查box_a ==是否与s1等等......我该怎么办呢

for each( var item  in dict)
    {   item.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
        item.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
    if(item==????)
// what do i have to put instead of ???
    hits=hits+1;
Run Code Online (Sandbox Code Playgroud)

问题2:我想box_d也接受s3如果我做dict [box_d] = s4我该怎么做?和dict [box_d] = s3; 它不会工作,因为它与最后一个相等.:( 谢谢 !!

Luc*_*hez 5

介绍

Dictionary是键/值的集合,就像一个表:

+------+--------+
| key1 | value1 |
+------+--------+
| key2 | value2 |
+------+--------+
| key3 | value3 |
+------+--------+
| key4 | value4 |
+------+--------+
Run Code Online (Sandbox Code Playgroud)

要访问这些值,您必须使用键,即:dict[key2]返回value2

答案1:

你不能直接访问密钥,买你可以用一个for ()语句来访问它们,所以这个:

for (var key:* in dict) {
    trace('dict[' + key + '] = ' + dict[key]);
}
Run Code Online (Sandbox Code Playgroud)

将输出:

dict[key1] = value1
dict[key2] = value2
dict[key3] = value3
dict[key4] = value4
Run Code Online (Sandbox Code Playgroud)

您正在使用for each ()声明.使用该特定语句,您将获得另一个结果,因为您正在迭代值而不是键,因此:

for each (var value:* in dict) {
    trace(value);
}
Run Code Online (Sandbox Code Playgroud)

将输出:

value1
value2
value3
value4
Run Code Online (Sandbox Code Playgroud)

因此,如果您想使用密钥检查某些内容,则必须使用该for (key in dict)表单.

答案2:

我建议你使用这样的数组:

dict[box_a] = [s1];
dict[box_b] = [s2];
dict[box_c] = [s3];
dict[box_d] = [s3, s4];
Run Code Online (Sandbox Code Playgroud)

然后将值作为数组访问并检查所有值:

for (var key:* in dict) {
    var values:Array = dict[key];
    for each (var value:* in values) {
        // do what you want with s1, s2, s3, etc
    }
}
Run Code Online (Sandbox Code Playgroud)