动作脚本3.0。如何使用随机位置添加随机子项和项目

时间:2015-03-29 13:05:43

标签: actionscript-3 flash random position addchild

在我的Flash游戏中有9个可能的房间。每个房间都有3个固定位置,可以添加物品。每个房间还有3个项目,但是应该总是在不同的位置添加项目。

例如,如果此处有3个位置(位置):A(x=1;y=1) B(x=2;y=2) C(x=3;y=3)Item1 Item2 Item3,有时{{1应该添加到Item1,有时添加到A(x=1;y=1)等等,应该是随机添加项目位置的机会。


在这张图片中只显示了3个房间,但总共有9个房间。如您所见,所有房间的物品位置都不同,但每个房间都有固定,而物品(蓝色,粉红色,黄色)应该有更改位置的能力每次它都被添加到舞台上。

random rooms

最佳表现是什么?

声明如下:

B(x=2;y=2)

因此,var room1:Room1 = new Room1(); var item1:Item1 = new Item1(); var item2:Item2 = new Item2(); var item3:Item3 = new Item3(); var room2:Room2 = new Room2(); var item4:Item4 = new Item4(); var item5:Item5 = new Item5(); var item6:Item6 = new Item6(); .... 应添加Room1 Item1Item2Item3应添加Room2 Item4Item5等等。

首先,我需要随机选择9个房间中的1个。它应该是这样的吗?

Item6

稍后我需要为每个房间指定addChild(Room+randNumber)

if

但是在这种情况下如何为每个房间设置3个静态x,y位置并为每个项目随机设置它?

1 个答案:

答案 0 :(得分:0)

要随机选择1个房间,请使用以下代码:

var roomID:int = Math.round(Math.random() * 8 + 1);
var room:MovieClip = this["room" + roomID];
addChild(room);

roomID是1到9之间的随机数。 room是指Room1,Room2,... Room9的链接。

if (room is Room1) // or if (roomID == 1)
{
    addChild(item1);
    addChild(item2);
    addChild(item3);
}

下一步。我们设置x和y位置。你在哪里存储x和y位置? 你说:“例如,如果这里有3个位置(位置):A(x = 1; y = 1)B(x = 2; y = 2)C(x = 3; y = 3)”。什么是A,B,C? Point类的实例?

当您将三个项目添加到舞台时,请调用我的功能。

    ...
    addChild(item1);
    addChild(item2);
    addChild(item3);

    var A:Point = new Point(100, 100);
    var B:Point = new Point(200, 200);
    var C:Point = new Point(300, 300);

    placeItems([item1, item2, item3], [A, B, C]);
}

function placeItems(items:Array, points:Array)
{
    for (var i:int = 0; i < items.length; i++)
    {
        var id:int = Math.round(Math.random() * (points.length - 1));
        items[i].x = points[id].x;
        items[i].y = points[id].y;
        points.splice(id, 1);
    }
}