这在AS3中意味着什么?

时间:2010-06-04 15:00:04

标签: actionscript-3 action

您好我已经开始从一本书中学习AS3并找到了一些我不理解的东西。

Ellipse(_board[row][column]).fill = getFill(row, column);
  • _boardEllipse类型的二维数组,所以我只是不明白为什么Ellipse(Ellipse object)在没有它的情况下显然有效,或者我没有看到任何变化省略了它。

2 个答案:

答案 0 :(得分:3)

Ellipse(_board[row][column])type cast Type(object) 因为您可以将任何内容推送到Array,编译器不知道Array中存储了哪种对象。因此,如果您将对象从Array恢复为正确的类型,则抛出对象是一种很好的方式。

这有几个好处:

  • 如果这样的对象不是您期望的类型或null,您将知道何时进行类型转换而不是稍后在某个地方收到错误
  • 如果您明确了解类型
  • ,代码执行速度会快一些
  • 如果你使用一个好的IDE,它可以在知道类型
  • 时为你提供自动完成功能

答案 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);