我正在尝试将其转换为AS3
$display = array();
$map = array(array(0, 0, 1, 0, 1, 1, 2, 1 ,0) , array(0, 2, 1, 0, 1, 0) ...etc
foreach ($x as $keyX => $valX)
{
foreach ($y as $keyY => $valY)
{
if (isset($map[$valX][$valY]))
{
$display[$keyX][$keyY] = $map[$valX][$valY];
}
else
{
$display[$keyX][$keyY] = "20";
}
}
}
那么如何从PHP到as3
我不知道如何在ActionScript中结束这样一组复杂的对象,但代码的字面翻译将是这样的:
var display:Object = {};
for (var keyX in objX) {
display[keyX] = {}; // initialize new "row"
for (var keyY in objY) {
if (map[objX[keyX]][objY[keyY]] != null) {
display[keyX][keyY] = (map[objX[keyX]][objY[keyY]]);
} else {
display[keyX][keyY] = "20";
}
}
}
/* LEGEND
keyX = $keyX; objX = $x
keyY = $keyY; objY = $y
display = $display; map = $map
*/
由于PHP和AS3在动态对象方面有不同的行为,因此必须在AS3中将每个"行"初始化为一个新对象,否则会出现运行时错误。
这个故事的要点是:AS3没有PHP的foreach (array_expression as $key => $value)
结构,但是for...in
是一个足够的替代品。