AS3.0 给addEventListener里的方法加上参数传递

目录

一、目的

1、想:AS3.0 给addEventListener里的方法加上参数传递

二、参考

1、AS3.0 给addEventListener里的方法加上参数传递

三、操作:参考1中的方法一:能使用

1、关键帧中点击按钮进行元件切换

三、操作:参考1中的方法二

1、注意:好像不能传递MovieClip(Object也不行)

1、发现在造纸术晒纸环节中,能够传递MovieClip

1、操作:元素添加点击事件,并且传递String参数(测试不能传递MovieClip参数、Object也不行)


一、目的

1、想:AS3.0 给addEventListener里的方法加上参数传递

 

二、参考

1、AS3.0 给addEventListener里的方法加上参数传递

https://blog.csdn.net/dingbin1973/article/details/101602059

  • 总结:很好,能使用
  • 总结:方法一:能使用在按钮很多的情况下,使用数组给按钮添加点击监听事件,也可以类推到其他的情况中
  • 总结:方法二:尝试了使用在多个按钮点击事件中,发现不好使用,但是可以给监听事件传递参数
方法一:
for(var i:int=1;i<=4;i++){
this["btn"+i].addEventListener(MouseEvent.CLICK,EventUp(btnClick,i));
}

function btnClick(e:MouseEvent,...arg){
photoMC.gotoAndStop(arg);
}
function EventUp(f:Function,... arg):Function{
return function(e:Event){f.apply(null,[e].concat(arg))};
}

将触发事件的方法包裹在另一个函数里,然后再将e:Event 对象合并到一个数组(加上要传递的参数)。
这里使用apply方法,为btnClick绑定两个参数(e和arg)
之后触发btnClick时,e对应e:MouseEvent,而arg对应...arg

方法二:
var sayHello:String = "xxxxxx";
btn1.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,sayHello)});
function clickHandlerWithArg(e:MouseEvent,arg:String):void
{
var out:String= e.target + "发出事件(有参数) :" + arg;
trace(out);
}

使用匿名函数里包裹触发事件(加上参数)
参数包括e和value

三、操作:参考1中的方法一:能使用

1、关键帧中点击按钮进行元件切换

import flash.events.MouseEvent;

//数组 :按钮
var arr_btn_introduce:Array = null;

stop();

Start_enjoy();

//功能:初始化
function Start_enjoy()
{
	if (! stage.hasEventListener(MouseEvent.CLICK))
	{
		stage.addEventListener(MouseEvent.CLICK,Click_enjoy);
	}

	mc_introduce.gotoAndStop(1);

	//按钮添加点击事件;
	if (arr_btn_introduce==null)
	{
		arr_btn_introduce=new Array();
		if (arr_btn_introduce.length == 0)
		{
			arr_btn_introduce.push(btn_0);
			arr_btn_introduce.push(btn_1);
			arr_btn_introduce.push(btn_2);
			arr_btn_introduce.push(btn_3);
			arr_btn_introduce.push(btn_4);
			arr_btn_introduce.push(btn_5);
			arr_btn_introduce.push(btn_6);
			arr_btn_introduce.push(btn_7);
			arr_btn_introduce.push(btn_8);
			arr_btn_introduce.push(btn_9);
		}

		for (var i:int=0; i<arr_btn_introduce.length; i++)
		{
			arr_btn_introduce[i].addEventListener(MouseEvent.CLICK,CLICK_arr_btn_introduce(btnClick,i));
		}
	}

}

//功能:销毁
function Destroy_enjoy()
{
	if (stage.hasEventListener(MouseEvent.CLICK))
	{
		stage.removeEventListener(MouseEvent.CLICK,Click_enjoy);
	}
}

function btnClick(e:MouseEvent,arg:int)
{
	mc_introduce.gotoAndStop(arg+1);
}

function CLICK_arr_btn_introduce(f:Function,arg:int):Function
{
	return function(e:Event){f.apply(null,[e].concat(arg))};
}


function Click_enjoy(e:MouseEvent)
{
	trace(e.target.name);
}

 

三、操作:参考1中的方法二

1、注意:好像不能传递MovieClip(Object也不行)

如果传递的参数是MovieClip就是空的

 

如果传递的是String就可以

1、发现在造纸术晒纸环节中,能够传递MovieClip

 

1、操作:元素添加点击事件,并且传递String参数(测试不能传递MovieClip参数、Object也不行)

var sayHello:String = "xxxxxx";
arr_inside_pic5.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,sayHello)});

function clickHandlerWithArg(e:MouseEvent,arg:String):void
{
var out:String= e.target + "发出事件(有参数) :" + arg;
trace(out);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值