If you try to return a Vector typed array in flash, you’ll get the following error.
public function getMainItems():Vector { //Length of Main items MainItemLn = xml.item.length(); //Vector class of MainItems var MainVO:Vector = new Vector.<VOItem>(MainItemLn,true); for(var i:int = 0; i < MainItemLn; ++i) { MainVO[i] = new VOItem(); MainVO[i].id = i; MainVO[i].title = xml.item[i].@title; MainVO[i].img = xml.item[i].@img; } return MainVO }
1067: Implicit coercion of a value of type __AS3__.vec:Vector.<com.Gallery:VOItem> to an unrelated type __AS3__.vec:Vector.
It is because Vector.<VOItem> isn’t the same type as Vector. That means;
public function getMainItems():Vector.<VOItem> { //Length of Main items MainItemLn = xml.item.length(); //Vector class of MainItems var MainVO:Vector = new Vector.<VOItem>(MainItemLn,true); for(var i:int = 0; i < MainItemLn; ++i) { MainVO[i] = new VOItem(); MainVO[i].id = i; MainVO[i].title = xml.item[i].@title; MainVO[i].img = xml.item[i].@img; } return MainVO }
And you can get your Vector array values like;
trace(getMainItems()[0].title); //or trace(getMainItems()[1].title); //and so on.. . . .
**Note: VOItem is my custom Value Object Class. It doesn’t matter what it is. It can be movieclip, sprite, etc…