2013-02-12 55 views
0

該代碼很好地說明了這個問題,我將所有不相關的東西都刪除了。如何將變量傳遞給新的孩子? [flash AS3]

創建2-4親屬當比賽開始

function createInitialKinsmen() 
{ 
    for (var k:int = 1; k < 3 + Math.round(Math.random() * 2; k++) 
    { 
     if (k == 1) 
     { 
      createKinsmen(0); 
      trace ("player"); 
     } 
     else 
     { 
      createKinsmen(1); 
      trace ("starting kinsmen"); 
     } 
    } 
} 

男性親屬創建功能

function createKinsmen(arrivalTypeVar:int) 
{ 
    var newKinsmen = new kinsmen; 
    listPanel.kinsmenDivider.addChild(newKinsmen); 
    totalKinsmen++; 
    totalKinsmenAlive++; 
    newKinsmen.name = "kinsmen" + totalKinsmen; 
    newKinsmen.arrivalType = arrivalTypeVar; 
} 

男性親屬類

public class kinsmen extends MovieClip 
{ 
    var arrivalType:int; 
    function kinsmen() 
    { 
     trace(this.name); 
     if (this.arrivalType = 0) 
     { 
      trace("player"); 
     } 
     if (this.arrivalType = 1) 
     { 
      trace("starting kinsmen"); 
     } 
    } 
} 

輸出應該說:

kinsmen1 
player 
player 
kinsmen2 
starting kinsmen 
starting kinsmen 
kinsmen3 
starting kinsmen 
starting kinsmen 
kinsmen4 
starting kinsmen 
starting kinsmen 

但是相反說:

kinsmen1 
player 
player 
kinsmen2 
player 
starting kinsmen 
kinsmen3 
player 
starting kinsmen 
kinsmen4 
player 
starting kinsmen 

這意味着,arrivalType變量沒有被通過。這似乎是硬編碼的變量可以通過,因此,此刻我有一個與alpha 0在親族動畫片內的正方形,它的x位置決定了arrivalType在構造函數中的值,但這肯定不是好的做法,有沒有更好的方法來做到這一點?

+1

TR在你的條件下將'='改爲'==' – www0z0k 2013-02-12 06:57:11

+0

@ www0z0k很好,這將是一個問題......我仍然認爲他需要將args傳遞給他的構造函數。他的構造函數邏輯執行,然後他設置所述邏輯依賴的變量。 – 2013-02-12 20:32:56

回答

1

我想你只是想修改kinsmen類的構造函數來接受arrivalTypename的參數。

你目前正在做的是構造一個新的kinsmen對象,然後在該對象上設置arrivalTypename。因此,構造函數代碼運行時,該arrivalTypeint的默認值是0

修改你的構造函數,這樣在kinsmen類:

function kinsmen(arrivalType:int, name:String) 
{ 
    this.name = name; 
    this.arrivalType = arrivalType; 
    if (this.arrivalType == 0) 
    { 
     trace("player"); 
    } 
    if (this.arrivalType == 1) 
    { 
     trace("starting kinsmen"); 
    } 
} 

和修改createKinsmen()功能,使其通過在用於arrivalType給構造方法的值,而不是設置arrivalTypename對象之後被創建:

function createKinsmen(arrivalTypeVar:int) 
{ 
    totalKinsmen++; 
    totalKinsmenAlive++; 
    var newKinsmen = new kinsmen(arrivalTypeVar, "kinsmen" + totalKinsmen); 
    listPanel.kinsmenDivider.addChild(newKinsmen); 
} 
+0

很好,謝謝! – Ashton 2013-02-12 20:48:55

+0

@Ashton很高興它的工作,一定要做出www0z0k建議的變化(在你的問題的意見)。我將編輯我的答案以包含它們(將=更改爲==)。 – 2013-02-12 21:17:35