PDA

Volledige versie bekijken : Dringende vraag AS3.0 XML Images


RebelChris
%Europe/Berlin %692 %2009, 16:37
Beste flash focus mensen.

Ik maak het liefste zelf mijn scripts alleen hier kom ik niet helemaal uit.

Ik wil dus met AS3.0 en XML een aantal dingen inladen.
Nu lukt tekst en verschillende plaatjes wel (via een hulp file)

Alleen ik wil dus 3 plaatjes erbij inladen.

In AS2.0 Lukt dit wel plaatjes in een lege MC inladen.

Hierbij mijn code:

projects.xml
<?xml version="1.0" encoding="utf-8"?>
<projects>
<project>
<team>Jochem, Menderes, Christian</team>
<name1>Jochem</name1>
<name2>Menderes</name2>
<name3>Christian</name3>
<image>Images/1.jpg</image>
<image2>Images/2.jpg</image2>
<image3>Images/3.jpg</image3>
<richting>Multimedia vormgeven</richting>
<richting1>Multimedia vormgeven</richting1>
<richting2>Multimedia vormgeven</richting2>
<images>
<picture src="head.jpg" />
<picture src="compass.jpg" />
<picture src="faa.jpg" />
<picture src="FactBookCover6.jpg" />
<picture src="mmci.jpg" />
<picture src="mmls.jpg" />
</images>
<description>Een beschrijving van de producten en hoe de periode verlopen is. Dit kan goed of slecht zijn het maakt verder niet uit. Als het maar een lange tekst is.</description> </project>

<project>
<team>Rosa, Yourie, Sjanine</team>
<name1>Rosa</name1>
<name2>Yourie</name2>
<name3>Sjanine</name3>
<images>
<picture src="faa.jpg" />
<picture src="FactBookCover6.jpg" />
</images>
<description>Description of my Second project.</description>
</project>
</projects>

import fl.events.ListEvent;

var imageLoader:Loader;
var pictureArray:Array;
var pictures:XMLList;
var xmlData:XML;
var xmlLoader:URLLoader = new URLLoader();

xmlLoader.addEventListener(Event.COMPLETE, onComplete);
xmlLoader.load(new URLRequest("projects.xml"));
project_list.addEventListener(ListEvent.ITEM_CLICK , showProjectContents);


function onComplete(e:Event):void
{
try
{
xmlData = new XML(e.target.data);
parseXML(xmlData);
}
catch (e:Error)
{
trace("error: " + e.message);
return;
}
}

function parseXML(xmlData:XML):void
{

var projectList:XMLList = xmlData.project.team;
for each (var projectTitle:XML in projectList)
{
project_list.addItem({label:projectTitle, data:projectTitle});
}
}


function showProjectContents(e:ListEvent):void
{
name1_txt.text = xmlData.project[e.rowIndex].name1.text();
name2_txt.text = xmlData.project[e.rowIndex].name2.text();
name3_txt.text = xmlData.project[e.rowIndex].name3.text();
richting_txt.text = xmlData.project[e.rowIndex].richting.text();
richting1_txt.text = xmlData.project[e.rowIndex].richting1.text();
richting2_txt.text = xmlData.project[e.rowIndex].richting2.text();
description_txt.text = xmlData.project[e.rowIndex].description.text();


pictures = xmlData..images[e.rowIndex].picture;
loadImage(pictures[0].@src);

if (pictureArray)
{
destroyAll(pictureArray);
}

pictureArray = new Array();

for(var i = 0; i < pictures.length(); i++)
{
trace(pictures[i].@src);
var pictureNumber:PictureNumber = new PictureNumber();
addChild(pictureNumber);
pictureNumber.x = 400 + ((pictureNumber.width * i) + 5);
pictureNumber.y = 500;
pictureArray.push(pictureNumber);
pictureNumber.pictureNumber_txt.text = i + 1;
pictureNumber.pictureNumber_txt.addEventListener(M ouseEvent.CLICK, changePicture);
}


pictureArray[0].gotoAndPlay(2);
}

function destroyAll(array:Array):void
{
for(var i:int = 0; i < array.length; i++)
{
if (array[i].parent != null)
{
array[i].parent.removeChild(array[i]);
delete array[i];
}
}
}

function changePicture(e:MouseEvent):void
{
loadImage(pictures[Number(e.target.text) - 1].@src);
resetImageNumbers();
trace("current frame"+e.target.parent.currentFrame);
trace("total frames"+e.target.parent.totalFrames);
if (e.target.parent.currentFrame != e.target.parent.totalFrames)
{
e.target.parent.gotoAndPlay(2);
}
}

function resetImageNumbers():void
{
for(var i = 0; i < pictureArray.length; i++)
{
pictureArray[i].gotoAndStop(1);
}
}

function gotoURL(e:MouseEvent):void
{
trace("Going to: " + e.target.text);
navigateToURL(new URLRequest(e.target.text));
}


function loadImage(url:String):void
{
imageLoader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(Pro gressEvent.PROGRESS, imageLoading);
imageLoader.contentLoaderInfo.addEventListener(Eve nt.COMPLETE, imageLoaded);
}


function imageLoaded(e:Event):void
{

if (imageArea.numChildren == 1)
{
imageArea.removeChildAt(0);
}
imageArea.addChildAt(imageLoader,0);
}

function imageLoading(e:ProgressEvent):void
{
var percent:Number = e.bytesLoaded / e.bytesTotal;
trace(percent + "% of " + e.bytesTotal + " bytes.");
}

Ik heb al een hoop scripts van internet geprobeert maar niks lijkt te werken :(

Nogmaals de vraag:
Hoe kan ik via XML dus 3 vaste plaatjes inladen
(wel verschillend per id)

nkamp
%Europe/Berlin %369 %2009, 08:51
Hallo RebelChris,

Ben je er al uit? Anders: Wat moet ik verstaan onder "plaatjes erbij inladen"? Ik begrijp het functioneel niet.
Ik bedoel als je al een XML hebt kun je deze toch uitbreiden? Vervolgens kun je de XML file uitlezen. Of wil je het dynamisch doen?

Mvg.,

Nico