2013-12-20 42 views
1

我该如何去循环这个,所以我不必复制和粘贴相同的代码高达10或更高?AS3循环按钮(添加监听器和功能)

optionsmenu.char01.addEventListener(MouseEvent.CLICK, gochar01); 
function gochar1 (event:MouseEvent): void { 
    char.gotoAndStop(1); 
} 
optionsmenu.char02.addEventListener(MouseEvent.CLICK, gochar02); 
function gochar2 (event:MouseEvent): void { 
    char.gotoAndStop(2); 
} 

回答

2

你可以尝试这样的事情:

var callbackGenerator:Function = function(i:int):Function { 
    return function(event:MouseEvent):void { 
    char.gotoAndStop(i); 
    }; 
}; 

// Change this according to size of your menu 
var menuSize:int = 12; 

for (var i:int = 1; i < menuSize; i++) { 
    // Prefix with 0 
    var index:String = i < 10 ? '0' + i : String(i); 

    // Generate the click callback 
    var callback:Function = callbackGenerator(i); 

    // Add the click event listener 
    optionsmenu['char' + index].addEventListener(MouseEvent.CLICK, callback); 
} 
+0

这工作,太感谢你了! – user3123073