PDA

View Full Version : Trouble loading xml images!



stephsh
October 5th, 2009, 07:44 AM
I have loaded an XML file in the class LoadXML and have here created a method which parses the data and returns various arrays: an array of background urls (i called the array: hintergrund[]), an array of image paths (pfad[]), an array of website urls (website[]) and so forth. In the main class I would now like to load the backgrounds and images. I must have made a mistake in my onBackgrLoad() because I receive the error msg:

Error #1084: Syntax error: expecting rightparen before colon.

I can´t see any paranthesis missing though... I tried also adding "e: Event" in the paranthesis of the constructor but that didnt help.

Here are the relevant sections in my Main class:


package {

import flash.display.Sprite;
import flash.net.*;
import flash.display.*;
import flash.events.*;
import flash.display.Loader;
import flash.filters.DropShadowFilter;
import flash.net.URLRequest;
import flash.text.*;
// import de.container.text.Container_Text;

// To edit dropshadow. Atm not using.
import flash.filters.BitmapFilter;
import flash.filters.BitmapFilterQuality;

public class Main extends Sprite
{
//__________________________________________________ __________________________Vars : Newly created

public var images : Vector.<DisplayObject>;
private var maxProducts : int;
private var loaders : Vector.<Loader> = new Vector.<Loader>();
private var loader : URLLoader = new URLLoader();
private var backgr : Bitmap;
private var img : Bitmap;
private var titel : String;
// private var textContainer : Container_Text = new Container_Text();


//__________________________________________________ __________________________Vars : From other classes
public var coverflow : CoverFlow;
private var bg : BG;
private var sb : ScrollPaneExample;
private var sl : ScrollLabels;
private var productSummaryLabel : ProductSummaryLabel;
// private var reflection : Reflection;

private var xmlLoad : LoadXML = new LoadXML();
private var xmlData : XML = xmlLoad.getXMLData();
private var hintergrund : Array = xmlLoad.getBackgr();
private var pfad : Array = xmlLoad.getPath();
private var numOfProducts : int = xmlLoad.numOfProducts;
private var numOfCategories : int = xmlLoad.numOfCategories;


//__________________________________________________ __________________________Constructor

public function Main()
{
initBG();
onBackgrLoad(e : Event);
}

//__________________________________________________ __________________________Methods
// Load the backgr for each image.
private function onBackgrLoad(e : Event) : void // Take away : void ?
{
// A summary should appear for each object once it is in the center
for (var i : uint = 0; i < numOfProducts; i++)
{
var backgrLoader : Loader = new Loader();
var backgrRequest : URLRequest = new URLRequest(hintergrund[i]);

backgrLoader.contentLoaderInfo.addEventListener(Ev ent.COMPLETE, onImageLoad);
backgrLoader.contentLoaderInfo.addEventListener(IO ErrorEvent.IO_ERROR, handleXMLError);
try
{
backgrLoader.load(backgrRequest);
} catch (error: ArgumentError) {
trace("An Argument Error has occurred.");
} catch (error: SecurityError) {
trace("A Security Error has occurred.");
}

// OR can use method below without needing var backgrRequest
// backgrLoader.load( new URLRequest( hintergrund[i] ) );

var myNewBackgr = e.target.loader; // Necessary?

// Hold the backgrs inside the Bitmap
backgr = e.target.content as Bitmap;

trace("onBackgrLoad Loop: " + i);
}
}
// Load image that will lie above backgr. When event is completed call onTextLoad().
public function onImageLoad(e : Event) : void
{
// FOR statement: summary should appear for each object once it is in the center
for (var i: uint = 0; i < numOfProducts; i++)
{
var imageLoader : Loader = new Loader();
var imageRequest : URLRequest = new URLRequest(pfad[i]);

imageLoader.contentLoaderInfo.addEventListener(Eve nt.COMPLETE, onImageLoaded); // change this to onTextLoad once method completed
imageLoader.contentLoaderInfo.addEventListener(IOE rrorEvent.IO_ERROR, handleXMLError);
imageLoader.load(imageRequest);

var myNewImage = e.target.loader; // necessary?

// Hold the images inside the Bitmap
img = e.target.content as Bitmap;

trace("onImageLoad Loop: " + i);
}
}


And here is my LoadXML class:


package {

import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;

public class LoadXML
{
//__________________________________________________ ________________________XML vars

private var loader : URLLoader = new URLLoader();
private var productPath : URLRequest = new URLRequest("produkte1.xml"); // change
private var xmlData : XML = new XML();
public var numOfProducts : int;
public var numOfCategories : int;
//__________________________________________________ __________________________Arrays

private var kategorie : Array = new Array();
private var hintergrund : Array = new Array();
private var titel : Array = new Array();
private var pfad : Array = new Array();
private var website : Array = new Array();
private var uebersicht : Array = new Array();
//__________________________________________________ ________________________Constructor


// Load XML text data
public function LoadXML() : void
{
loader.addEventListener(Event.COMPLETE, extractXMLdata); // Specifies which data to load
loader.addEventListener(IOErrorEvent.IO_ERROR, handleXMLError);

try
{
loader.load(productPath);
// loader.load(new URLRequest(productPath)); // Load product URL // TWO METHODS TO DO THIS: can also use my request productInfoURL without xml blabla in constructor
trace("Step 1: Product path loaded correctly.");
trace("Product path: " + productPath);
}
catch(e : Error)
{
trace("Error loading file");
}
}

//__________________________________________________ ________________________Methods

private function extractXMLdata(e: Event) : void
{
// Extract data

// The reference to e.target below refers to the object that loaded the XML file.
xmlData = new XML(e.target.data);
// trace(xmlData.*); // Retrieves all the children of a node.

trace("Step 2: XML Data assigned as target data.");
ParseData(xmlData);
}

private function ParseData(dat: XML) : void
{
// Number of products
numOfProducts = xmlData.*.length();

trace("Step 3: Parsing data.");
for (var i: uint = 0; i < numOfProducts; i++)
{
kategorie[i] = dat.produkte.produkt.kategorie.attributes()[i];
website[i] = dat.produkte.produkt.website.attributes()[i];
uebersicht[i] = dat.produkte.produkt.uebersicht.text()[i];
hintergrund[i] = dat.produkte.produkt.bild.hintergrund.attributes()[i];
titel[i] = dat.produkte.produkt.bild.titel.text()[i];
pfad[i] = dat.produkte.produkt.bild.pfad.attributes()[i];

trace("\n Data Parsed for Array " + i);
}
}


//__________________________________________________ ________________________________ Getters

public function getXMLData(): XML
{
return xmlData;
}

public function getCategory(): Array
{
return kategorie;
}

public function getWebsite(): Array
{
return website;
}

public function getSummary(): Array
{
return uebersicht;
}

public function getBackgr(): Array
{
return hintergrund;
}

public function getTitel(): Array
{
return titel;
}

public function getPath(): Array
{
return pfad;
}


//__________________________________________________ __________________________Error catching

private function handleXMLError( event:IOErrorEvent ):void
{
trace("Fehler beim Aufrufen von XML.");
}
}
}


And here my XML file:


<?xml version="1.0"?>
<!-- The line above defines version of XML that is being used and the type of encoding -->
<produkte>
<!-- Bitte trage hierunter ein wie viel Produkte höchst Sie auf die Bühne haben möchte -->
<!-- <max>5</max> -->
<!-- WEB AUFTRITT PRODUKTE -->
<produkt>
<kategorie>CNM.WebAuftritt</kategorie>
<bild>
<titel>CNM.Web.CMS</titel>
<hintergrund>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Hintergrund\Card_Web.png</hintergrund>
<pfad>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Bild\Bild1png.png</pfad>
</bild>
<website>http://www.yahoo.com</website> <!-- will be changed later once known -->
<uebersicht><![CDATA[CNM.Web bietet Ihnen Rundum-Service: Gemeinsam mit Ihnen entwickeln und realisieren wir Lösungen, die präzise auf Ihre Anforderungen abgestimmt sind. Wir begleiten die Einführung technisch und organisatorisch. Auf der Basis professioneller Enterprise-Content-Management-Systeme (ECMS) und integrierter Datenbankanwendungen (.NET und JAVA) setzen wir diese Lösungen in zeitgemäßer Technologie für Sie um. ]]></uebersicht>
</produkt>
<produkt>
<kategorie>CNM.WebAuftritt</kategorie>
<bild>
<titel>CNM.Web.AquaBrowser</titel>
<hintergrund>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Hintergrund\Card_Web.png</hintergrund>
<pfad>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Bild\Bild2png.png</pfad>
</bild>
<website>http://www.yahoo.com</website>
<uebersicht><![CDATA[CNM.Web bietet Ihnen Rundum-Service: Gemeinsam mit Ihnen entwickeln und realisieren wir Lösungen, die präzise auf Ihre Anforderungen abgestimmt sind. Wir begleiten die Einführung technisch und organisatorisch. Auf der Basis professioneller Enterprise-Content-Management-Systeme (ECMS) und integrierter Datenbankanwendungen (.NET und JAVA) setzen wir diese Lösungen in zeitgemäßer Technologie für Sie um. ]]></uebersicht>
</produkt>
<!-- commented it all out till next part is finished -->
<!-- PROZESS OPTIMIERUNG PRODUKTE -->

<produkt>
<kategorie>CNM.ProzessOptimierung</kategorie>
<bild>
<titel>CNM.PrO.CRM</titel>
<hintergrund>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Hintergrund\Card_Pro.png</hintergrund>
<pfad>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Bild\Bild3png.png</pfad>
</bild>
<website>http://www.hotmail.com</website>
<uebersicht><![CDATA[Geschäftsprozesse wirtschaftlich zu steuern und kontinuierlich zu verbessern, ist zu einem wichtigen Thema geworden. Effizienz und Effektivität sind entscheidende Stellgrößen für Ihren Erfolg. CNM.PrO. Lösungen unterstützen Ihre internen Prozesse und Arbeitsabläufe. Schulung und Beratung runden das Angebot ab.]]></uebersicht>
</produkt>
<produkt>
<kategorie>CNM.ProzessOptimierung</kategorie>
<bild>
<titel>CNM.PrO.DMS</titel>
<hintergrund>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Hintergrund\Card_Pro.png</hintergrund>
<pfad>P:\Orgproj\Azubis_Prakt\CNM Redesign\Dokumente und Grafiken\Cards\Bild\Bild4png.png</pfad>
</bild>
<website>http://www.hotmail.com</website>
<uebersicht><![CDATA[Geschäftsprozesse wirtschaftlich zu steuern und kontinuierlich zu verbessern, ist zu einem wichtigen Thema geworden. Effizienz und Effektivität sind entscheidende Stellgrößen für Ihren Erfolg. CNM.PrO. Lösungen unterstützen Ihre internen Prozesse und Arbeitsabläufe. Schulung und Beratung runden das Angebot ab.]]></uebersicht>
</produkt>


</produkte>

stephsh
October 6th, 2009, 05:33 AM
I was able to find one mistake in my code but I still keep getting the same error... :vamp:

On my Main class my vars should look like this:


private var pfad : Array = xmlLoad.getPath();

// The vars below have been rewritten and these get methods have been added to the LoadXML class.
private var maxProducts : int = xmlLoad.getMaxProducts();
private var numOfProducts : int = xmlLoad.getNumOfProducts();
private var numOfCategories : int = xmlLoad.getNumOfCategories();

stephsh
October 9th, 2009, 03:07 AM
Any suggestions??

stephsh
October 9th, 2009, 03:45 AM
Sorry, are you talking about the forum or my question? Im confused... Do you know what I did wrong?

_kp
October 9th, 2009, 04:22 AM
that guy is just a spambot, just ignore that post ;)

I don't see where that syntax error comes from. I have an idea though, did you set your project to be published for flashplayer 10? I remember some error like this when using the vector class without explicitly telling the compiler to use the fp10.

edit: well this spam is certainly getting a big problem here :(

stephsh
October 9th, 2009, 04:32 AM
Stupid me, I posted the wrong error msg!! The error message I keep getting is that BackgrLoad() contains an incorrect number of arguments. One argument is recommended.

Once my flash application works I load it on my website where I require flashplayer 10 to be used. I don't know how to set flash player to 10 in the actual application...