0

所以我得到了二维数组作为简单的地图编辑器。
地图的每个图块/单元格的默认值为 0 和一个 mouseClick 事件侦听器。

        for (var i:int =0; i < _numRow; i++)
        {
            _map[i] = new Array  ;
            for (var j:int = 0; j< _numCol; j++)
            {
                //I removed some content
                _tile.val = 0;
                _tile.addEventListener(MouseEvent.CLICK,onMouseClick);

                addChild(_tile);
                _map[i][j] = _tile.val;

            }
        }

编辑:现在我单击一个图块/单元格,这会发生。问题已评论。

private function onMouseClick(e:MouseEvent)
    {

        if (e.currentTarget.val == 0)
        {
            e.currentTarget.val = 1;
            trace(e.currentTarget.val); // trace the output I want, which is 1 of each tile I clicked.     

            e.currentTarget.transform.colorTransform = new ColorTransform(1,0,0);
            trace(_map[0]); // now I check here if _map will be change since _map[x][x] = _tile.val, it should output the change I made above. Like [[1,1,1,0,1,0...]]
        }

但是没有输出没有改变。_map 仍然 = [[0,0,0,0,0,0,0...]]
正如我所说,也许我在这里遗漏了简单的东西,但我不知道是什么。如果这仍然不清楚,请告诉我,我会进一步解释。多谢你们。

4

1 回答 1

1

--草草原始答案--

您想要实现的目标可以通过两种方式完成:

  • 将 _tile 存储在 _map[i][j] 中
  • 或者,将 {"num": 0} 存储在 _tile.val 中并将 _map[i][j] 分配给 _tile.val。然后,在从 _map 获取值时,使用 _map[i][j].num 并将 _tile 中的值更新为 _tile.val.num = 1。

您当前面临的问题可以用图形表示为:

_map[i][j]---|
             |  |----|
             |->|  0 |
_tile.val----|  |----|

但是,将 1 分配给 _tile.val 后,结果将类似于:

_map[i][j]-->|-----|
             |  0  |
             |-----|

_tile.val--->|-----|
             |  1  |
             |-----|

希望能帮助到你。

于 2013-08-12T20:24:20.503 回答