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);
}}}
像这样尝试它应该工作:)
我在 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);
}}}
像这样尝试它应该工作:)