PDA

View Full Version : Array of Objects again (but for real)


salle
01-16-2008, 08:48 AM
I have problem.
I have private var array defined (global) and function triggered by an event which have to form array of objects and return it. But I can pass array to function because when I call my function I do not pass any parameters because it is event driven function and when I try to pass one or two parameters I have errors.

How? :p

creynders
01-16-2008, 09:44 AM
In other words, you want to know how to pass parameters through events?
You can create your own event class which extends the standard event class.

//SomeEvent.as
package{
import flash.events.Event;
class SomeEvent extends Event{
static public const THIS_IS_AN_EVENT : String = "this is an event";
public var myArray : Array;
public function SomeEvent( type : String, arr : Array, bubbles : Boolean = false, cancelable : Boolean = false ){
super( type, bubbles, cancelable );
myArray = arr;
}
}
}
//SomeObject.as
package{
import flash.events.EventDispacther;
public class SomeObject extends EventDispatcher{
public function SomeObject(){
}
public function doSomething() : void{
var arr : Array = new Array( "a", "b", "c" );
dispatchEvent( new SomeEvent( SomeEvent.THIS_IS_AN_EVENT, arr ) );
}
}
}
//event listener
public function eventReceived( event : SomeEvent ) : void{
trace( event.myArray ); //outputs: a, b, c
}
var someObject : SomeObject = new SomeObject();
someObject.addEventListener( SomeEvent.THIS_IS_AN_EVENT, eventReceived );
someObject.doSomething();

salle
01-16-2008, 09:32 PM
This is a problem :)

package
{
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.BitmapData;
import flash.events.Event;

public class kvadratic extends Sprite
{

private var loader:URLLoader;
private var sajtovi:Array = new Array();
private var sajt:Object = new Object();
private var identiteti = new Array();


public function kvadratic()
{
init();
}

private function init():void
{
sajtLoader();
trace(sajtovi[0].domen);

}

public function initSajtObjects(event:Event):void
{
var xmlResponse:XML = XML((event.target as URLLoader).data);
var xmlList = xmlResponse.sajt;

for (var i=0; i<xmlList.length(); i++)
{

sajt.id = xmlList[i].id.text();
sajt.domen = xmlList[i].domen.text();
sajt.klijent = xmlList[i].klijent.text();
sajt.zelje = xmlList[i].zelje.text();
sajt.tehnologija = xmlList[i].tehnologija.text();
sajt.thumb = xmlList[i].thumb.text();
sajtovi[i] = sajt; // sajtovi[i] = xmlResponse.sajt;

}
trace (sajtovi[0].domen);

}

public function initIdentitetObjects(event:Event):void
{
var xmlResponse:XML = XML((event.target as URLLoader).data);
var xmlList = xmlResponse.identitet;

for (var i=0; i<xmlList.length(); i++)
{
var identitet:Object = new Object();
identitet.id = xmlList[i].id.text();
identitet.klijent = xmlList[i].klijent.text();
identitet.thumb = xmlList[i].thumb.text();
identiteti[i] = identitet;
}
}


private function sajtLoader():void
{
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, initSajtObjects);
var request:URLRequest = new URLRequest("http://localhost/KV/php/citajSajtove.php");
loader.load(request);

}


// handlers -----------------------------------------------------

}
}


XML structure:

<sajtovi>
<sajt>
<domen>...</domen>
<...

</sajt>
<sajt>
<domen>...</domen>
<...

</sajt>
</domen>

In function initSajtObjects array sajtovi is initialized and works OK but in function init I have message undefined. Why?