2010-06-04 183 views
1

你好,我已经开始从一本书学习AS3,发现了一些我不明白的东西。这在AS3中意味着什么?

Ellipse(_board[row][column]).fill = getFill(row, column); 
  • _boardEllipse类型的二维数组,所以我只是不明白为什么是用Ellipse(Ellipse object)时,它显然没有工作,或者当我忽略它,我还没有看到任何改变。
+0

当你忽略什么?参考_board?对Ellipse的引用? – 2010-06-04 15:09:26

+0

是的参考椭圆,因为我不知道为什么它是用这种方式... – Jarek 2010-06-04 15:48:51

回答

3

Ellipse(_board[row][column])type castType(object) 因为你可以把任何东西到Array编译器不知道什么样的对象都存储在Array内。因此,如果您将它们从Array恢复为正确的类型,那么投射对象是一种很好的风格。

这样做有几个好处:

  • 如果这样的目标是你所期望的类型或空的没有,你会知道,当你进行类型转换,而不是得到一个错误,后来某个遥远的地方
  • 代码执行如果你是明确对各类
  • ,如果你使用一个很好的IDE它可以为您提供自动完成,当它知道类型
+0

感谢您的解释,AS3铸造语法困惑我一点 – Jarek 2010-06-04 16:03:33

0

_board是一个多维的有点快阵列首先填充阵列。 在BoardDisplay.mxml

(你好的Flex 4:第3章你好星火:元,补偿...> FXG和MXML图形 - 建设一个游戏.. - 第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返回椭圆在_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(_board[row][column]).fill = getFill(row, column); 

可以作为

_board[row][column].fill = getFill(row, column);