【问题标题】:How can I randomize a picture under a cover in actionscript 3.0?如何在 actionscript 3.0 的封面下随机化一张图片?
【发布时间】:2012-04-14 12:25:33
【问题描述】:
我正在制作一个用于练习的 Flash 游戏,并且我设置了舞台,所以有 9 个盒子。游戏开始时,其中一个盒子被随机选择为下面的盒子,如果你选择下面有星星的盒子,你就赢了。
随机码是
var star = 1 + Math.Round(Math.Random()*8.0)//generate a number between 1 and 9
我不知道如何附加此代码,以便将星号分配给我作为按钮制作的 9 个框之一。我怎样才能将星星隐藏在盒子下面作为封面。
感谢您的宝贵时间
【问题讨论】:
标签:
actionscript-3
flash
actionscript
random
flash-cs5
【解决方案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;
【解决方案2】:
这是一个非常方便的功能,您可以使用:
function randRange(start:Number, end:Number) : Number
{
return Math.floor(start +(Math.random() * (end - start)));
}
示例(0 - 9 之间的任何数字):
var random:int = randRange(0,9);
记得把它设为 int 否则你可能会得到一个浮点数。