0

質問 1: 追加されたすべての MC の名前を取得しようとすると、最後に追加された MC の名前が取得されます。なぜこうなった?私は初心者レベルです。しばらくインターネットで検索しましたが、解決策が見つかりません。[解決済み]

質問 2: 私は 4 つの位置を持っています。どのようにすべてのアイテム (4 つの vruchtItem) をそれらの位置の 1 つにランダムに配置するか (位置 posUp で上訴、posRight でバナンなど)、次に他の位置をランダムに取得します。

public function vruchtenItemKruis(e:Event):void
{       
    var vruchtArray:Array = new Array("Aardbei", "Appel", "Banaan", "Sinaasappel");

    var i:Number= 0;            
    while (i < vruchtArray.length)
    {   

        var vrucht = vruchtArray[i];                

        switch(vrucht)
        {
            case ("Aardbei"):

                vruchtItem = new Aardbei(kruisWeg.width / 2, 50, 50, 65);

                break;

            case ("Appel"):

                vruchtItem = new Appel(kruisWeg.width / 2,  kruisWeg.height - 50, 50, 60);

                break;

            case ("Banaan"):

                vruchtItem = new Banaan(50, kruisWeg.height / 2, 60, 40);

                break;

            case ("Sinaasappel"):

                vruchtItem = new Sinaasappel(kruisWeg.width - 50, kruisWeg.height / 2, 70, 45);

                break;  
        }

        removeEventListener(Event.ADDED_TO_STAGE, vruchtenItemKruis);

        i++;


        addChild(vruchtItem);
        vruchtItem.name = vrucht;

        trace(vruchtItem.name);
        vruchtItem.buttonMode = true;

        vruchtItem.addEventListener(MouseEvent.MOUSE_OVER, vruchtNaam); 

    }
}

public function randomPosXY(xPos:int, yPos:int):int
{
    xPosition = xPos;
    yPosition = yPos;

    // Select an random positie van 4
    var vruchtPos:Array = new Array("posUp",  "posRight", "posDown", "posLeft");
    var randomPos:int =  Math.floor(Math.random() * vruchtPos.length);
    var posXY:String = vruchtPos[randomPos];

    //trace ("random xy started");

    var tot:Number;

    if(posXY)
    {

        while (tot < vruchtPos.length) {
            var itemPos = vruchtPos[tot];

            switch(posXY)
            {
                case ("posUp"):

                    xPosition = kruisWeg.width / 2;
                    yPosition = 0 + 15;

                    break;

                case ("posDown"):

                    xPosition = kruisWeg.width / 2;
                    yPosition = kruisWeg.height - 15;   

                    break;

                case ("posLeft"):

                    xPosition = 0 + 15;
                    yPosition = kruisWeg.height / 2;

                    break;

                case ("posRight"):

                    xPosition = kruisWeg.width - 15;
                    yPosition = kruisWeg.height / 2;

                    break;
            }
        }       
    }


    return xPosition;
    //return yPosition;
}
4

2 に答える 2

0

ポジションリストを事前に設定してから、各MCを作成するときに、リストからポジションを取得して削除します。次のMCを追加すると、ポジションは3つだけになり、ランダムな1つが削除されます。等々。

于 2012-06-26T02:37:02.337 に答える
0

ランダムポジショニング機能に対して、このようなことができます。これは、4 つのアセットが関数に渡す親コンテナーの唯一の子であると仮定しています。アセットの配列と同じように機能させるのは非常に簡単です。

public function randomPosXY(itemParent:DisplayObjectContainer):void
{

    var vruchtPos:Array = new Array("posUp",  "posRight", "posDown", "posLeft");

    var xPosition:Number;
    var yPosition:Number;

    var i:int = itemParent.numChildren;
    while (i--) {
    var randomPos:int =  Math.round(Math.random() * (vruchtPos.length - 1));
    switch(vruchtPos[randomPos]) {
        case ("posUp"):
                xPosition = kruisWeg.width / 2;
        yPosition = 0 + 15;

                break;

            case ("posDown"):

                xPosition = kruisWeg.width / 2;
            yPosition = kruisWeg.height - 15;   
            break;

        case ("posLeft"):

            xPosition = 0 + 15;
            yPosition = kruisWeg.height / 2;

            break;

        case ("posRight"):

        xPosition = kruisWeg.width - 15;
        yPosition = kruisWeg.height / 2;
            break;
    }

    //assign position to current item
    itemParent.getChildAt(i).x = xPosition;
    itemParent.getChildAt(i).y = yPosition;

    //remove the used position from the array
    vruchtPos.splice(randomPos, 1);
    }

}
于 2012-06-27T21:48:25.457 に答える