2015-04-08 26 views
0

创造更多的同样的功能我尝试做一些功能在for循环的方法,但它说:“符号‘myInstanceMovieClip’,层‘为’,框架31,第29行1084:语法错误:leftparen期待在leftbracket之前“。 这里我的代码:AS3,在for循环mehod

for(var i:int=0; i < btnhairmc.length; i++){ 
    btnhairmc[i].buttonMode=true; 
    btnhairmc[i].addEventListener(MouseEvent.CLICK, goPlay[i]); 
    function goPlay[i](m:MouseEvent):void{ 
     trace("btnhair[i]_mc <= clicked"); 
    } 
} 

哪里是我的错吗?

回答

1

函数名称:goPlay[i]是无效的,应该只有goPlay

你可以调整你的代码:

for (var i:int=0; i < btnhairmc.length; i++) { 
    btnhairmc[i].buttonMode=true; 
    btnhairmc[i].addEventListener(MouseEvent.CLICK, goPlay); 
    function goPlay(m:MouseEvent):void { 
     trace("btnhair["+i+"]_mc <= clicked"); 
    } 
} 

或者

for (var i: int = 0; i < btnhairmc.length; i++) { 
    btnhairmc[i].buttonMode = true; 
    btnhairmc[i].addEventListener(MouseEvent.CLICK, function (event: MouseEvent): void { 
     trace("btnhair[" + i + "]_mc <= clicked"); 
    }); 

} 
+0

感谢您的帮助,它的工作原理..:D –

1

你可以这样做:

for (var i:int=0; i < btnhairmc.length; i++) { 
    btnhairmc[i].buttonMode=true; 
    btnhairmc[i].name="button-"+i; 
    btnhairmc[i].addEventListener(MouseEvent.CLICK, goPlay); 
} 

function goPlay(e:MouseEvent) : void { 
    trace(e.target.name); 
    //or maybe you need 
    trace(e.currentTarget.name); 
    trace('Button' + e.target.name + 'was clicked!'); 
} 

随着e.targete.currentTarget你就会知道哪个按钮被按下

希望这有助于。