PDA

Volledige versie bekijken : Image inladen via AS3 / XML


Molkier
%Europe/Berlin %858 %2010, 21:35
Hey,

Ik ben al een tijdje bezig een informatie systeem temaken en heb daar nog wat hulp bij nodig aangezien het me anders zelf veelste lang gaat duuren.

Ik probeer via addchild een image uit de XML File te halen..

Hier is het stukje AS3
import flash.display.DisplayObject;

var race:Number = 1;

if (race == 1){
var c1lader:URLLoader = new URLLoader();
var c1container:XML;
c1lader.addEventListener(Event.COMPLETE, laadXML2);
c1lader.load(new URLRequest("druids.xml"));

function laadXML2(xml:Event):void {
c1container = new XML(xml.target.data);
toon1Informatie(0);
}

function toon1Informatie(id:Number):void {
var aantalc1:Number = c1container.charinfo.length();
id = id % aantalc1;
tekst1Veldje1.text = (c1container.charinfo[id].cclass.text());
tekst1Veldje2.text = (c1container.charinfo[id].race.text());
tekst1Veldje3.text = (c1container.charinfo[id].gearscore.text());
tekst1Veldje4.text = (c1container.charinfo[id].pve.text());
tekst1Veldje5.text = (c1container.charinfo[id].pvp.text());
tekst1Veldje6.text = (c1container.charinfo[id].playtime.text());
tekst1Veldje7.text = (c1container.charinfo[id].gold.text());
tekst1Veldje8.text = (c1container.charinfo[id].alts.text());
tekst1Veldje9.text = (c1container.charinfo[id].achievements.text());
tekst1Veldje10.text = (c1container.charinfo[id].armory.text());
tekst1Veldje11.text = (c1container.charinfo[id].price.text());
trace(c1container.charinfo[id].image.text());
var plaatjechar:DisplayObject = (c1container.charinfo[id].image.text());
addChild (plaatjechar);
}
}

en hier is het stukje XML hoe het geformuleerd staat.
<undead>

<charinfo>
<cclass>Priest</cclass>
<achievements>2950</achievements>
<race>Blood Elf</race>
<thumbnail>be_thumb.jpg</thumbnail>
<image>be.jpg</image>
<gearscore>5900 PVE</gearscore>
<pve>Full Tier9,5 (HC) + 251/264 Offsetitems</pve>
<pvp>No PVP Gear</pvp>
<playtime>Ran Out</playtime>
<gold>7.500</gold>
<price>140,00 Euro</price>
<armory>Donkyblabla</armory>
<alts>No Alts.</alts>
</charinfo>
</undead>

Ik krijg de volgende error:
test.jpg (trace)
TypeError: Error #1034: Afgedwongen typeomzetting is mislukt: kan XMLList@276a1671 niet omzetten in flash.display.DisplayObject.

Ik heb het al op enkele verschillende manieren geprobeerd en heb google een beetje doorgespit maar ik kom er niet echt helemaal uit.

Alvast bedankt degene die me gaat helpen :D

Dauntless
%Europe/Berlin %879 %2010, 22:06
Je probeert nu een string toe te voegen aan de display list. Je moet eerst de afbeelding die op die url staat inladen met een Loader object.

Heel kort:
var plaatjechar:Loader = new Loader();
platjechar.load(new URLRequest(c1container.charinfo[id].image.text()));
addChild (plaatjechar);

Maar je voegt best nog wat error handlers toe voor als de afbeelding bv niet gevonden wordt.

Zie naar de Loader classe in de LiveDocs voor meer info.

Molkier
%Europe/Berlin %913 %2010, 22:54
var ldr:Loader = new Loader();
addChild(ldr);

var urlReq:URLRequest = new URLRequest(c1container.charinfo[id].image.text());
ldr.load(urlReq);

Met een urlrequester werkt hij ook goed :).
Hij werkt perfect namelijk nu.

Alsnog bedankt, ik had even wat dieper gezocht en was er zelf uit gekomen!
Thanks.

Dauntless
%Europe/Berlin %919 %2010, 23:04
Met een urlrequester werkt hij ook goed :).
Dat deed mijn oplossing ook he :)