Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    slide su livello, ogni volta che si carica aumenta la velocità di transizione

    ho creato un sito nel quale importo nel livello 4 una slide xml.
    dovendo gestire 5 diverse slide ho pensato di passare il parametro del file xml e ricaricare il file all'interno della slide.

    questo è il codice di un pulsante delle 5 slide:

    on (release) {
    _root.xmlfile="slideshow.xml";
    _level4.myShowXML.unload;
    _level4.myShowXML.load(_level0._root.xmlfile);
    loadMovieNum("slideshow.swf",4);
    }

    finqui tutto funziona correttamente il problema è che ogni volta che ricarico il livello 4 la slide mi aumenta la velocità di transizione tra le immagini.


    Questo è lo script contenuto all'interno della slide :


    import mx.transitions.Tween;
    import mx.transitions.easing.*;

    var myShowXML = new XML();
    myShowXML.ignoreWhite = true;
    myShowXML.load(_level0._root.xmlfile);

    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(5,0xffffff,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)+20;

    }

    function callImages() {

    _root.myMCL = new MovieClipLoader();
    _root.myPreloader = new Object();
    _root.myMCL.addListener(_root.myPreloader);
    _root.myClips_array = [];
    _root.myPreloader.onLoadStart = function(target) {
    _root.createTextField("myText_txt",_root.getNextHi ghestDepth(),0,0,100,20);
    _root.myText_txt._x = (Stage.width-_root.myText_txt._width)/2;
    _root.myText_txt._y = (Stage.height-_root.myText_txt._height)/2;
    _root.myText_txt.autoSize = "center";
    _root.myText_txt.text = "test";

    };

    _root.myPreloader.onLoadProgress = function(target) {
    _root.myText_txt.text = "Loading.. "+_root.myClips_array.length+"/"+_root.myImagesNo+" Completed";

    };


    _root.myPreloader.onLoadComplete = function(target) {

    _root.myClips_array.push(target);
    target._alpha = 0;

    if (_root.myClips_array.length == _root.myImagesNo) {

    _root.myText_txt._y = myContainer_mc._y + myContainer_mc._height;
    _root.target_mc = -1;
    moveSlide();


    myShowInt = setInterval(moveSlide, (_root.mySpeed*1000));



    }

    };

    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);


    }

    }


    function moveSlide() {

    current_mc = _root.myClips_array[_root.target_mc];
    new Tween(current_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);

    _root.target_mc++;

    if (_root.target_mc>=_root.myImagesNo) {
    _root.target_mc = 0;
    }

    _root.myText_txt.text = _root.myImages[target_mc].attributes.title;
    next_mc = _root.myClips_array[_root.target_mc];
    new Tween(next_mc, "_alpha", Strong.easeOut, 0, 100, 1, true);

    }



    secondo me il problema è da implicare a questo comando:
    myShowInt = setInterval(moveSlide, (_root.mySpeed*1000));
    in quanto visualizzando il valore di myShowInt questa viene incrementata di 1 ogni volta che ricarico la slide sul livello4.

    Come posso risolvere?

    Grazie mille

  2. #2
    Devi interrompere l'intervallo precedente, altrimenti è normale che si moltiplichi la velocità. Puoi farlo subito prima di impostare il setInterval:
    codice:
    clearInterval(myShowInt);
    myShowInt = setInterval(moveSlide, (_root.mySpeed*1000));
    Perché questa cosa funzioni, però, è necessario dichiarare la variabile myShowInt al di fuori della funzione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.