[FL CS3] MC Tween callback wir online nicht ausgeführt

Eisbaer

Erfahrenes Mitglied
Hallo,

ich habe ein Problem eine Slideshow online zum laufen zu bringen. Vorweg ein Paar Informationen. Lokal funbktioniert die Slideshow, Online auch wenn die Bilder von der selben Domain geladen werden, lädt die Slideshow nun aber Bilder von einer anderen Domain wird ein Callback von einem MC Tween tween nicht ausgelöst, die Bilder werden geladen.

hier der Teil Code (die _root.debug Variable ist für mich um es Online zu debuggen, mehr oder weniger)

PHP:
slideshow = function () {
	_root.debug = "\nEnter Slideshow"+_root.debug;
	if (_root.randpic.length == 0) {
		_root.debug = "\nBuild_array"+_root.debug;
		build_array();
	}
	if (_root.mc_loader._alpha == 100) {
		_root.debug = "\nFadeout loader"+_root.debug;
		_root.mc_loader.alphaTo(0,0.5,"linear");
	}
	_root.randvalue = _root.randpic.length-1;
	_root.debug = "\nNächstes Bild: "+_root.randvalue+" "+_root.debug;
	_root.randpic.splice(_root.randvalue,1);
	_root.debug = "\nAltes Bild: "+_root.oldbox+" "+_root.debug;
	_root.debug = "\nAlpha: "+_root["image_box_"+_root.oldbox]._alpha+_root.debug;
	_root.debug = "\nFadeout: "+_root["image_box_"+_root.oldbox]+_root.debug;
	_root["image_box_"+_root.oldbox].alphaTo(0,1,"linear");
	_root["image_box_"+_root.randvalue]._alpha = 0;
	_root["image_box_"+_root.randvalue]._visible = true;
	_root.debug = "\nAlpha: "+_root["image_box_"+_root.randvalue]._alpha+_root.debug;
	_root.debug = "\nFadein: "+_root["image_box_"+_root.randvalue]+_root.debug;
	_root["image_box_"+_root.randvalue].alphaTo(100,1,"linear",0,function () {
		_root.debug = "\nStarte Callback: "+_root.switch_delay+" (ms) "+_root.debug;
		setTimeout(_root.slideshow,_root.switch_delay);
	});
	_root.oldbox = _root.randvalue;
};

kurze erklärung, wenn die Slideshow aufgerufen wird sind bereits alle Bilder in die duplizierten MC's geladen.

Die Funktion build_array(); bastelt einfach nur ein Array (_root.randpic) mit den Bilderpfaden. Sollte dieses Array leer sein (length == 0) wird es wieder Komplett gebaut.

Sollte der Loader noch sichtbar sein (alpha == 100) wird dieser mit einem MC Tween tween ausgeblendet.

Jetzt wird der Variable _root.randvalue der letzte Index des Bilder Arrays zugewiesen (Vorher war das auch wirklich mal ein Random Wert, nur es soll nun Linear werden, deshalb sind noch Reste hier vorhanden)

Dann wird per splice dieser Wert aus dem Array geschnitten, da wir die Bilder ja nicht doppelt anzeigen wollen (Jedenfalls nicht in einem Durchgang, erst bis alle durch sind).

Im nächsten Schritt wird der MC mit dem alten Bild ausgeblendet mit einem MC Tween tween und der MC mit dem neuen Bild eingeblendet, beim einblenden gibt es einen Callback, d.h. nachdem der MC eingeblendet ist sollte mit setTimeout nach 5 sekunden (_root.switch_delay = 5000) die Slideshow wieder aufgerufen werden.

Und hier das Problem, Lokal und Online funktioniert es, werden die Bilder allerdings von einer anderen Domain geladen geht er nicht mehr in den Callback (Bilder werden aber alle geladen). Auch der MC zum einblenden ist da, er hat auch ein alpha Wert von 0. Bin ziemlich Ratlos nun da ich schon sehr viele Wege probiert habe, und nichts den gewünschten Erfolg bringt.

Vielleicht kennt einer ja diese Problematik und kann helfen, besten Dank & Gruss
 
Der Flash Film läuft in einer Security Sandbox. - Hast du denn die Rechte um die Daten von der anderen Domain zu laden?

Wenn nein dann hlft dir hier der Punkt crossdomain.xml weiter.
 
Hi Denniz,

das Bilder Laden ist ja nicht das Problem (denke ich, da Sie ja geladen werden). Ja ich habe die Rechte. Es ist so das es Praktisch einen Server gibt wo die ganzen Bilder liegen und dann von verschiedenen Domains darauf zugegriffen wird. Bilder laden und anzeigen geht auch sehr gut, nur leider wird der Callback niemals ausgeführt solange die Bilder von einer anderen Domain geladen werden, wie das ganze zusammenhängt also Externe Domain und Callback kann ich nicht wirklich sagen, sollte eigentlich nichts miteinander zu tun haben.

Gruss
 
Ja seltsam, um zu sagen warum der callback nicht ausgeführt wird brauchen wir dann relevante Codeteile.
 
Zuletzt bearbeitet:
Hier werden die Bilder sowie der Delay aus der Datenbank mittels PHP geladen, sowie build_array() ausgeführt um das Bilder Array zu erstellen.

PHP:
picload = new LoadVars();
picload.isflashpost = "flash";
picload.onLoad = function(done) {
	if (done) {
		_root.switch_delay = this.img_delay;
		
		_root.images = new Array();
		_root.img_rows = this.img_row;
		
		
		for(tx = 0; tx < _root.img_rows; tx++){
			_root.images[tx] = this["img"+tx];
		}
		
		build_array();
		_root.load_image(0);		
		
	}
};

Hier die build_array()

PHP:
_root.randpic = new Array();

build_array = function () {
	_root.debug = "\nEnter build_array"+_root.debug;
	for (tx=0; tx<_root.images.length; tx++) {
		_root.randpic[tx] = _root.images[tx];
	}
};

und hier die load_image. Hier wird zuerst ein MC dupliziert, dieser wird positioniert und der Alpha Wert auf 0 gesetzt. Danach wird das Bild geladen, die Funktion ruft sich solange selbst auf Bis alle Bilder geladen sind. Sind alle Bilder geladen wird die Slideshow Funktion aufgerufen.

PHP:
load_image = function(ix){
			
		duplicateMovieClip("image_box","image_box_"+ix,_root.getNextHighestDepth());
		_root.debug = "\nBox erstellt: "+_root["image_box_"+ix]+_root.debug;
		_root["image_box_"+ix]._x = 10;
		_root["image_box_"+ix]._y = 10;
		_root["image_box_"+ix]._alpha = 0;
		
		var LoadingInterval:Number
		var my_mcl:MovieClipLoader = new MovieClipLoader();
		var mclListener:Object = new Object();
		mclListener.onLoadStart = function() {
			_root.debug = "Lade Bild "+ix+" "+_root.debug;
		};
		mclListener.onLoadProgress = function(target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void {
		};
		mclListener.onLoadError = function(){
		}
		mclListener.onLoadComplete = function(){
		}
		mclListener.onLoadInit = function(){
		_root.debug = "\n100% "+_root.debug;
		if(ix <= (_root.img_rows)-2){
			ix++;
			_root.load_image(ix);
		}else{
			_root.debug = "\nAlle Bilder geladen"+_root.debug;
			_root.debug = "\nSlideshow Erster Start"+_root.debug;
			_root.slideshow();
		}
	}
	my_mcl.addListener(mclListener);
	my_mcl.loadClip(_root.images[ix], _root["image_box_"+ix]);
	
	_root.border_mc.swapDepths(_root.getNextHighestDepth());
	_root.debug_text.swapDepths(_root.getNextHighestDepth());
}

Sollte noch etwas fehlen was benötigt wird bitte kurz bescheid geben.

Danke & Gruss

P.S.: hier mal die "Trace"/Debug ausgaben

Lokal (Auszug, da es ja Theoretisch eine Schleife ist):

Starte Callback: 5000 (ms)
Fadein: _level0.image_box_4
Alpha: 0
Fadeout: _level0.image_box_5
Alpha: 100
Altes Bild: 5
Nächstes Bild: 4
Enter Slideshow
Starte Callback: 5000 (ms)
Fadein: _level0.image_box_5
Alpha: 0
Fadeout: undefined
Alpha: undefined
Altes Bild: undefined
Nächstes Bild: 5
Fadeout loader
Enter Slideshow
Slideshow Erster Start
Alle Bilder geladen
100% Lade Bild 5
Box erstellt: _level0.image_box_5
100% Lade Bild 4
Box erstellt: _level0.image_box_4
100% Lade Bild 3
Box erstellt: _level0.image_box_3
100% Lade Bild 2
Box erstellt: _level0.image_box_2
100% Lade Bild 1
Box erstellt: _level0.image_box_1
100% Lade Bild 0
Box erstellt: _level0.image_box_0
Enter build_array


Und hier Online beim Laden von einer anderen Domain (komplett, da ja hier der Callback nicht aufgerufen wird):


Fadein: _level0.image_box_15
Alpha: 0
Fadeout: undefined
Alpha: undefined
Altes Bild: undefined
Nächstes Bild: 15
Fadeout loader
Enter Slideshow
Slideshow Erster Start
Alle Bilder geladen
100% Lade Bild 15
Box erstellt: _level0.image_box_15
100% Lade Bild 14
Box erstellt: _level0.image_box_14
100% Lade Bild 13
Box erstellt: _level0.image_box_13
100% Lade Bild 12
Box erstellt: _level0.image_box_12
100% Lade Bild 11
Box erstellt: _level0.image_box_11
100% Lade Bild 10
Box erstellt: _level0.image_box_10
100% Lade Bild 9
Box erstellt: _level0.image_box_9
100% Lade Bild 8
Box erstellt: _level0.image_box_8
100% Lade Bild 7
Box erstellt: _level0.image_box_7
100% Lade Bild 6
Box erstellt: _level0.image_box_6
100% Lade Bild 5
Box erstellt: _level0.image_box_5
100% Lade Bild 4
Box erstellt: _level0.image_box_4
100% Lade Bild 3
Box erstellt: _level0.image_box_3
100% Lade Bild 2
Box erstellt: _level0.image_box_2
100% Lade Bild 1
Box erstellt: _level0.image_box_1
100% Lade Bild 0
Box erstellt: _level0.image_box_0
Enter build_array


//Edit 2

Habe nun mal probiert statt die Bilder direkt zu laden dort ein PHP Script ziwschen zu schalten welches praktisch die Bilder lädt und wieder ausgibt, leider ist es das selbe Problem, Lokal ja, Online nix :(

//Edit 3

Ok mittlerweile bin ich bei der Erkenntnis das nicht der Callback nicht ausgeführt wird sonder der ganze Tween (und deshalb natürlich auch nicht der Callback)

Kein Fachkundiger MC Tweener (2) anwesend :D



// Lösung!

Also das Problem liegt bei MC Tween, irgendwie steigt das Online aus (warum auch immer), die Lösung war bei mir auf die Tweener Erweiterung zurückzugreifen: http://code.google.com/p/tweener/

Gruss und bis bald, Eisbaer
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück