在我的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个房间。如您所见,所有房间的物品位置都不同,但每个房间都有固定,而物品(蓝色,粉红色,黄色)应该有更改位置的能力每次它都被添加到舞台上。
最佳表现是什么?
声明如下:
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
Item1
和Item2
,Item3
应添加Room2
Item4
, Item5
等等。
首先,我需要随机选择9个房间中的1个。它应该是这样的吗?
Item6
稍后我需要为每个房间指定addChild(Room+randNumber)
?
if
但是在这种情况下如何为每个房间设置3个静态x,y位置并为每个项目随机设置它?
答案 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);
}
}