Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.12.2008, 20:53
mxart вне форума Посмотреть профиль Отправить личное сообщение для mxart Найти все сообщения от mxart
  № 1  
Ответить с цитированием
mxart

Регистрация: Dec 2008
Сообщений: 2
По умолчанию Как подгружать картинки из xml в случайном порядке.

Добрый день.

Я совсем новичок в as и прошу совета у гуру
Есть скрипт для слайдшоу, который подгружает картинки из xml. Само слайдшоу лежит на http://mxart.net/ftp/misc/Slideshow/slideshow1.html.

Вот фрагмент кода который берет картинки из xml по порядку:

Код AS1/AS2:
	for (i=0; i<_root.myImagesNo; i++) {
 
		temp_url = _root.myImages[i].attributes.url;
		temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());
 
		_root.myMCL.loadClip(temp_url,temp_mc);
	}

Подскажите плиз, как рандомизировать выбор картинок? Зарание спасибо.

Старый 04.12.2008, 21:23
BAHUS вне форума Посмотреть профиль Отправить личное сообщение для BAHUS Посетить домашнюю страницу BAHUS Найти все сообщения от BAHUS
  № 2  
Ответить с цитированием
BAHUS
[+]
 
Аватар для BAHUS

Регистрация: Aug 2001
Адрес: Украина Харьков
Сообщений: 104
Отправить сообщение для BAHUS с помощью ICQ
Я бы сделал так
Код:
        var arr:Array =  new Array();
        for(i=0; i<_root.myImagesNo; i++){
             arr.push({indx:i, rand:Math.random()})
        }
       arr.sortOn("rand");
	for (i=0; i<_root.myImagesNo; i++) {
 
		temp_url = _root.myImages[arr[i].indx].attributes.url;
		temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());
 
		_root.myMCL.loadClip(temp_url,temp_mc);
	}

Старый 04.12.2008, 21:32
mxart вне форума Посмотреть профиль Отправить личное сообщение для mxart Найти все сообщения от mxart
  № 3  
Ответить с цитированием
mxart

Регистрация: Dec 2008
Сообщений: 2
BAHUS, спасибо большое, вот что значит помощь профессионала

Добавлено через 19 часов 32 минуты
Эхх, похоже я рано обрадовался... предложенное решение не работает. Картинки показываются циклически в определенном порядке, обновление и перезапуск флэша не помогают.

На всякий случай вот весь код скрипта:

Код AS1/AS2:
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
var myShowXML = new XML();
myShowXML.ignoreWhite = true;
myShowXML.load(_root.link2);
 
myShowXML.onLoad = function() {
	_root.myWidth = myShowXML.firstChild.attributes.width;
	_root.myHeight = myShowXML.firstChild.attributes.height;
	_root.mySpeed = myShowXML.firstChild.attributes.speed;
 
	_root.myImages = myShowXML.firstChild.childNodes;
	_root.myImagesNo = myImages.length;
 
	createContainer();
	callImages();
 
};
 
 
function createContainer() {
	_root.createEmptyMovieClip("myContainer_mc",1);
 
	myContainer_mc.lineStyle(1,0x2951A2,100);
	myContainer_mc.lineTo(_root.myWidth,0);
	myContainer_mc.lineTo(_root.myWidth,_root.myHeight);
	myContainer_mc.lineTo(0,_root.myHeight);
	myContainer_mc.lineTo(0,0);
 
	myContainer_mc._x = (Stage.width-myContainer_mc._width)/2;
	myContainer_mc._y = (Stage.height-myContainer_mc._height)/2;
 
}
 
function callImages() {
 
	_root.myMCL = new MovieClipLoader();
	_root.myPreloader = new Object();
	_root.myMCL.addListener(_root.myPreloader);
 
	_root.myClips_array = [];
 
	_root.myPreloader.onLoadStart = function(target) {
 
 
	};
 
	_root.myPreloader.onLoadProgress = function(target) {
 
 
	};
 
 
	_root.myPreloader.onLoadComplete = function(target) {
 
		_root.myClips_array.push(target);
		target._alpha = 0;
 
		if (_root.myClips_array.length == _root.myImagesNo) {
 
			_root.target_mc = -1;
			moveSlide();
			myShowInt = setInterval(moveSlide, (_root.mySpeed*1000)+1000);
 
 
		}
 
	};
 
	var arr:Array = new Array();
	for (i=0; i<_root.myImagesNo; i++) {
		arr.push({indx:i, rand:Math.random()});
	}
	arr.sortOn("rand");
	for (i=0; i<_root.myImagesNo; i++) {
 
		temp_url = _root.myImages[arr[i].indx].attributes.url;
		temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth());
 
		_root.myMCL.loadClip(temp_url,temp_mc);
	}
 
 
}
 
 
function moveSlide() {
 
	current_mc = _root.myClips_array[_root.target_mc];
	new Tween(current_mc, "_alpha", Strong.easeInOut, 100, 0, 2, true);
 
	_root.target_mc++;
 
	if (_root.target_mc>=_root.myImagesNo) {
		_root.target_mc = 0;
	}
	next_mc = _root.myClips_array[_root.target_mc];
	new Tween(next_mc, "_alpha", Strong.easeInOut, 0, 100, 2, true);
 
}
Вот что в xml:

Код:
<slideshow width="165" height="124" speed="3">
<image url="images/image1.jpg" />
<image url="images/image2.jpg" />
<image url="images/image3.jpg" />
<image url="images/image4.jpg" />
</slideshow>
Может есть другие варианты решения? Пасибо.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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