您好我已经开始从一本书中学习AS3并找到了一些我不理解的东西。
Ellipse(_board[row][column]).fill = getFill(row, column);
_board
是Ellipse
类型的二维数组,所以我只是不明白为什么Ellipse(Ellipse object)
在没有它的情况下显然有效,或者我没有看到任何变化省略了它。答案 0 :(得分:3)
Ellipse(_board[row][column])
是type cast Type(object)
因为您可以将任何内容推送到Array
,编译器不知道Array
中存储了哪种对象。因此,如果您将对象从Array
恢复为正确的类型,则抛出对象是一种很好的方式。
这有几个好处:
答案 1 :(得分:0)
_board是一个首先用数组填充的多维数组。 在BoardDisplay.mxml
中(Hello!Flex 4:第3章.Hello Spark:原语,comp ...> FXG和MXML图形构建游戏...... - Pg.80),
<Graphic version="1.0" viewHeight="601" viewWidth="701"
xmlns=" library://ns. adobe. com/flex/spark"
xmlns:fx=" http://ns. adobe. com/mxml/2009"
xmlns:mx=" library://ns. adobe. com/flex/halo"
initialize="createBoard()"
click=" clickHandler(event)">
初始化调用createBoard()。
private function createBoard():void {
newGame();
_board = new Array(6);
for (var row:int = 0; row < 6; row++) {
_board[row] = new Array(7);
for (var col:int = 0; col < 7; col++) {
_board[row][col] = addEllipse(row, col); //Magic Happens!
}
}
}
addEllipse返回Ellipse到_board
中的每个条目private function addEllipse(row:int, col:int):Ellipse {
var ellipse:Ellipse = new Ellipse();
ellipse.x = 4 + col*100;
ellipse.y = 5 + row*100;
ellipse.width = 90;
ellipse.height = 90;
ellipse.fill = getFill(row,col); // Magic Found !
ellipse.stroke = new SolidColorStroke(0x000000, 1, 1.0, false,"normal", null, "miter", 4);
boardGroup.addElement(ellipse);
return ellipse;
}
作者将其表示为maxmx,但并不需要因为所有条目都是Ellipse类型所以
Ellipse(_board[row][column]).fill = getFill(row, column);
可以作为
_board[row][column].fill = getFill(row, column);