为什么我的 MC 会获得上次添加的 MC 的名称?在这种情况下,西纳阿萨佩尔



>问题1:当我尝试获取每个添加的mc的名称时,我得到了最后添加的mc的名称。 为什么会这样? 我处于初学者水平。我在互联网上搜索了一段时间,但找不到解决方案。[已解决]

问题 2:我有 4 个位置,下次他们随机获得其他位置时,如何将每个项目(4 个 vruchtItem)随机放在其中一个位置,例如(位置 posUp 的 appel 、posRight 的 banaan 等)。

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;
}

你可以为你的随机定位函数做这样的事情。 这假设您的四个资产是您传递给函数的父容器的唯一子项,非常容易让它以相同的方式处理您的资产数组:

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);
    }
}

预先设置您的位置列表,然后在创建每个 MC 时,从列表中抓取一个位置并将其删除。当您添加下一个 MC 时,将只有 3 个位置,并随机删除一个位置。等等。

最新更新