Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-02-2010, 21:35   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
Ersatz lookroot AS 3.0

Hey Leute,

ich weis zwar das es ab AS 3.0 kein lookroot mehr gibt...aber irgendwie brauch ich es und komm deswegen nicht weiter....

Ich hab eine Haupt.swf in der ist ein Movieclip in den ich eine swf (galerie.swf) laden möchte...das klappt auch...
So weit so gut....die galerie.swf + eine XML datei namens bilder.xml (auf die greift die galerie.swf zu) liegen in einem Unterordner...an die kommt er aber nicht mehr dran weil er von dem Pfad ausgeht in dem die Haupt.swf liegt...leider kann ich nicht den komplette Pfad zur XML einfach angeben da ich mir den in der Haupt.swf dynamisch erzeuge...

folgende Fehlermeldung erscheint

Code:
Error #2044: ioError unverarbeitet. text=Error #2032: Stream-Fehler. URL: file:///F|/testphase/page/underpages/bilder.xml
	at ReadXML()
so sehen meine Verzeichnisse aus...

underpages/haupt.swf


underpages/gal1/galerie.swf

underpages/gal1/bilder.xml


er verucht also die ganze Zeit auf
underpages/bilder.xml

er sollte aber underpages/gal1/bilder.xml zugreifen bzw. direkt auf bilder.xml





ich bräuchte eigentlich nur eine Lösung für die galerie.swf damit die von dem Ordner in dem sie liegt auf die XML zugreift....

Ich hoffe ihr könnt mir helfen
Gruss
Mando

Geändert von Mando (22-02-2010 um 21:36 Uhr)
Mando ist offline   Mit Zitat antworten
Alt 23-02-2010, 08:52   #2 (permalink)
Raven-Kid
 
Benutzerbild von [RK]
 
Registriert seit: Feb 2006
Beiträge: 350
Selbst wenn du dir den Pfad dynamisch erzeugst kannst du ihn ja weiterhin der untergeordneten SWF übergeben

Da eine SWF nicht wirklich etwas anderes ist als ein MovieClip kannst du einfach eine Eigenschaft in deiner zu ladenden SWF erstellen die nach erfolgreichem Ladevorgang gesetzt wird und anschließend von dieser untergeordneten SWF dazu verwendet wird alles weitere zu laden.
[RK] ist offline   Mit Zitat antworten
Alt 23-02-2010, 09:54   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
okay...daran hab ich garnicht gedacht...kennst du vllt ne Möglichkeit wie man des am besten lösen kann....hab zwar grad schon was gefunden...aber funkt irgendwie nicht so......

Parameter mit loaderInfo.parameters übergeben
Mando ist offline   Mit Zitat antworten
Alt 23-02-2010, 13:11   #4 (permalink)
Raven-Kid
 
Benutzerbild von [RK]
 
Registriert seit: Feb 2006
Beiträge: 350
Sobald du die Möglichkeit hast eine SWF per addChild() auf deine Bühne (Haupt-SWF) hinzuzufügen, kannst du sie wie jedes andere MovieClip behandeln. (Bin mir allerdings nicht sicher ob es als MovieClip typisierbar ist, sie ist in jedenfall dynamic (wie Object))

ActionScript:
  1. myLoadedSWF.myVariableToTellTheLoadedSWFthePath = myPath;
[RK] ist offline   Mit Zitat antworten
Alt 23-02-2010, 14:08   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
ich weis zwar das es ab AS 3.0 kein lookroot mehr gibt
Das Ding hieß _lockroot und war dazu gedacht, eine nachgeladene Zeitleiste ebenfalls zu einer Hauptzeitleiste zu machen. Da es in AS3 aber keine echte Hauptzeitleiste mehr gibt, sondern nur noch die DisplayObjectList, ist der Befehl überflüssig. Auf nachgeladene Zeitleisten kannst du über die loader-Instanzen und über LoaderInfo-Instanzen zugreifen.
PHP-Code:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.load(new URLRequest("meine.swf"));
addChild(loader);

function 
completeHandler(event:Event):void
{
   var 
loader:Loader Loader(event.target.loader);
   var 
info:LoaderInfo LoaderInfo(loader.contentLoaderInfo);
   var 
asVersion:int int(info.actionScriptVersion);
   
trace("asVersion="+asVersion);
   
   var 
meinMC:MovieClip loader.content as MovieClip;
   
trace("meinMC="+meinMC);
   
trace("meinMC.meineVariable="+meinMC.meineVariable);
}
/*
gibt bspw.:
asVersion=3
meinMC=[object MainTimeline]
meinMC.meineVariable=42
*/ 
  Mit Zitat antworten
Alt 23-02-2010, 23:09   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
also erstmal danke für eure schnellen Antworten das mit dem _lookroot war eher etwas faulheit...sry.....

also ich hab das ganze jetzt so probiert....
Code:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.load(new URLRequest("galeries/gal1/gal1.swf"));
addChild(loader);

function completeHandler(event:Event):void
{
   var loader:Loader = Loader(event.target.loader);
   var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo);
   var meinMC:MovieClip = loader.content as MovieClip;
   meinMC.pfad = "galeries/gal1/bilder.xml"
}
und versuche in der geladenen swf dan so darauf zu zugreifen...

Code:
		public function ReadXML():void
		{
			trace(pfad+"hallo");

			var url:URLRequest = new URLRequest(pfad);
es kommt keine Fehlermeldung aber es passiert auch nicht viel...tut mir leid aber ich bin noch nicht solange unterwegs mit AS 3.0...ich hab leider klein plan wie genau ich das jetzt noch vollenden muss bzw. wie ich in der geladenen swf an die Eigenschaft dran komme...

Geändert von Mando (23-02-2010 um 23:10 Uhr)
Mando ist offline   Mit Zitat antworten
Alt 24-02-2010, 06:55   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Na ja, das war doch aber in AS2 auch nicht anders. Wenn du einem nachgeladenen Film Werte übergibst, musst du sie dann auch abrufen. Das ganze läuft aber asynchron, deswegen solltest du nicht nur den Wert übergeben, sondern auch eine Funktion aufrufen, die den Wert übernimmt.
PHP-Code:
var meinMC:MovieClip loader.content as MovieClip;
var 
pfad:String "galeries/gal1/bilder.xml"
meinMC.ladePfad(pfad);

//und im nachgeladenen Film
function ladePfad(meinFile:String):void
{
   var 
url:URLRequest = new URLRequest(meinFile);


  Mit Zitat antworten
Alt 24-02-2010, 12:25   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
tut mir echt leid...langsam komm ich mir auch echt etwas blöd vor...ich versteh zwar jetzt das ganze...aber irgendwie funkt es immer noch nicht.....


hier lade ich ja die swf...und die Variable(Parameter) für die swf die rein laden möchte
PHP-Code:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.load(new URLRequest("galeries/gal1/gal1.swf"));
addChild(loader);

function 
completeHandler(event:Event):void
{
   

   var 
loader:Loader Loader(event.target.loader);
   var 
info:LoaderInfo LoaderInfo(loader.contentLoaderInfo);
   var 
meinMC:MovieClip loader.content as MovieClip;
  var 
pfad:String "galeries/gal1/bilder.xml"
  
meinMC.ReadXML(pfad); 
   
   
trace(meinMC.pfad);

und hier versuch ich wie von dir beschrieben auf die Variable(Parameter) zuzugreifen...
PHP-Code:
....
....
....
....


public var 
meinFile:String = new String();

public function 
ReadXML(meinFile:String):void
{
    var 
url:URLRequest = new URLRequest(meinFile);
    var 
xmlloader:URLLoader = new URLLoader();
    
xmlloader.addEventListener(Event.COMPLETEparseXML);
    
xmlloader.load(url);

    function 
parseXML(evt:Event)
    {
        
pfadbilder = new Array();
        
textbilder = new Array();
        
namebilder = new Array();
        
thumbpfad = new Array();

...
...
...
...
... 

es kommt aber immer wieder die Fehlermeldung
Code:
ArgumentError: Error #1063: Nicht übereinstimmende Argumentzählung für ReadXML(). 1 erwartet, 0 erhalten.
sprich er kommmt nicht dran...oder bekommt halt kein Wert übermittelt...
irgendetwas mach ich noch falsch oder hab ich übersehen....
Mando ist offline   Mit Zitat antworten
Alt 24-02-2010, 12:56   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
PHP-Code:
//public var meinFile:String = new String();

public function ReadXML(meinFile:String):void

Lass mal die Initialsierung der Variablen "meinFile" weg, sonst gibt es Probleme damit in der Funktion. Oder erstell das so:
PHP-Code:
public var meinFile:String = new String();

public function 
ReadXML(mf:String):void


   
meinFile mf;
   var 
url:URLRequest = new URLRequest(meinFile); 
  Mit Zitat antworten
Alt 24-02-2010, 18:31   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
ich hab beides ausprobiert....kommt immer wieder die Fehlermeldung...
ich war jetzt mal so frech und hab die Dateien mal als Anhang hochgeladen...ich hab leider kein plan mehr... hab auch nochmal gegoogelt...abre irgendwie komm ich nicht weiter.....
Angehängte Dateien
Dateityp: zip test.zip (22,8 KB, 5x aufgerufen)
Mando ist offline   Mit Zitat antworten
Alt 25-02-2010, 15:26   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 85
ich hab es jetzt hinbekommen...allerdingt bin ich mir nicht sicher ob die Lösung so geschickt ist....
es funktioniert eigentlich so wie agedoubleju es beschrieben hat nur dass der übergebene Wert in der
geladenen swf Initialsiert sein muss und das man den Paramter nicht direkt an den Konstruktor übergeben kann...
hab es aber nochmal kommentiert im Code...

hier wird die Variable vorbereitet
PHP-Code:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.load(new URLRequest("galeries/gal1/gal1.swf"));
addChild(loader);

function 
completeHandler(event:Event):void
{

   var 
loader:Loader Loader(event.target.loader);
   var 
info:LoaderInfo LoaderInfo(loader.contentLoaderInfo);
   var 
meinMC:MovieClip loader.content as MovieClip;
   var 
pfad:String "galeries/gal1/bilder.xml"
   
meinMC.testy(pfad); //testy ist die funktion im geladenen Film..an den die Variable übergeben wird... 
                          //und pfad der übergebene wert wobei der im geladenen film Initialsiert sein muss
   
   
trace(meinMC.pfad);


und hier dann die swf die rein geladen wird

PHP-Code:
private var pfadbilder:Array = new Array();
private var 
textbilder:Array = new Array();
private var 
namebilder:Array = new Array();
private var 
thumbpfad:Array =  new Array();
public var 
pfad:String = new String(); // die eigenschaft pfad muss Initialsiert sein sonst geht es nicht..
public var urll:String = new String();

        
public function 
ReadXML():void // der Konstruktor..wobei hier nichts mehr drinne steht...
                               // wenn wan versucht den Wert direkt hier als Paramter zu übergeben 
                               // kommt ständig die Fehlermeldung das er ein Argumment erwartet aber nichts bekommt
{
            
}
        
public function 
testy(meinFile:String):void // die funktion testy...in der übergebe ich den Wert "pfad" an den Parameter "meinFile"
                                              // das speicher ich dann in eine Variable und 
                                              // rufe die function mache() auf in der wird dann die XML verarbeitet
{
    
    
urll meinFile;
    
trace(meinFile);
    
mache(urll);
}

        public function 
mache(link:String):void // XML
        
{
            
            var 
url:URLRequest = new URLRequest(link);
            var 
xmlloader:URLLoader = new URLLoader();
            
xmlloader.addEventListener(Event.COMPLETEparseXML);
            
xmlloader.load(url);

            function 
parseXML(evt:Event)
            {
                
pfadbilder = new Array();
                
textbilder = new Array();
                
namebilder = new Array();
                
thumbpfad = new Array();
                
                
                var 
xml:XML XML(xmlloader.data);
                
xml.ignoreWhite true;
                
                
                
                for(var 
t:int =0<xml.bild.length();t++)
                {
                    
pfadbilder[t] = xml.bild[t].attribute("pfad");
                    
textbilder[t] = xml.bild[t].attribute("info");
                    
namebilder[t] = xml.bild[t].attribute("nameb");
                    
thumbpfad[t] = xml.bild[t].attribute("thumb");
                }
                
                
trace(pfadbilder); 

wie gesagt bin mir nicht sicher ob das ganz so ideal ist...grade wegen dem Konstruktor....so geht es zumindestens...falls ichr noch ne Idee habt...vielen Dank nochmal
Gruss
Armando

Geändert von Mando (25-02-2010 um 15:38 Uhr)
Mando ist offline   Mit Zitat antworten
Alt 25-02-2010, 17:21   #12 (permalink)
Raven-Kid
 
Benutzerbild von [RK]
 
Registriert seit: Feb 2006
Beiträge: 350
Genau so geht es. Dem Konstruktor der zu ladenen SWF kannst du nichts übergeben, da diese bereits konstruiert ist wenn du sie geladen hast.
[RK] ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as 3.0, lookroot, xml

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PC als TV-Ersatz haui Am Rande 9 12-12-2004 14:20
f11 ersatz aprox Flash MX 2 13-11-2004 11:04
Delphi-Ersatz FlashOPA_55 Komponenten und SmartClips 9 20-12-2003 09:09
Delphi Ersatz??? FlashOPA_55 ActionScript 1 0 09-12-2003 19:01
Ersatz für & vau7 HTML und CSS 11 04-11-2003 05:33


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele