Форум 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)
-   -   рандомные картинки из XML (http://www.flasher.ru/forum/showthread.php?t=120754)

ambu 29.01.2009 18:57

рандомные картинки из XML
 
Вложений: 1
Привет,

Задача стоит такая:
Из XML файла подгружается картинка с описанием и линком. Нужно, чтобы рандомно менялись по 4 картинки.

Удалось добиться, чтобы подгружались картинки подряд.. например 2,3,4,5... а хочется, чтобы было 2,7,1,3 и без повторений.

Код рандома теперь таков:
Код AS1/AS2:

function loadImages() {
        var min = 0;
        var max = total-3;
        var p1 = min + Math.floor (Math.random() * (max));
        var p2 = p1+1;
        var p3 = p1+2;
        var p4 = p1+3;
        if (loaded == filesize) {
                picture._alpha = 0;
                picture.loadMovie(image[p1], 1);
                desc_txt.text = description[p1];
                btn = link[p1];               
                picture2._alpha = 0;
                picture2.loadMovie(image[p2], 1);
                desc_txt2.text = description[p2];
                btn2 = link[p2];
                picture3._alpha = 0;
                picture3.loadMovie(image[p3], 1);
                desc_txt3.text = description[p3];
                btn3 = link[p3];
                picture4._alpha = 0;
                picture4.loadMovie(image[p4], 1);
                desc_txt4.text = description[p4];
                btn4 = link[p4];       
        }
}

код получился явно не через то место... и очень хочется его оптимизировать. Увы, я не программист ))

Чтобы картинки менялись после определённого количества времени сделал таким образом:
Код AS1/AS2:

setInterval(function() {gotoAndPlay(1);}, 10000);

просто заставляя проигрывать мувиклип ещё раз.. это тоже явно не оптимальный вариант.

и прелодер явно тоже оптимизируется ))


Простите за грамматику.
Жду коментариев ))

Fatality 30.01.2009 00:57

Вот код возвращающий 4 случайных значения из массива:
Код AS1/AS2:

var arr:Array = ["a", "b", "c", "d", "e", "f", "g", "h", "j"];
 
function RandoMyCity(a:Array):Array
{
        var arr1:Array = a.slice();
        var arr2:Array = [];
        for (i=0; i<4; i++)
        {
                arr2.push(arr1.splice(Math.random()*arr1.length, 1));
        }
        return arr2;
}
 
trace(RandoMyCity(arr));

Цитата:

просто заставляя проигрывать мувиклип ещё раз.. это тоже явно не оптимальный вариант.
нет, не оптимальный, лучше весь код поместить в функцию и вызывать эту функцию setTomeout-ом.

ambu 30.01.2009 13:54

Не получаеться массив из XML передать этой функции :/

Fatality 30.01.2009 18:16

А каким интересно образом вы пытаетесь его передать ?

ambu 30.01.2009 19:11

есть переменная total, которая выдаёт общее количество записей в хмл.
Пытаюсь её разбить на составляющие 1, 2, 3 и т.п. .. потом перемешать и подставить место этого
Код AS1/AS2:

var p1 = min + Math.floor (Math.random() * (max));
var p2 = p1+1;
var p3 = p1+2;
var p4 = p1+3;

времени потратил много.. но ничего не получилось

Добавлено через 2 минуты
кстати, спасибо за setTimeout. Стало значительно лутше и без глюков ))


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

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