PDA

Volledige versie bekijken : ingeladen swf moet loader swf functie benaderen


ar34z
%Europe/Berlin %425 %2007, 10:12
Hallo,

Het is misschien een lange titel, maar korter kan ik het niet omschrijven.

Ik heb een movie.swf die ingeladen wordt door preloader.swf.

Omdat movie.swf ingeladen wordt, kan ik niet meer bij mijn stage variabele. In preloader.swf bestaat deze dan wel.
Hoe kan ik deze benaderen vanuit movie.swf?

Graag zou ik daarbij ook nog een functie willen kunnen aanroepen vanuit movie.swf die in preloader.swf aanwezig is.

Alle actionscript bevindt zich in .as bestanden (voor beide swf) die gekoppeld zijn aan de document class.

Ik hoop dat iemand me kan helpen :)

theFlashWizard
%Europe/Berlin %456 %2007, 10:57
Ik zou eens proberen vanaf preloader de (public) properties en methods proberen aan te roepen in de movie document class. In theorie moet dat kunnen. (Heb het gister met properties in een framescript zien werken)
Dan kun je wanneer de swf is ingeladen alle info makkelijk doorgeven.

ar34z
%Europe/Berlin %485 %2007, 11:38
Ik heb het geprobeerd, het werk niet.
Misschien doe ik iets fout, want dit is de eerste keer dat ik een externe preloader gebruik.

Hier wat code:

file1.as

package {
import flash.display.MovieClip
import flash.text.TextField;
public class file1 extends MovieClip {


public function file1()
{
info.text = 'Stage: '+stage;
}
}
}



preloader.as

package {
import flash.display.MovieClip
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.text.TextField;

public class preloader extends MovieClip {

private var ldr:Loader;

// probeer deze variabele te benaderne vanuit file1.swf
public var accessMe:String = 'public variable';

public function preloader()
{
info.text = "Stage: "+ stage;

// file1.swf inladen
ldr = new Loader();
var request:URLRequest = new URLRequest( "file1.swf" );
ldr.contentLoaderInfo.addEventListener( Event.INIT, initHandler);
ldr.load( request );
}

private function initHandler( e:Event):void
{
trace("loaded");
addChild(ldr);
}

// probeer deze functie te benaderen vanuit file1.swf
public function accessTest():String
{
return "I have been accessed";
}
}
}


In de bijlage het ik het voorbeeldje zitten. In elke bestand zit een TextField genaam "info".

Ik wil dus vanuit file1 de functie "accessTest" in preloader kunnen benaderen. Het lijkt me duidelijk dat als ik de functie kan aanroepen, het ook mogelijk is om de variabele "accessMe" te kunnen benaderen.

Eventueel kun je hier een voorbeeld bekijken van bovenstaande code
http://upload.ar34z.net/preload (http://upload.ar34z.net/preload/)

theFlashWizard
%Europe/Berlin %520 %2007, 12:29
Ik zou net als je normaal niet doet met OOP ook hiermee niet van onderen naar boven gaan.
Ik zou vanaf de preloader een method/property in dat ingeladen bestand aanroepen.

Dennis kemp
%Europe/Berlin %695 %2007, 16:41
Ik zat met een soortgelijk probleem dat is net opgelost in http://www.flashfocus.nl/forum/showthread.php?p=294439#post294439
misschien heb jij hier ook iets aan ;)