Форум 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=102417)

sasha_as2 15.10.2007 03:51

Сортировка массивов - рандом
 
Подскажите, рылся тут и нашел следующее:

Код:

Array.prototype.shuffle = function() {
var dummy = [];
while (this.length) {
var rnd = random(this.length);
var item = this[rnd];
this.splice(rnd, 1);
dummy.push(item);
}
this.splice.apply(this, new Array(0, this.length).concat(dummy));
};
ASSetPropFlags(Array.prototype, "shuffle", 3, 8);

Все прекрасно НО у меня стоит задача немного другая. Есть массив IMAGE и TEXT

т.е. INDEX[1] соответсвует TEXT[1] итд

Вопрос как мне отсортировать рандомом массивы но чтоб привязка осталась?

udaaff 15.10.2007 04:38

Можно сделать проще. Вместо того, чтобы сортировать кучу массивов, сделайте один массив, содержащий объекты с полями index, text и т.д., и сортируйте этот массив.

Kikasso 15.10.2007 04:50

Cоздать массив объектов, имеющих свойство image и text, и перемешивать его. И совсем не обязательно трогать прототипы.


Код:

var myArray:Array = [
        {image:'pik1', text:'text1'},
        {image:'pik2', text:'text2'},
        {image:'pik3', text:'text3'},
        {image:'pik4', text:'text4'}
];

myDebug(myArray);
trace('-------------------------------');
randomize(myArray);
myDebug(myArray);


function randomize(arr:Array):Void{
 var n:Number = arr.length;
 for (var i = 0; i< n; i++ ) arr[ i ].r = Math.random();
 arr.sort( mySort );
}

function mySort(a:Object,b:Object):Number{
 return (a.r - b.r);
}


function myDebug( arr:Array ):Void{
        for (var i = 0; i< arr.length; i++ ) {
                trace( i );
                for ( var p in arr[i] ) trace( p + ':'+ arr[i][p] );
                trace('--------');
        }
}


etc 15.10.2007 10:33

sasha_as2, отредактируйте свой пост и оформите код тегами [code][/code].


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

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