Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   вопрос по setInterval (http://www.flasher.ru/forum/showthread.php?t=96434)

Warrgoth 30.05.2007 13:09

вопрос по setInterval
 
для загрузки изображения из директории с помощью файла
допустим, у меня есть такая функция(последний параметр - порядковый номер файла jpg, или сроки в XML описании):
Код:

//вставим слайд
function addMovie(target_mc:MovieClip,pathToXMLfile:String,num:Number) {
        var mcl:MovieClipLoader = new MovieClipLoader();
        target_mc.image_mc.removeMovieClip();//удалим контейнер если таковой имеется в наличии.
        target_mc.createEmptyMovieClip("image_mc",target_mc.getNextHighestDepth());
        meXML = new XML();
        meXML.ignoreWhite = true;
        meXML.onLoad = function(success:Boolean){
                if(success){
                        var rootNode:XMLNode = meXML.firstChild;
                        var totalElements:Number = rootNode.childNodes.length;
                        var arrayElements:Array = rootNode.childNodes;
                        if(num > totalElements-1) {
                                num = totalElements-1;
                        }
                        var secNode:XML = arrayElements[num];
                        var imagePath:String = secNode.attributes.loc;
                        //вводим изображение нежно)
                        var mclListener:Object = new Object();
                        mclListener.onLoadInit = function() {
                                resizePict(target_mc,target_mc.image_mc,20);
                                target_mc.image_mc._x = (target_mc._width - target_mc.image_mc._width)/2;
                                target_mc.image_mc._y = (target_mc._height - target_mc.image_mc._height)/2;
                                var imgTween:Object = new Tween(target_mc.image_mc,"_alpha",Back.easeOut,0,100,3,true);
                                target_mc.image_mc.filters = [shadowFilter()]; //тень на плетень
                        }
                       
                        mcl.addListener(mclListener);
                        mcl.loadClip(imagePath,target_mc.image_mc);
                       
                }
        }
        meXML.load(pathToXMLfile);
}

так вот... все это работает корректно, но захотелось чтоп картинки шли сами в режиме слайд шоу.
как это сделать? с помощью этой функции и setInterval

Или какие в этой функции сделать изменения чтобы последовательно перебирать изображения.. Цикл делал, но он сразу все проскакивает и останавливается на последнем.. Пока не понял что делать, обращаюсь в Вам за помощью..:rolleyes:

(рандом не предлагать:mosking: )

etc 30.05.2007 13:19

Для начала нужно перестать объявлять функции друг в друге. meXML достаточно объявить один раз, а в качестве слушателя MovieClipLoader может выступать хоть _root, а не mclListener. secNode есть XMLNode, а не XML.
Что мешает использовать массив childNodes, плюсовать счетчик после загрузки предыдущей картинки и загружать следующую с использованием setInterval?

Warrgoth 30.05.2007 14:04

я не понимаю как использовать setInterval в ДАННОМ случае...

у меня есть массив childNodes, и каждый из элементов - путь к картинке, когда я иду в цикле по массиву, они все просто проскакивают и видно только последнюю.
Можно объяснить по-подробнее, пожалуйста, как именно тут использовать setInterval ? Для тупых) о_О

island 30.05.2007 17:56

В параметрах функции setInterval можно задать интервал появления картинок...
Код:

//вставим слайд
var totalElements:Number;
var arrayElements:Array;
var slideShowID:Number;
var picNum:Number = 0;
var target_mc:MovieClip = _root;

meXML = new XML();
meXML.ignoreWhite = true;
meXML.onLoad = function(success:Boolean){
        if(success){
                var rootNode:XMLNode = meXML.firstChild;
                totalElements = rootNode.childNodes.length;
                       
                arrayElements = rootNode.childNodes;
                nextPicture();
                slideShowID = setInterval(_root, "nextPicture", 1000);
        }
}
meXML.load("temp.xml");

function nextPicture() {
       
        if(picNum < totalElements) {
                var mcl:MovieClipLoader = new MovieClipLoader();
                target_mc.image_mc.removeMovieClip();//удалим контейнер если таковой имеется в наличии.
                target_mc.createEmptyMovieClip("image_mc",target_mc.getNextHighestDepth());
       
                var secNode:XML = arrayElements[picNum];
                var imagePath:String = secNode.attributes.loc;
                //вводим изображение нежно)
                var mclListener:Object = new Object();
                mclListener.onLoadInit = function() {
                        resizePict(target_mc,target_mc.image_mc,20);
                        target_mc.image_mc._x = (target_mc._width - target_mc.image_mc._width)/2;
                        target_mc.image_mc._y = (target_mc._height - target_mc.image_mc._height)/2;
                        var imgTween:Object = new Tween(target_mc.image_mc,"_alpha",Back.easeOut,0,100,3,true);
                        target_mc.image_mc.filters = [shadowFilter()]; //тень на плетень
                        picNum++;
                }
                       
                mcl.addListener(mclListener);
                mcl.loadClip(imagePath,target_mc.image_mc);
        } else {
                clearInterval(slideShowID);
        }
}


CorC 31.05.2007 10:24

Я бы перереписал бы все заново, но в данном случае можно так:
Код:

function nextPicture() {
        if(picNum < totalElements) {
        clearInterval(slideShowID);
        .............
                mclListener.onLoadInit = function() {
                        slideShowID=setInterval(....);
                        picNum++;
                }
                mcl.addListener(mclListener);
                mcl.loadClip(imagePath,target_mc.image_mc);
        }
}

Хотя можно picNum как параметр передавать в setInt


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

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