通常使用像这样的鼠标事件监听器:
MyButton.addEventListener(MouseEvent.MOUSE_UP, MyFunction);
function MyFunction(event:MouseEvent):void
{
// my function codes
//...
//...
}
但我想在我的函数中使用一个变量,如下所示:
//var Tx:Number = any Formula;
MyButton.addEventListener(MouseEvent.MOUSE_UP, MyFunction(Tx));
function MyFunction(event:MouseEvent,T:Number):void
{
if ( T == 1 ) { ... }
if ( T == 2 ) { ... }
if ( T == 3 ) { ... }
}
我该怎么做?
答案 0 :(得分:0)
我想你会将听众附加到不同的按钮/动画片段。然后,访问event.currentTarget并更改变量的值。
button1.addEventListener(MouseEvent.MOUSE_UP, doSomething);
button2.addEventListener(MouseEvent.MOUSE_UP, doSomething);
function doSomething(event:MouseEvent):void {
var str:String;
if (event.currentTarget.name == 'button1')
str = 'one';
else
str = 'two';
}
或类似的东西。
答案 1 :(得分:0)
在我看来,你想要创建一个闭包
function process(t:Number)
{
return function(event:MouseEvent) {
if ( t == 1 ) { ... }
if ( t == 2 ) { ... }
if ( t == 3 ) { ... }
}
}
MyButton.addEventListener(MouseEvent.MOUSE_UP, process(1));
这将从" process"返回一个函数。它将作为事件监听器并包含参数T。
ps:即使ActionScript允许提升函数(即在定义它们之前调用的函数),我认为这是一种糟糕的风格。还可以使用小写作为参数名称。大写名称通常暗示这是一个Type。