flash as3.0 动态绑定时间传参问题
for(vari:uint=0;i<=3;i++){this["t"+i.toString()].addEventListener(MouseEvent.CLICK,fu...
for (var i:uint = 0; i<= 3; i++)
{
this["t"+i.toString()].addEventListener(MouseEvent.CLICK,function (e:MouseEvent){fun_test(e,i)});
}
调用函数
private function fun_test(e:MouseEvent,arg:int):void{
var out:String= arg;
trace(out);
}
这里输出的都是 for循环里 i 最大值 3
我希望点b1,b2,b3,b4按钮时,事件发生输出0 1 2 3,现在输出的都是 3,3,3,3
请指教 展开
{
this["t"+i.toString()].addEventListener(MouseEvent.CLICK,function (e:MouseEvent){fun_test(e,i)});
}
调用函数
private function fun_test(e:MouseEvent,arg:int):void{
var out:String= arg;
trace(out);
}
这里输出的都是 for循环里 i 最大值 3
我希望点b1,b2,b3,b4按钮时,事件发生输出0 1 2 3,现在输出的都是 3,3,3,3
请指教 展开
1个回答
展开全部
在你的for循环中,你的按钮注册了鼠标点击动作,但这个动作并不是执行,当你点击按钮执行后,参数I就会传递过去,但这时的i因为for循环已经变成了4。所以你每次点击都会出现4。
还有你fun_test方法:参数类型arg:int,但你var out:String= arg; 没报错??
根据你要的结果,方法好多种的。
比如:
for (var i:uint = 0; i<= 3; i++)
{
this["t"+i.toString()].addEventListener(MouseEvent.CLICK,fun_test);
}
function fun_test(e:MouseEvent):void{
var out:String=e.target.name.substr(1,1); //substr()返回你的按钮一个子字符串
}
还有你fun_test方法:参数类型arg:int,但你var out:String= arg; 没报错??
根据你要的结果,方法好多种的。
比如:
for (var i:uint = 0; i<= 3; i++)
{
this["t"+i.toString()].addEventListener(MouseEvent.CLICK,fun_test);
}
function fun_test(e:MouseEvent):void{
var out:String=e.target.name.substr(1,1); //substr()返回你的按钮一个子字符串
}
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询