如何在actionscript 3.0的封面下随机化图片?

时间:2012-03-30 19:36:23

标签: actionscript-3 flash actionscript random flash-cs5

我正在为练习制作一个flash游戏,我的舞台设置为9个盒子。当游戏开始时,其中一个盒子被随机化为下面开始的那个盒子,如果你选择下面有星形的盒子,你就赢了。

随机码是

var star = 1 + Math.Round(Math.Random()*8.0)//generate a number between 1 and 9

我不知道如何附加此代码,以便将星号分配给我作为按钮制作的9个盒子中的一个。如何隐藏盒子下面的星星作为封面。 谢谢你的时间

2 个答案:

答案 0 :(得分:1)

我正在想象其中一场比赛你只有三个杯子中的一个球并交换杯子,然后猜猜哪个有球。

将一个对象隐藏在另一个对象下的最简单方法是在对象覆盖之前将其添加到舞台上。所以将你的明星添加到舞台上,然后添加你的所有盒子。但是因为你不必在舞台上看到一个看不见的物体,所以我建议不要将它添加到舞台上直到它被曝光,并在它再次被隐藏时删除它。

您可以创建图层以确保对象始终高于/低于他们需要在上方/下方。创建精灵对象,并将其称为图层。从下到上按顺序添加它们。将其他精灵添加到这些图层精灵中以控制它们的显示顺序。

var layer1:Sprite = new Sprite(); // Bottom / background
var layer2:Sprite = new Sprite(); // Top / foreground

stage.addChild(layer1);
stage.addChild(layer2);


layer2.addChild(someObject1);
layer1.addChild(someObject2); // someObject2 will be below someObject1

这涉及用方块覆盖明星。

您可以将您的盒子放在一个数组中。你需要一个0到8之间的数字,然后只需将它作为数组中的索引即可获得你想要的方框。

var whichBox:int = (int)(Math.random() * 9);
var boxesArray:Array = new Array();
for (var i:int = 0; i < 9; i++) {
    boxesArray.push(new Box()); // Or whatever your boxes are
}
var boxWithStar:Box = boxesArray[whichBox];

然后,您可以将星形移动到与其框相同的位置......

star.x = boxWithStar.x;
star.y = boxWithStar.y;

答案 1 :(得分:1)

这是一个非常方便的功能:

function randRange(start:Number, end:Number) : Number
{
   return Math.floor(start +(Math.random() * (end - start)));
}

示例(0到9之间的任何数字):

var random:int = randRange(0,9);

记得把它变成一个int,否则你最终会浮动。