[AS3]-[XML]- TileList Komponente - Externe Bilder laden

stuffjm

Mitglied
Hallo
Ich habe eine TileList Komponente die ihren Inhalt über eine XML - Datei lädt. Das klappt soweit ganz gut, die Vorschaubilder und die Beschriftung werden geladen. Speichern, Laden und Löschen der Daten in den dafür vorgesehenen Textfeldern funktioniert auch.
Was jedoch nicht klappt, ist, dass das kleine Vorschaubild in der Liste bei einer Selektion in einen dafür vorgesehen MovieClip geladen und dort in voller Größe angezeigt wird.
Ich hab schon nach vielen Lösungsvorschlägen im Internet gesucht und unter anderem diese Seite hier gefunden "http://www.flepstudio.org/forum/tutorials/416-tilelist-label-components-flash-cs3.html". Das Tutorial entspricht ungefähr dem was ich erreichen will.

Leider komm ich aber nicht mit der Weitergabe der URL, die in der XML Datei unter <Image>Beispiel.jpg<image> gespeichert ist, an den MovieClip voran.

Hier ein Auszug aus dem Code (Problem ganz unten).
Würde mich sehr freuen wenn mir jemand weiterhelfen könnte, sitze schon Stunden an dem Problem und des oben genannte Tutorial bringt mich nicht weiter.:confused:

Code:
///////////////////////////////////////////////////////////////////////////////////////////

///////// XML - Eingaben Speichern/ Laden
import fl.events.ListEvent;
import fl.data.DataProvider;

////// Tile List Style
var tf:TextFormat = new TextFormat();
tf.font = "PF Tempesta Seven";
tf.color = 0x484040;
tf.size = 8;
tf.align = "center";
nameList.setRendererStyle("textFormat", tf);
nameList.setStyle("contentPadding", 5);
nameList.sortItemsOn("label");


//////
function init():void {
	nameList.removeAll();
	loadData();
}

var xml:XML;
init();
// loadData();

function loadData():void {
	var myDate:Date = new Date();
	var timestamp:uint = myDate.getTime();
	var myLoader:URLLoader = new URLLoader();
	var myRequest:URLRequest = new URLRequest("data.xml?" + timestamp);
	myLoader.addEventListener(Event.COMPLETE,dataLoaded);
	myLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
	myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
	myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler);
	myLoader.load(myRequest);
}

function dataLoaded(e:Event):void {
	xml = XML(e.target.data);
	initList();
}
function ioErrorHandler(e:IOErrorEvent):void {
	trace("IO-Error");
}
function securityErrorHandler(e:SecurityErrorEvent):void {
	trace("Security-Error");
}
function httpStatusHandler(e:HTTPStatusEvent):void {
	trace("HTTP-Status: "+e.status);
}


function initList():void {
	for (var i:uint = 0; i<xml.entry.length(); i++) {
		var Titel:String = xml.entry[i].Titel;
		var Autor:String = xml.entry[i].Autor;
		var Image:String = xml.entry[i].Image;
		nameList.addItem({label:Titel +" von '" + Autor + "'",source:"images/"+Image});
	}
	nameList.addEventListener(ListEvent.ITEM_CLICK,showEntryData);
	nameList.addEventListener(ListEvent.ITEM_CLICK,showEntryData2);
}

function showEntryData(e:ListEvent):void {
	var myIndex:uint = e.index;
	TitelEingabe_txt.text = xml.entry[myIndex].Titel;
	AutorEingabe_txt.text = xml.entry[myIndex].Autor;
	StichwörterEingabe_txt.text = xml.entry[myIndex].Stichwörter;
	KommentarEingabe_txt.text = xml.entry[myIndex].Kommentar;
	
}

Löschen_txt.addEventListener(MouseEvent.CLICK,deleteEntry);
function deleteEntry(e:MouseEvent):void {
	var myIndex:uint = nameList.selectedIndex;
	delete xml.entry[myIndex];
	if (xml.entry.length() == 0) {
		trace("Die Galerie muss mehr als einen Eintrag besitzen.");
	} else {
		saveXML(null);
	}
}

/// /// ///
/*var laden:Loader = new Loader();
laden.x = 10;
laden.y = 10;
addChild(laden);
var url:URLRequest = new URLRequest();

function ladeExterneBilder(){
	
	laden.load(url);
}
ladeExterneBilder();
url.url = "http://http://www.google.de/logos/d4gde09.gif";*/
/// /// ///

Hinzufügen_txt.addEventListener(MouseEvent.CLICK,addEntry);
function addEntry(e:MouseEvent):void {
	var newNode:XML =
	<entry>
	<Titel>{TitelEingabe_txt.text}</Titel>
	<Autor>{AutorEingabe_txt.text}</Autor>
	<Stichwörter>{StichwörterEingabe_txt.text}</Stichwörter>
	<Kommentar>{KommentarEingabe_txt.text}</Kommentar>
	//<Image>Pfad</Image>
	</entry>;
	xml.appendChild(newNode);
	saveXML(null);
	trace("Hinzugefügt");
}

Speichern_txt.addEventListener(MouseEvent.CLICK,saveEntry);
function saveEntry(e:MouseEvent):void {
	var myIndex:uint = nameList.selectedIndex;
	xml.entry[myIndex].Titel = TitelEingabe_txt.text;
	xml.entry[myIndex].Autor = AutorEingabe_txt.text;
	xml.entry[myIndex].Stichwörter = StichwörterEingabe_txt.text;
	xml.entry[myIndex].Kommentar = KommentarEingabe_txt.text;
	//xml.entry[myIndex].Image="Pfad";
	saveXML(null);
}
function saveXML(e:MouseEvent):void {
	var myDate:Date = new Date();
	var timestamp:uint = myDate.getTime();
	var myLoader:URLLoader = new URLLoader();
	myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
	myLoader.addEventListener(Event.COMPLETE,dataSaved);
	var myRequest:URLRequest = new URLRequest("saveXML.php?" + timestamp);
	myRequest.method = URLRequestMethod.POST;
	var myVars:URLVariables = new URLVariables();
	myVars.myxml = xml;
	myRequest.data = myVars;
	myLoader.load(myRequest);
}
function dataSaved(e:Event):void {
	nameList.removeAll();
	loadData();
	trace("Daten gespeichert");
}

////////  ////////  ////////  ////////  ////////  ////////  ////////  
////////  ////////  ////////  ////////  ////////  ////////  ////////  
var BildAusgabe:MovieClip = new MovieClip();
// BildAusgabe.load ...   //////// <---------------------------!

/*Hier soll das selektierte Item der Liste in den MovieClip geladen und angezeigt werden*/
////////  ////////  ////////  ////////  ////////  ////////  ////////  
////////  ////////  ////////  ////////  ////////  ////////  ////////  



///////////////////////////////////////////////////////////////////////////////////////////

Vielen Dank
 
Hey.
Das ist eine ganz schöne Menge Code, die du da postest. Da kannst du von niemandem erwarten, das einfach mal durchzuarbeiten - nächstes mal also irrelevanten Code weglassen. (Z.B. die ganzen ErrorHandler)

Soweit ich das überfliegen konnte braucht in der Funtkion showEntryData nur der Aufruf zum Laden stehen. BildAusgabe.loadMovie(xml.entry[myIndex].Bildpfad); oder wie auch immer die MCs und Variablen bei dir heißen.

showEntryData2 kann ich nciht finden, obwohl da ein EventHandler zu da ist?
 

Neue Beiträge

Zurück