我堅持用一個問題,我不明白爲什麼它的行爲這樣的...Flex 3的 - 問題傳遞參數通過事件
在for循環中,我傳遞的索引作爲事件參數。然而,eventHandler得到錯誤的索引,但是正確的目標...
這是一些代碼。 。作爲類方法:
public function set dataProvider(a:Array):void
{
var x:int = 0;
if(a != null && a.length > 0)
{
labelsArray = (new ArrayCollection(a));
trace("##############################################################");
for(var i:int = 0; i<a.length; i++)
{
var btn:NavigationArrowButtonCtrl = new NavigationArrowButtonCtrl();
var s:String = (new ArrayCollection(a)).getItemAt(i).toString();
trace(i + '/' + s);
btn.addEventListener(FlexEvent.CREATION_COMPLETE, function(e:FlexEvent):void{
var lblIndex:int = i;
btnAddLblHandler(e, lblIndex);
});
this.addChild(btn);
this.setChildIndex(btn, 0);
}
trace("##############################################################");
}
}
private function btnAddLblHandler(e:FlexEvent, ind:int):void
{
trace(labelsArray.length.toString() + '/' + ind.toString());
if(ind < labelsArray.length)
{
trace('Handler ' + ind + '/' + String(labelsArray.getItemAt(ind)));
(e.target as NavigationArrowButtonCtrl).lbl_body.text = String(labelsArray.getItemAt(ind));
}
}
這裏的結果跟蹤我越來越:
##############################################################
0/FINITION
1/> MOTORISATIONS
2/> EXTERIEUR
3/> INTERIEUR
4/> OPTIONS
5/> RESUME
##############################################################
6/6
6/6
6/6
6/6
6/6
6/6
不知何故,處理越來越的索引只有最後一個值「I」時,它應該在每個循環中獲取'i'的當前值(0/1/2/3/4/5)... 有什麼不對的?
感謝您的幫助! =) 問候,
BS_C3
嗨! 非常感謝您的意見=) 這真的很有幫助,並與你說的玩了一下,我做了一些微小的修改,以解決問題=) – 2010-08-03 14:40:14