Issue ArgumentError: Error #1063

Issue ArgumentError: Error #1063

我在 AS3 名称 MainTimer.as 中创建了计时器 class,我 main.as 使用 MainTimer class 进行倒计时。当我向 MainTimer class 发送参数时它出错 ArgumentError: Error #1063: Argument count mismatch on MainTimer(). Expected 2, got 0. 而当我 trace(startMin, startSec); 在 MainTimer 中显示 1 0 。任何人帮助。

MainTimer.as

package {

import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class MainTimer extends MovieClip {

    private var currentMin: int;
    private var currentSec: int;
    private var oneSecTimer: Timer = new Timer(1000, 1);
    public var timerHasStopped: Boolean = false;

    public function MainTimer(startMin: int, startSec: int) {
        trace(startMin, startSec);

        currentMin = startMin;
        currentSec = startSec;

        minBox.text = String(currentMin);
        secBox.text = String(currentSec);

        if (currentSec < 10) {
            secBox.text = "0" + String(currentSec);
        }

        oneSecTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
        oneSecTimer.start();
        // trace(currentMin, currentSec);
    }

    private function onTimerComplete(event: TimerEvent): void {
        minBox.text = String(currentMin);
        secBox.text = String(currentSec);
        //trace(secBox.text);
        if (currentSec < 10) {
            secBox.text = "0" + String(currentSec);
        }
        currentSec = currentSec - 1;
        if (currentSec <= -1) {
            currentSec = 59;
            currentMin -= 1;
            //trace(minBox.text);
        }
        if (currentMin <= -1) {
            timerHasStopped = true;
            //resetTimer();
        } else {
            oneSecTimer.start();
        }
    }

    public function resetTimer(): void {
        currentMin = 0;
        currentSec = 20;
        minBox.text = String(currentMin);
        secBox.text = String(currentSec);
        if (currentSec < 10) {
            secBox.text = "0" + String(currentSec);
        }
        timerHasStopped = false;
        oneSecTimer.start();
    }

    public function increaseTime(): void {
        currentSec += 20;
    }

}}

main.as

package {

import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
import MainTimer;

public class main extends MovieClip {
    private var startMin: int = 1;
    private var startSec: int = 0;
    private var gameTimer: MainTimer = new MainTimer(startMin, startSec);

    public function main() {
        addChild(gameTimer);
    }

}}

我认为您已在舞台中手动插入了 MainTimer 影片剪辑的实例。

因此,为了避免 #1063 错误,您必须删除该实例或简单地在 MainTimer class 构造函数中定义默认值:

// ...

public function MainTimer(startMin:int = 1, startSec:int = 0) 
{
    // ...
}

// ...

希望能帮到你。

package {

import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
import MainTimer;

public class main extends MovieClip {
    private var startMin: int = 1;
    private var startSec: int = 0;
    private var gameTimer: MainTimer;

    public function main() {
        gameTimer = new MainTimer(startMin, startSec);
        addChild(gameTimer);
    }}}

像这样尝试它应该工作:)