PDA

Просмотр полной версии : Random LoadMovie (1,2,3.....10) КАК???


Massimo
02.07.2002, 11:17
Привет всем!
Вопрос такой : мне нужно подгружать мувики, но что бы они загружались в хоатичном порядке там 1, 7,15... итд как это сделать?
Спасибо

Papa Karlo
02.07.2002, 11:25
loadMovie(randomnij_nomer+".swf");

DSV
02.07.2002, 11:41
randomnij_nomer = Math.Random(15);
:)

Massimo
02.07.2002, 12:12
Странно... но в обоих случаях происходит ошибка...
может я что не так делаю...?

Nox Noctis
02.07.2002, 13:33
loadMovie требует два или три параметра - не меньше :)
либо
куда_грузить.loadMovie(Math.round(Math.random()*15)+".swf");
либо
loadMovie(Math.round(Math.random()*15)+".swf", куда_грузить);
:)

УильямБрэдберри
02.07.2002, 13:34
Хаааааа....

во-первых

замени Math.random()

на

random(15)+1

либо на

Math.floor(Math.random()*15)+1

ЗЫ: Nox Noctis ;)

во-вторых делай как Nox сказал :D

Massimo
02.07.2002, 13:53
Спасибо получилось так....
loadMovieNum ("../../directory/"+Math.ceil(Math.random()*15)+".swf", 1000);
:)

УильямБрэдберри
02.07.2002, 14:55
Оригинал написал(а) Massimo
Спасибо получилось так....
loadMovieNum ("../../directory/"+Math.ceil(Math.random()*15)+".swf", 1000);
:)

можно еще "int" воткнуть четверошный ;) вместо всяких там Math.....bla'bla'bla

могу спорить:
loadMovieNum ("../../directory/"+random(15)+".swf", 1000); короче выглядит и доступнее...

Nox Noctis
02.07.2002, 15:22
и для очистки совести все написать на четверке, а потом скомпилить в шестерке, чтобы в результате получить что-то около пяти :D

Fisher
02.07.2002, 15:34
2 УильямБрэдберри

Возвращаемся к истокам? Полностью поддерживаю. Объекты без самой крайней нужды нетрожте. Давеча ролик ужимал так на замене пятерошного скрипта четверошным почти кил съекономил. А про быстродействие воще молчу.

Nox Noctis
02.07.2002, 18:02
зануды вы оба :) :p

поздравляю, за две тысячи вызовов random(range) мы получим выигрыш в целых полтора раза
относительно тех же двух тысяч Math.round(Math.random()*range)...
....в полтора раза относительно 50 микросекунд :D (все в среднем...)
...это при том, что в первом случае работает одна функция с интом, а во втором две функции с флоатом+умножение :D

зато если мы посмотрим "спектр" выдаваемых значений - у random() есть какие-то странные пики в самых неожиданных местах :p

зы: ;)

Massimo
02.07.2002, 18:52
А простыми словами.... :)
Что это значит?

Papa Karlo
02.07.2002, 19:01
это значит, что если тебя не устроит результат с random(), бери пиво и начинай извращаться :)

Nox Noctis
02.07.2002, 19:05
суть всего вышеизложенного -
четверошный синтаксис быстрее. известно с момента появления пятерки :D

но в случае с рандомом разница в скорости настолько незначительна, что если ее учитывать, то стоит заодно сделать поправку на световое давление :)

если тебе нужен более аккуратный результат - пиши
Math.round(Math.random())
если тебе нужно чтоб выглядело попроще - пиши
random()

Fisher
02.07.2002, 21:37
Да радибога - пиши как нравиться. Но очевидного - быстродействие и компактность получаемого свф ты ведь не оспариваешь? А вот я насчет твоих замеров рандома могу поспорить (но лень) :) Рупь за сто даю что рандом в пятом плэере никто не переписывал. А в хелпе понты кидают чтоб побыстрее на объектный 6-й синтаксис всех пересадить :D

Nox Noctis
03.07.2002, 02:29
ну, замеры-то я делал на шестом плеере...
если правда интересно, то могу запостить код (если самому лениво писать ;))... там чистый as :)

Fisher
03.07.2002, 11:46
Да код я и сам могу запостить. Ладноуж самому интересно стало на "пики" посмотреть :) Идеони ? Кстати у меня тоже 6-й плэер. Я думаю насчет пятого уже спорить не будем?
И обрати внимание на стабильную яму у мачрандома в области ноля.

Nox Noctis
03.07.2002, 14:27
Stage.scaleMode = "showAll";
Stage.realSize = {h:Stage.height, w:Stage.width};
Stage.scaleMode = "noScale";
//
test = function (range, loops, fn) {
var i = 0;
var href = this.createEmptyMovieClip(fn, fn.length);
href.dim = {H:Stage.realSize.h/range, W:Stage.realSize.w/loops*50};
href.overlay = new Array(range);
if (fn == "mrandom") {
while (loops>i++) {
spectrum.apply(href, [Math.round(Math.random()*range)]);
}
} else {
while (loops>i++) {
spectrum.apply(href, [random(range)]);
}
}
};
spectrum = function (val) {
if (!this.overlay[val]) {
var href = this.createEmptyMovieClip("i"+val, 1+val);
href.lineStyle(.1, 0x8000);
href.lineTo(this.dim.W, 0);
href._y = this.dim.H*val;
} else {
this["i"+val]._width += this.dim.W;
}
this.overlay[val]++;
};
//
test(100, 5000, "mathrandom");
test(100, 5000, "flash4random");
//
flash4random._alpha = 30;
this.onMouseDown = function() {
var tmp = flash4random._alpha;
flash4random._alpha = mathrandom._alpha;
mathrandom._alpha = tmp;
mathrandom._alpha == 100 ? trace("Math.random") : trace("random");
};
я проверял так... как видно у обоих рандомов яма в нуле почти одинаковая :) зато если мы посчитаем количество значений вероятность которых превышает среднюю - у матхрандома таких значений явно меньше... (только лучше фреймрейт 1 поставить, а то плеер может начать нервничать от 10000 лупов :))

Fisher
03.07.2002, 16:01
Дааа... видать за объем тебя не душат - эко наворотил :D
Лень разбираться - полож исходник я просто потестю :)

Fisher
03.07.2002, 16:35
Стоп - затупил! Не собразил что это уже МХ. Я ея практически не юзаю :) Еще час Х не пробил :D .Тоды спор прекращаю ввиду некомпетентности. Но в случае с 5-м скриптом ты неправ и доказательство в предыдущем атаче :)

Nox Noctis
03.07.2002, 16:51
да 'фишка' в том, что это и есть исходник :)
копипастишь в первый кадр нового мувика, запускаешь - и все готово :)

а насчет пятерки - я щас фласмом поковыряюсь и тогда мы узнаем чей рандом случайнее :)

Nox Noctis
03.07.2002, 17:02
...уже поковырялся :)
только бестолку - все равно не понять в чем различие самих функций...
обычный рандом(100) выдает:
push 100
random
pop

а мтхрандом (если предварительно сократить название до ссылки вроде a = Math.random):
push 0.0, 'a'
callFunction
+умножение и округление

...а вот чего они собственно делают...

(а рандом скомпиленный пятеркой абсолютно не отличается от шестерочного по коду)

Lucas
03.07.2002, 19:23
Оригинал написал(а) УильямБрэдберри
Хаааааа....

во-первых

замени Math.random()

на

random(15)+1

либо на

Math.floor(Math.random()*15)+1

ЗЫ: Nox Noctis ;)

во-вторых делай как Nox сказал :D

обьясни зачем сделали в пятом Math.random() ?
и чем он отличается от random(n)
я понимаю что у первой нет входных параметров...

ish
03.07.2002, 20:05
а тут появляюсь я :)
итак, как известно экшнскрипт версий 5 и выше реализован через одно место, в отличии от команд 4-ой версии, отсюда и более низкая их производительность, хотя и не значительно.
но все команды 4-ки, являются устаревшими и уже находятся в списке деприкейтед, то бишь в следующих версиях плейера они работать не будут. отсюда логично использование их заменителей :) благо известны они с момента выхода пятерки.

так что:
random(n) -> Math.floor(Math.random()*n)
int(n) -> Math.round(n)

Nox Noctis
03.07.2002, 20:10
ну что ?
все слышали ?
вам Иш чего сказал ?
...хорош трепаться - за работу все :) :) :)