Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как рамдомно показать содержиное массива на экране (http://www.flasher.ru/forum/showthread.php?t=134127)

sergeylandar 22.12.2009 13:11

как рамдомно показать содержиное массива на экране
 
привет
в библиотере имеется например 5 коробок.
я их сейчас вот так вот вывожу:
Код AS3:

var boxList:Array=[["box1",10,20],["box2",150,120],["box3",200,300],["box4",10,300],["box5",320,330]];
for (var i = 0; i < boxList.length; i++) {
        var classRef:Class=getDefinitionByName(boxList[i][0]) as Class;
        var myBox:MovieClipnew classRef();
        addChild(myBox);
        myBox.x=boxList[i][1];
        myBox.y=boxList[i][2];
}

как эти коробки можно вывести на экран рандомно+коробки не должны накладываться друг на друга, если размеры экрана например 550х400 ?

cleptoman 22.12.2009 14:22

Код AS3:

var boxList:Array=[["box1",10,20],["box2",150,120],["box3",200,300],["box4",10,300],["box5",320,330]];
 
var boxListForRand:Array = boxList.concat();
var i:int;
var randomBox:MovieClip;
var len:int  = boxListForRand.length;
var index:int;
for(i = 0; i < len; i++){
index = Math.floor(Math.random() * boxListForRand.length);
var classRef:Class=getDefinitionByName(boxListForRand[index][0]) as Class;
var randomBox:MovieClipnew classRef();
addChild(randomBox);
randomBox.x=boxListForRand[index][1];
randomBox.y=boxListForRand[index][2];
boxListForRand.splice(index,1);
 
}

Добавлено через 3 минуты
с наложением повозиться можно hitTestObject-ом

sergeylandar 22.12.2009 16:28

а почему randomBox 2 раза объявляется?

Psycho Tiger 22.12.2009 17:56

Чтобы наверняка :)

На самом деле ошибка, да.

sergeylandar 22.12.2009 18:09

вот так хорошо работает:
Код AS3:

var classNames:Array = ["box1", "box2", "box3", "box4", "box5"];
var len:int = classNames.length;
var boxesList:Array = [];
var ClassRef:Class;
 
for (var i:int = 0; i < len ; i++) {
    ClassRef = Class(getDefinitionByName(classNames[i]));
    boxesList[i] = new ClassRef();
    addChild(boxesList[i]);
}
 
var currentBox:MovieClip;
for (var ii:int = 0; ii < len ; ii++) {
    currentBox = boxesList[ii];
    currentBox.x = Math.random() * (stage.stageWidth - currentBox.width);
    currentBox.y = Math.random() * (stage.stageHeight - currentBox.height);
}

Подскажите плиз как сделать чтобы боксики не пересикались.

cleptoman 22.12.2009 19:36

а. ну издержки копипаста )) пардон


Часовой пояс GMT +4, время: 22:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.