|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2008
Сообщений: 2
|
Как подгружать картинки из xml в случайном порядке.
Добрый день.
Я совсем новичок в as и прошу совета у гуру Есть скрипт для слайдшоу, который подгружает картинки из xml. Само слайдшоу лежит на http://mxart.net/ftp/misc/Slideshow/slideshow1.html. Вот фрагмент кода который берет картинки из xml по порядку: 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); } Подскажите плиз, как рандомизировать выбор картинок? Зарание спасибо. |
|
|||||
[+]
|
Я бы сделал так
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); } |
|
|||||
Регистрация: Dec 2008
Сообщений: 2
|
BAHUS, спасибо большое, вот что значит помощь профессионала
Добавлено через 19 часов 32 минуты Эхх, похоже я рано обрадовался... предложенное решение не работает. Картинки показываются циклически в определенном порядке, обновление и перезапуск флэша не помогают. На всякий случай вот весь код скрипта: 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); } Может есть другие варианты решения? Пасибо. |
Часовой пояс GMT +4, время: 17:10. |
|
« Предыдущая тема | Следующая тема » |
|
|