Как я могу рандомизировать картинку под обложкой в ​​actionscript 3.0? - PullRequest
0 голосов
/ 30 марта 2012

Я делаю флэш-игру для практики, и у меня настроена сцена, поэтому в ней 9 коробок.Когда игра запускается, один из боксов рандомизируется как тот, у которого начало внизу, если вы выберете поле со звездочкой внизу, вы выиграете.

Код рандомизации:

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

Что я не знаю, так это как прикрепить этот код, чтобы он назначал звезду одному из моих 9 полей, выполненных в виде кнопок.Как я могу спрятать звезду под коробкой в ​​качестве крышки.Спасибо за ваше время

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Это довольно удобная функция, которую вы можете использовать:

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

пример (любое число от 0 до 9):

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

не забудьте сделать его целым или вы можетев итоге поплавок.

1 голос
/ 31 марта 2012

Я представляю одну из тех игр, где вы кладете мяч под одну из трех чашек и меняете местами чашки, а затем угадываете, какая из них имеет мяч.

Самый простой способ скрыть один объект под другим - просто добавить его на сцену до того, как объект покрывает его. Так что добавьте свою звезду на сцену, а затем добавьте все свои коробки. НО, поскольку вам не нужно, чтобы на сцене действительно был невидимый объект, я рекомендую не добавлять звезду на сцену, пока она не будет обнаружена, и удалять ее, когда она снова будет скрыта.

Вы можете создавать слои, чтобы убедиться, что объекты всегда находятся выше / ниже того, что они должны быть выше / ниже. Создавайте спрайтовые объекты и называйте их слоями Добавьте их по порядку снизу вверх. Добавьте другие спрайты к этим спрайтам слоя, чтобы контролировать их порядок отображения.

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