通过setInterval将e:MouseEvent作为参数传递

时间:2010-06-26 14:45:38

标签: actionscript-3 actionscript

所以我有这个功能

capture_mc.buttonMode = true;
capture_mc.addEventListener(MouseEvent.CLICK,captureImage);

function captureImage(e:MouseEvent):void { 
//lalalala

}

我想每2秒调用一次此函数(鼠标点击事件发生后)。 我尝试使用setInterval

setInterval(captureImage,2000,e:MouseEvent);

但会导致以下错误

1084: Syntax error: expecting rightparen before colon.

怎么了? 而且,我是AS的新手。

2 个答案:

答案 0 :(得分:2)

首先,由于这是AS3,因此您应该使用TimerTimerEvent。我将在示例中向您展示。

现在你需要分开你的职能:

编辑:我根据@(Juan Pablo Califano)的建议将此更新为更安全。如果时间量不会改变,我会永远保持相同的计时器。

// first param is milliseconds, second is repeat count (with 0 for infinite)
private var captureTimer:Timer = new Timer(2000, 0);
captureTimer.addEventListener(TimerEvent.TIMER, handleInterval);

function handleClick(event:MouseEvent):void
{
    // call here if you want the first capture to happen immediately
    captureImage();

    // start it
    captureTimer.start();
}

function handleInterval(event:TimerEvent):void
{
    captureImage();
}

function captureImage():void
{
    // lalalala
}

您也可以随时使用captureTimer.stop()停止计时器。

答案 1 :(得分:1)

问题是,只有在声明形式参数时(或在声明parameterName:ParameterTypevar时)才应使用const语法。这意味着,只有在定义函数时才有效:

function func(paramName:Type){
}

调用函数时,不必输入参数的类型。

因此,您的函数调用应如下所示:

setInterval(captureImage,2000,e);