2010-06-04 235 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);