簡體   English   中英

如何將變量傳遞給新孩子? [flash AS3]

[英]How do I pass variables to new children? [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變量。 這似乎是硬編碼的變量可以被傳遞,雖然這樣的時刻我有阿爾法0的親屬影片剪輯內方,它的x位置決定arrivalType的值在構造函數中,但這肯定不能很好的做法,是有更好的方法嗎?

我認為您只想修改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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM