Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Вопрос по циклической загрузке клипов в рандомном порядке. Возможно ли? (http://www.flasher.ru/forum/showthread.php?t=117826)

storm_ 07.11.2008 16:51

Вопрос по циклической загрузке клипов в рандомном порядке. Возможно ли?
 
Дорогие флешеры.
Вновь фрилансерская судьба преподнесла вопрос, который я не в состоянии решить сам. :(
Ситуация такая:
Код:

Stage.scaleMode = "noscale";
var w = new XML();
all._visible = false;
//LINKS
w.load("links.xml");
w.ignoreWhite = true;
w.onLoad = function() {
        col = this.firstChild.childNodes[0].attributes.number;
        min = 20;
//Создан циклический загрузчик, который по очереди загружает нужное
//кол-во изображений в сгеннерированные мувики.
        for (i=0; i<col; i++) {
                var k_mc:MovieClip = all.createEmptyMovieClip("k"+i, i);
//Тут генерятся пустышки, на которые будут вешаться ссылки:
                var l_mc:MovieClip = all.l.duplicateMovieClip("l"+i, 200+i);
//Берется для конкретной пустышки, конкретная ссылка из хмл
                l_mc.link = this.firstChild.childNodes[1+i].attributes["logo"+i];
//Присваивается…
                l_mc.onRelease = function() {
                        getURL(this.link, "_blank");
                };
//loader
                var mc0Listener:Object = new Object();
                var p0:MovieClipLoader = new MovieClipLoader();
                p0.addListener(mc0Listener);
                p0.loadClip(i+".png", all["k"+i]);
        }
        mc0Listener.onLoadInit = function() {
//После окончания загрузки
                dl = 0;
                all.k0._x = 0;
                for (b=0; b<col; b++) {
                        dl += all["k"+b]._width+60;
                        bb = 1;
                        bb += b;
//Клипы выстраиваются исходя из их ширины один за другим.
                        all["l"+b]._width = all["k"+b]._width;
                        all["k"+b]._y = (100-all["k"+b]._height)/2;
                        all["k"+bb]._x = dl;
                        all["l"+b]._y = (100-all["k"+b]._height)/2;
                        all["l"+bb]._x = dl;
                }
                max = r-dl;
                all._visible = true;
        };

Вот. Сейчас все грузится последовательно и расставляется соответственно последовательно — один за другим, как кирпичеки.

Вот вопрос:
Заказчик хочет, чтобы клипы каждый раз грузились рандомно. Как осуществить это? К примеру, в папке лежит 50 клипов, их все нужно загрузить на одну горизонталь, и расставить их все в перемешку.
Как быть?

Wolsh 07.11.2008 18:07

Ну так перемешайте массив childNodes перед загрузкой.

storm_ 07.11.2008 18:16

Wolsh, большое спасибо. Не покажите как именно это сделать?

scarbo 07.11.2008 18:28

Wolsh это тут уже делал,поишите в его сообщениях

storm_ 07.11.2008 18:36

scarbo, спасибо конечно за совет. Но у Wolsh всего 1729 сообщений :).
Wolsh, отзовитесь пожалуйста.

Wolsh 07.11.2008 18:42

Код:

var tempArr:Array = this.firstChild.childNodes.concat();
var piclength:Number = tempArr.length;
var randomNodes:Array = [];
for(var i = 0; i < piclength; i++)
{
    var q:Number = Math.floor(Math.random()*(tempArr.length-1));
    randomNodes.push(tempArr[q]);
    tempArr.splice(q, 1);
}
trace(randomNodes)


storm_ 07.11.2008 19:11

Wolsh, Спасибо огромное! Выручаете не первый раз!

Wolsh 07.11.2008 21:03

А, блин, косяк нашел - последний остается всегда последним.
Правильно вот так
Код:

var tempArr:Array = this.firstChild.childNodes.concat();
var piclength:Number = tempArr.length;
var randomNodes:Array = [];
for(var i = 0; i < piclength; i++)
{
    var q:Number = Math.floor(Math.random()*(tempArr.length));
    randomNodes.push(tempArr[q]);
    tempArr.splice(q, 1);
}
trace(randomNodes)



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

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