Bild dynamisch einbinden AS 3


#1
Hallo,

wir haben im Studium vor Kurzem mit Flash und ActionScript 3 programmierung begonnen und sollen nun eine kleine Site machen, in der die Bilder dynamisch über ein XML reingeladen werden sollen.

Ich sitz nun schon ein weilchen vor dem Script und hab auch theoretisch soweit alles vorbereitet und wenn ich die Dateipfade tracen lasse, zeigt er mir sie korrekt an (es isnd bis jetzt nur 2).
Nur wenn ich anfange die Bilder dann tatsächlich ins Array laden will, kommen die Probleme.

Hier die Fehlermeldung, die dann ausgegeben wird:



TypeError: Error #1034: Typumwandlung fehlgeschlagen: XMLList@4a92ee9 kann nicht in flash.net.URLRequest umgewandelt werden.
at Seite_fla::MainTimeline/XMLLoader()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/flash.net:URLLoader::eek:nComplete()



Kann mir jemand sagen, was hier der Fehler ist, bzw. ob noch etwas fehlt? Bin schon sehr dankbar :)

Hier das ActionScript:

Code:
stop();

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;

var uload:URLLoader = new URLLoader();

uload.load(new URLRequest("seite.xml"));
uload.addEventListener(Event.COMPLETE, XMLLoader);


var textXML:XML;
var myBilder:Array = new Array();


function XMLLoader(e:Event) :void
{
	XML.ignoreWhitespace = true;
	textXML = new XML(e.target.data);
	//trace(textXML.bilder.bild.src.text());
	//var actXPos = 100;
	
	for (var i : Number = 0; i < textXML.bilder.bild.length(); i++)
	{
		//trace(textXML.bilder.bild[i].src.text ());
		
		var myloader:Loader = new Loader();
		var my_mc:MovieClip = new MovieClip();
		
		myloader.load(new URLRequest(textXML.bilder.bild[i].src.text()));
		myloader.load(textXML.bilder.bild[i].src.text ());
		myBilder.push(my_mc.addChild(myloader));
	}
	
	createGallery();

}

function createGallery()
{
	for (var i in myBilder)
	{
		addChild(myBilder[i]);
	}
}
und hier die XML

HTML:
<?xml version="1.0" encoding="uft-8"?>

 <inhalte>
  
  <bilder>

   <bild>
    <src>bilder/bild_1.jpg</src>
   </bild>

   <bild>
    <src>bilder/bild_2.jpg</src>
   </bild>

  </bilder>


 </inhalte>
Vielen Dank schonmal :)
 

kalterjava

Erfahrenes Mitglied
#2
Hi

sponten würde ich sagen, dass du evtl. etwas laden möchtest, was noch nicht geladen ist. Also bis Flash die XML geladen hat, kann es sein, dass dein Funktionsaufruf zu schnell kommt und die Daten noch fehlen.

Teste mal was passiert, wenn du den Funktionsaufruf in der Zeitleiste auf Bild 40 ausführst.

Ansonsten was mir noch auffällt:

PHP:
var myloader:Loader = new Loader();
var my_mc:MovieClip = new MovieClip();
Setz mal das ausserhalb der XMLLoader - Funktion

und

PHP:
function createGallery()
{
    for (var i in myBilder)
    {
        addChild(myBilder[i]);
    }
}
das addChild müsstest du denke ich noch einen MC davor hängen

also so

Code:
mein_MC.addChild(myBilder[i]);//vorausgesetzt diesen MC gibt es auf der Bühne oder wurde dynamisch erzeugt.

Wenn ich dir als Anfänger einen Tipp geben darf, versuch am Anfang mal deutsche Platzhalter zu verwenden. Du kannst dann deine Variablen und Funktionsnamen viel schneller von den statischen Programm-Variablen auseinander halten. Nur am Anfang versteht sich, weil das was du jetzt schon machst in der Praxis später bevorzugt wird.

Ansonsten kannst ja mal das File hochladen, dann schau ich es mir mal an.

VG
 
Zuletzt bearbeitet: