PDA

Просмотр полной версии : Случайный порядок фото в слайд-шоу


vicccy
17.02.2010, 10:33
Есть слайд-шоу. Фото берутся из папки на сервере и воспроизводятся по порядку.
А мне очень нужно сделать воспроизведение фоток в случайном порядке.
Пожалуйста, расскажите как это сделать!

У меня есть два кода:
stop();
this.down.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.down.getBytesLoaded();
var t=this.down.getBytesTotal();
if(t && l==t){
this.num++;
if(!this.num) {
this.nextFrame();}//без зацикливания
this.up.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.up.getBytesLoaded();
var t=this.up.getBytesTotal();
if(t && l==t){

this.gotoAndPlay(40);
delete this.onEnterFrame;
}
}
}
}

и

dir = "/comm/"
this.up.loadMovie(dir+"1.jpg");
this.down.loadMovie(dir+"0.jpg");
this.loadVariables(dir+"number.txt");
num=1;


Буду ооочень благодарна за помощь!

vicccy
22.02.2010, 11:56
Вопрос всё ещё ооочень актуален.
Помогите пожалуйста новичку!

Z_LoY
22.02.2010, 12:11
может здесь вы найдёте то что вам нужно? (http://community.adobe.com/help/search.html;jsessionid=572F34EB4D31FFF3010AFE3C4175FA8F?q=random&x=16&y=16&lbl=flash_product_adobelr&hl=en_US&lr=en_US&self=0&area=0)

vicccy
22.02.2010, 12:33
Да, я читала про рандом. (кстати, с английским у меня плохо) Но вот куда и как его вставить чтобы он работал не знаю... :rolleyes:
Куда ни вставлю, не работает.
Помогите пожалуйста.
Наверняка простейшая задачка, но мне как новичку, очень непросто..

mr_pol
22.02.2010, 12:43
если фотки не должны повторяться, то можно сделать массив

vicccy
22.02.2010, 12:58
Массив?
А как это?
Я с произвольной сменой фоток-то не могу разобраться... :rolleyes:

mr_pol
22.02.2010, 13:32
распакуйте все в одну папку чтоб работало)) может, поможет пример

Xusik
23.02.2010, 20:02
Попробуй так:
P.S.
( небыло возможности проверить но сам алгоритм должен работать) :)

stop();

var FotoArray:Array = new Array();
var i,j,k,p:Number;
var t:Number = new Number(0);

for (i=0; i < numfotos; i++) // numfotos - kolichestvo fotok
{
FotoArray[i] = i;
}

for (k = 0; k < numfotos*2; k++) // randimizirujem masiv
{
i = random(numfotos);
j = random(numfotos);

p = FotoArray[i];
FotoArray[i] = FotoArray[j];
FotoArray[j] = p;

}

this.down.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.down.getBytesLoaded();
var t=this.down.getBytesTotal();
if(t && l==t){
t++;
this.num = FotoArray[t];
if(!this.num) {
this.nextFrame();}//без зацикливания
this.up.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.up.getBytesLoaded();
var t=this.up.getBytesTotal();
if(t && l==t){

this.gotoAndPlay(40);
delete this.onEnterFrame;
}
}
}
}

vicccy
24.02.2010, 03:22
Спасибо большое!

vicccy
02.03.2010, 12:40
Ничего не помогает! А очень нужен рандом...
Помогите пожалуйста!
Я наверно что-то не так или не туда пишу...
Но не хочет работать вообще ни один из кодов рандома.

mr_pol
02.03.2010, 13:51
а исходник можно посмотреть?

vicccy
07.03.2010, 16:41
Ну конечно можно)
Только исходник сюда почему-то не прикрепляется...
Вот тут выложен: http://et-com.ru/etkv.fla
Очень надеюсь на Вашу помощь!

AzagThoth
07.03.2010, 20:43
Почитайте про Math.random() и вообще про Math. И про массивы почитайте. Дмитрий Гурский - "ActionScript для профессионалов"

Xusik
08.03.2010, 13:06
var FotoArray:Array = new Array();
var i,j,k,p:Number;
var foto:Number = new Number(0);
var num:Number = new Number (0);
dir = "/comm/"
num = random(34);
this.up.loadMovie(dir+"1.jpg");
this.down.loadMovie(dir+num+".jpg");
this.loadVariables(dir+"number.txt");




stop();
if (foto == 0 ){
for (i=0; i < 34; i++) // numfotos - kolichestvo fotok
{
FotoArray[i] = i;
}

for (k = 0; k < 136; k++) // randimizirujem masiv
{
i = random(34);
j = random(34);

p = FotoArray[i];
FotoArray[i] = FotoArray[j];
FotoArray[j] = p;

}
}
this.down.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.down.getBytesLoaded();
var t=this.down.getBytesTotal();
if(t && l==t){
foto++;
this.num = FotoArray[foto];
if (foto == 34) {
foto = 0;
}
if(!this.num) {
this.nextFrame();}//без зацикливания
this.up.loadMovie(this.dir+this.num+".jpg");
this.onEnterFrame=function(){
var l=this.up.getBytesLoaded();
var t=this.up.getBytesTotal();
if(t && l==t){

this.gotoAndPlay(40);
delete this.onEnterFrame;
}
}
}
}

работает пробовал локально :)

vicccy
08.03.2010, 15:03
Ух ты....
Xusik, спасибо преогромнейшее, я просто счастлива!!! :yahoo:
И правда работает!!!!!!!!!!!
Настоящий подарок к 8 марта! Спасибо, спасибо, спасибо!!!!

Xusik
08.03.2010, 15:38
my pleasure ;)

vicccy
08.03.2010, 19:17
Правда теперь новая проблемка...
Что-то прыгает у меня после второй фоточки, нет плавного перехода.
Вот теперь с этим мучаюсь )