Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Thema geschlossen
 
LinkBack Themen-Optionen Ansicht
Alt 08-10-2007, 15:25   #1 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 13
Question Externe Slideshow - Probleme mit clearInterval()

hallo zusammen,

ich lade per mouseclick vier externe Slideshows in einen container meiner main.swf. das klappt auch alles schon ganz gut, bis auf die problematik,
dass, nach mehmaligem betätigen der einezelnen buttons, der interval nicht gelöscht wird und bilder durcheinander geladen werden oder übersprungen werden.
bei kirupa.com wurde das thema schon behandelt, aber der lösungsvorschlag mit "clearInterval(_level2.id);" auf den button funzt bei meiner variante irgendwie nicht.

hat jemand eine idee?

schon mal vielen dank im voraus!!!

gpunkt

anbei der code in der main.swf und eine slideshow als slide_1.swf...

var tl = this;
var clicked;
//
var movies = new Array ();
movies[0] = "slide_1";
movies[1] = "slide_2";
movies[2] = "slide_3";
movies[3] = "slide_4";
//
for (var i = 1; i <= 4; i++) {
this["button_" + i].onRollOver = function () {
if (this != tl.clicked) {
this.gotoAndStop (2);
}
};
this["button_" + i].onRollOut = this["button_" + i].onReleaseOutside = function () {
if (this != tl.clicked) {
this.gotoAndStop (1);
}
};
this["button_" + i].onRelease = function () {
if (this != tl.clicked) {
slideshow_loader.loadMovie (movies[Number (this._name.slice (-1)) - 1] + ".swf");
this.gotoAndStop (3);
tl.clicked.gotoAndStop (1);
tl.clicked.useHandCursor = true;
tl.clicked = this;
this.useHandCursor = false;
clearInterval(_level2.id);
}
};
}
Angehängte Dateien
Dateityp: zip slide_1.zip (12,9 KB, 13x aufgerufen)
gpunkt ist offline  
Alt 09-10-2007, 09:43   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
clearInterval(_level2.id);
Wieso Level 2? trace dir die Variable mal aus...
 
Alt 09-10-2007, 12:24   #3 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 13
danke für deine antwort, agedoubleju...

es kommt sowohl bei

trace(id); als auch bei

trace(_level2.id); ein undefined.

ich denke das ist der knackpunkt. wie greife ich denn auf den interwall zu?

cheeers,

gpunkt
gpunkt ist offline  
Alt 09-10-2007, 12:27   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Was passiert bei _level0.id? Ich hab aber keine Ahnung, wo du die Intervall-Referenz gesetzt hast...
 
Alt 09-10-2007, 12:39   #5 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 13
_level0.id ist auch undefined...

der intervall wird in den einzelnen slideshows gesetzt. in der slide_1.swf
wird das einmaal in zeile 14 mit

id = setInterval(preloadPic, 100);

und einmal in zeile 40 mit

id = setInterval(nextImage, 3000);

aufgerufen.

schon einmal vielen dank für deine mühe.

gpunkt
gpunkt ist offline  
Alt 09-10-2007, 12:42   #6 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 13
achso und das habe ich noch vergessen:

var id, current;

steht in der ersten zeile der slideshowaction...
gpunkt ist offline  
Alt 09-10-2007, 13:10   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
id = setInterval(preloadPic, 100);
Na ja, entweder du machst daraus Zeitleisten-Variablen, also _level0.id, _leve0.id2 etc und löscht dann auch mit clearInterval(_level0.id) bzw clearInterval(_level0.id2) oder du greifst über den MC-Pfad auf die Variablen zu, also bspw. clearInterval(meinEingebetteterMC.id).
 
Alt 09-10-2007, 13:42   #8 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 13
Thumbs up

super - vielen dank agedoubleju!
scheint geklappt zu haben...
gpunkt ist offline  
Alt 28-04-2008, 15:55   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 34
Ich habe das gleiche Problem

Hallo,

ich hab ein ähnliches Problem mit diesem Script.

Hat da jemand eine Idee? Bin kein Profi.


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

//class de.sonntagsfarben.animation.SlideShow{
class as.SlideShow{


private var mcTarget:MovieClip;
private var aBilder:Array;
private var aHolder:Array;

private var oProp:Object;
private var sPath:String;
private var nCurrent:Number;
private var seconds:Number;
private var nInterval:Number;

private var mlLoader:MovieClipLoader;
private var mlListener:Object;

private var isStarted:Boolean;



//CONSTRUCTOR
public function SlideShow(mcTarget:MovieClip,aBilder:Array,seconds :Number,sPath:String,oProp:Object){

setTarget(mcTarget);
setSeconds(seconds);
setPath(sPath);
setProperties(oProp);
setBilder(aBilder);//startet slideshow

}



private function setup(Void):Void{
tr("SlideShow: setup()");
mlLoader = new MovieClipLoader();
initListeners();
createBilderHolder();
nCurrent = 0;
}


private function createBilderHolder(Void):Void{
for(var i:Number = 0;i<aHolder.length;i++){
aHolder[i].removeMovieClip();
}
aHolder = new Array();
for(var i:Number = 0; i< aBilder.length; i++){
var target:MovieClip = mcTarget.createEmptyMovieClip("mcholder3_"+i,mcTar get.getNextHighestDepth());
aHolder[i] = target;
loadBild(aBilder[i],target);
}
}

private function loadBild(src:String,target:MovieClip):Void{
tr("SlideShow: loadBild("+src+")")
mlLoader.loadClip (this.getPath()+src, target);
mlLoader.addListener(mlListener);
}


private function next(Void):Void{
tr("SlideShow: next()")
if(!isStarted){
isStarted = true;
(aHolder.length<=1)? fadeInOutImage(aHolder[0],false) : fadeInOutImage(aHolder[0],true);
return;
}

clearInterval(nInterval);
nCurrent = (nCurrent<aHolder.length-1)? ++nCurrent : 0;
fadeInOutImage(aHolder[nCurrent],true);
}



private function fadeInOutImage(src:MovieClip,hasNext:Boolean):Void {
tr("SlideShow: fadeInOutImage("+src+")");
var scope = this;
clearInterval(nInterval);
src._alpha = 100;
TransitionManager.start(src,{type:Fade,direction:0 ,duration:2,easing:Regular.easeOut});

if(!hasNext)
return;

nInterval = setInterval(function(){
clearInterval(scope.nInterval);
scope.next();
TransitionManager.start(src,{type:Fade,direction:1 ,duration:2,easing:Regular.easeOut});
},seconds);
}



private function initListeners():Void{
var scope:SlideShow = this;
mlListener = new Object();
mlListener.onLoadStart = function(mcLoaded:MovieClip){
mcLoaded._alpha = 0;
}

mlListener.onLoadInit = function(mcLoaded:MovieClip){
scope.tr(mcLoaded," geladen");
mcLoaded._alpha = 0;
for(var i in scope.oProp){
mcLoaded[i] = scope.oProp[i];
}
if(mcLoaded._name == 'mcholder3_0'){
scope.start();
}
}
}


private function deleteEmptyArrayValue(a:Array):Array{
for (var i:Number = 0; i<a.length;i++){
if(a[i] == undefined || a[i] == ''){
a.splice(i,1);
}
}
return a;
}




//start slideshow
public function start(Void):Void{
tr("SlideShow: start()")
this.stop();
next();
}

//pause slideshow
public function pause(Void):Void{
clearInterval(nInterval);
}

//stop slideshow
public function stop(Void):Void{
clearInterval(nInterval);
isStarted = false;
nCurrent = 0;
}

//trace
public function tr () {
trace (arguments.join (" : "));
}



//target
public function setTarget(value:MovieClip):Void{
this.mcTarget = value;
}
public function getTarget(Void):MovieClip{
return this.mcTarget;
}

//bilder
public function setBilder(a:Array):Void{
tr("SlideShow: setBilder("+a+")");
this.stop();
this.aBilder = deleteEmptyArrayValue(a);
if(aBilder != null && aBilder.length>=1)
setup();
}
public function getBilder(Void):Array{
return this.aBilder;
}

//seconds
public function setSeconds(value:Number):Void{
this.seconds = value*1000;
}
public function getSeconds():Number{
return this.seconds;
}

//pfad
public function setPath(value:String):Void{
if(value == null || value == '')
value = './';
this.sPath = value;
}
public function getPath(Void):String{
return this.sPath;
}

//LoaderListener
public function setProperties(value:Object):Void{
this.oProp = value;
}
public function getProperties(Void):Object{
return this.oProp;
}


}
djok ist offline  
Alt 28-04-2008, 16:01   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
ich hab ein ähnliches Problem mit diesem Script
Soso... welches denn? Und bitte grenz den Bug erst einmal ein.
 
Alt 28-04-2008, 16:03   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 34
der bug

hatte es hier schonmal komplett beschrieben.
ich denke es ist das gleiche problem.
aber ich weiß nicht wo ich was ändern soll.

Slideshow mit externen Bildern springt beim zweiten aufrufen
djok ist offline  
Alt 28-04-2008, 16:08   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
hatte es hier schonmal komplett beschrieben.
Bitte keine Mehrfachposts zum selben Thema, hier geht es weiter.
 
Thema geschlossen

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele