Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-01-2005, 20:14   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 28
geisterladen

hi

ich habe einen flashfilm der vollständig aus xml geladen wird und von zeit zu zeit einen sehr seltsamen fehler produziert. wenn ich schnell rumklicke, werden einige bilder (von irgendwo sonst in der seite) in _root geladen. das seltsamste an der sache ist, dass ich im gesamten code nie irgendwas jemals in _root lade (ich habe ein leeren movieclip siteHolder, in den alles geladen wird. das ganze kann man sich mal unter http://snm03.snm-hgkz.ch/~gabriel/projekte/index.php ansehen, einfach schnell rumklicken, dann sollte der fehler irgendwann mal auftretten. Ab dann lädt der film munter zeug in _root auch nach refresh, obwohl es wie gesagt im ganzen code keine zeile gibt, die das macht. eine der kritischen codestellen sieht so aus:
Code:
//===============================
// drawing function for the Projects Teaser template
//===============================
function draw_dispProject ( site:String )
{
	var Loader:MovieClipLoader = new MovieClipLoader ();
	var loadListener = new Object ();
	
	loadListener.onLoadInit = function ( loadedClip )
	{
		if ( loadedClip != _root )
		{
		var siteBuilder:MovieClipLoader = new MovieClipLoader ();
		// put in images
		siteBuilder.loadClip(_root.Content[site].Images["bg"].Path, loadedClip.bg);
		siteBuilder.loadClip(_root.Content[site].Images["browse"].Path, loadedClip.browseGraphic);
		siteBuilder.loadClip(_root.Content[site].Images["rollOver1"].Path, loadedClip.picHolder1);
		siteBuilder.loadClip(_root.Content[site].Images["rollOver2"].Path, loadedClip.picHolder2);
		siteBuilder.loadClip(_root.Content[site].Images["rollOver3"].Path, loadedClip.picHolder3);
		// put in content
		loadedClip.time.text = _root.Content[site]["Time_"+CurrentLanguage];
		loadedClip.title.text = _root.Content[site]["Title_"+CurrentLanguage];
		loadedClip.data.htmlText = _root.Content[site]["Data_"+CurrentLanguage];
		if ( _root.Content[site]["Link_"+CurrentLanguage] != "flash" )
			loadedClip.linkHolder.link.htmlText = _root.Content[site]["Link_"+CurrentLanguage];
		else
		{
			// do a in flash navigation with the first subpage
			trace(_root.Content[site].Subpages[0].Page);
			loadedClip.linkHolder.onPress  = function ()
			{
				display_site ( _root.Content[site].Subpages[0].Page );
			}
			if ( CurrentLanguage == "en" )
				loadedClip.linkHolder.link.htmlText = ">> more";//_root.Content[site].Subpages[0].Page;
			else
				loadedClip.linkHolder.link.htmlText = ">> mehr";
		}
		loadedClip.teaser.htmlText = _root.Content[site]["Teaser_"+CurrentLanguage];
		loadedClip.siteTitle.text = _root.Content[site]["NavEntry_"+CurrentLanguage];
	}
	}
	Loader.addListener ( loadListener );
	Loader.loadClip ( "template_dispProjects.swf", _root.siteHolder );
}
hier wird eine seite mittels eines templates aufgebaut.
mein einziger anhaltspunkt bisher ist, dass vielleicht sowas ähnliches passiert, wie dass der hauptfilm beim laden den geladenen clip noch nicht hat (sollte allerdings bei onInit wirklich nich sein) und dann in die nächst höhere instanz, also root lädt. könnte man sowas unterbinden? gibt es ansonsten möglichkeiten, dem film zeit zum rechnen "einzuräumen", so was wie wait() gibts ja glaub ich nicht?

danke
killkolor
killkolor ist offline   Mit Zitat antworten
Alt 29-01-2005, 21:42   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 28
ok, bin etwas weiter gekommen. die obige codestelle ist nicht kritisch, die display funktionen laufen sauber (der fehler kommt nur auf der hauptnavigation, nie aber bei subnavigation vor).
der unterschied zwischen den beiden ist, dass die hauptnavigation einen externen preloader benutzt. das as file für den preloader hab ich mal dazugehängt, wer lust und zeit hat kann sich das mal genauer unter die lupe nehmen, der code darf auch gerne verwendet werden, wenn ihr so ein gebastel wollt ;-)
momentan hab ich aber eine ganz andere frage: ich möchte gerne, dass eine spezielle funktion in diesem as file nicht ausgeführt wird. die funktion lädt inhalte im hintergrund voraus, so dass nachher der seitenaufbau wesentlich schneller bis direkt ist. um die funktion loszuwerden, hab ich erstmal alle möglichen aufrufe auskommentiert und am schluss sogar noch die funktion selber auskommentiert und trotzdem läuft der code noch in die nicht mehr existente funktion. schätze das ist das cache problem bei klassen, das borkel hier beschrieben hat: Wichtige Threads in OOP
das passt auch alles ganz schön, ich hab ein subversion und arbeite in meinem trunk auf einer externen hd. nur leider kann ich beim besten willen keine *.sol datei finden, hab schon sämtliche platten abgesucht. wie werd ich den cache los?

danke
killkolor

im anhang liegt der code für die externe preloader klasse, die preload funktion und sämtliche aufrufe davon sollten natürlich in einer laufenden version nicht auskommentiert sein ;-)
Angehängte Dateien
Dateityp: zip Preloader.zip (3,7 KB, 8x aufgerufen)
killkolor ist offline   Mit Zitat antworten
Alt 29-01-2005, 21:50   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 28
achja, fast hätte ichs vergessen. wenn sich wer wirklich mit dem preloader beschäftigen will, ich vermute das problem beim rekursiven aufruf von preload. wenn der flow einen fehler macht, wird es dadurch möglich, dass preload gleichzeitig mehrmals versucht ein bild, etc. in ein und denselben movieClip zu laden. wie's mit den ebenen aussieht weiss ich nicht, ist ja movieClipLoader und der zeigt das soweit ich weiss nicht an.
killkolor ist offline   Mit Zitat antworten
Antwort

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 14:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele