| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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 );
} 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 |
| | |
| | #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 ;-) |
| | |
| | #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.
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |