Показать сообщение отдельно
Старый 11.02.2002, 08:27
ish вне форума Посмотреть профиль Отправить личное сообщение для ish Посетить домашнюю страницу ish Найти все сообщения от ish
  № 8  
ish

Регистрация: Sep 2000
Адрес: :)
Сообщений: 2,374
Отправить сообщение для ish с помощью ICQ
вобще говоря, мне часто приходилось сталкиваться с подобными задачами, поэтому я давно для себя написал универсальный класс.

Код:
Object.prototype.RND=function(obj) {
this._rnd=new Array();
this._obj=obj;
this.randomize=function() {
if(this._obj!=undefined&&this._obj.__proto__==Array.prototype) {
delete this._rnd;
this._rnd=new Array();
var len=this._obj.length;
this.length=len;
for(var i=0;i<len;i++) {
this._rnd[i]=this._obj[i];
}
}
}
this.random=function() {
var len=this._rnd.length;
this.length=len;
if(len!=0) {
var n=random(len);
var temp=this._rnd[len-1];
this._rnd[len-1]=this._rnd[n];
this._rnd[n]=temp;
return this._rnd.pop();
} else {
return null;
}
}
ASSetPropFlags(this,null,7);
this.randomize();
}
все что нужно вставить в первый кадр ролика.

значит как работать, все просто:
есть массив со значениями, которые необходимо случайно выбирать с условием уникальности выбора. притом что значения массива могут быть любого типа :)
ну например:
values=["string",2,3,6,7,"c",8];

далее создаем обьект:
myRandom=RND(values);

для случайного и уникального выбора значения:
myVar=myRandom.random();

когда выбор будет исчерпан, функция будет возвращать null

для восстановления набора значений:
myRandom.randomize();

узнать сколько осталось "нетронутых" значений:
myRandom.length

пример:
Код:
values=[1,2,3,4,5,6,7,8,9];
trace("-== 1-st set ==-");
myRandom=new RND(values);
while(myRandom.length) {
trace(myRandom.random());
}
trace("-== 2-st set ==-");
myRandom.randomize();
while(myRandom.length) {
trace(myRandom.random());
}
:)


Последний раз редактировалось ish; 11.02.2002 в 08:30.