我開始使用Haxe和OpenFl,並且有一些Javascript和Lua的使用經驗。
它一直很好,直到我需要一個類似於lua中的wait()
的函數,它會停止腳本,直到您設置的秒數結束。)
我該如何去做這件事?
編輯:澄清,我正在建設Flash。
我開始使用Haxe和OpenFl,並且有一些Javascript和Lua的使用經驗。
它一直很好,直到我需要一個類似於lua中的wait()
的函數,它會停止腳本,直到您設置的秒數結束。)
我該如何去做這件事?
編輯:澄清,我正在建設Flash。
雖然這是老了,我想再添點以供參考。 OP在評論中提到這是一款遊戲。一種方法是我經常使用的是(而且很可能被放在一個庫):
var timerCount:Float = 0;
var maxTimerCounter:Float = 5;
function update() {
timerCounter += elapsedTime;
if (timerCounter > maxTimerCounter){
onTimerComplete();
timerCount = 0;
}
}
在SYS您正在尋找:
靜態函數睡眠(秒:浮動):虛空 暫停給定時間的當前執行(以秒爲單位)。
實施例:Sys.sleep(.5);
編輯:用戶被移植到閃爍。
所以建議是使用定時器
http://haxe.org/api/haxe/timer
在定時器的建議是使用 靜電功能延遲(F:空 - >空,time_ms:智力):定時器
有人堆棧溢出有一個例子,看起來像這樣:haxe.Timer.delay(callback(someFunction,「abc」),10);位於這裏... Pass arguments to a delayed function with Haxe
對於Flash編譯目標,最好你可以做的是使用一個計時器,以及像這樣的setTimeout()函數。 這意味着將你的函數分成兩部分 - setTimeout()之前的所有內容,以及之後的所有內容,它們都在一個單獨的函數中,並且超時可以調用。 所以somethine等,例如:
tooltipTimerId = GlobalTimer.setTimeout(
Tooltip.TOOLTIP_DELAY_MS,
handleTooltipAppear,
tootipParams
);
[...]
class GlobalTimer {
private static var timerList:Array<Timer>;
public static function setTimeout(milliseconds:Int, func:Dynamic, args:Array<Dynamic>=null):Int {
var timer:Timer = new Timer(milliseconds);
var id = addTimer(timer, timerList);
timer.run = function() {
Reflect.callMethod(null, func, args);
clearTimeout(id);
}
return id;
}
private static function addTimer(timer:Timer, arr:Array<Timer>):Int {
for (i in 0...arr.length) {
if (null == arr[i]) {
arr[i] = timer;
return i;
}
}
arr.push(timer);
return arr.length -1;
}
public static function clearTimeout(id:Int) {
var timers:Array<Timer> = GlobalTimer.getInstance().timerList;
try {
timers[id].stop();
timers[id] = null;
} catch(e:Error) {/* Nothing we can do if it fails, really. */}
}
}
對不起,忘了提我建立到Flash,和SYS只支持ネ,PHP,C++,CS,和Java,所以當我嘗試使用'Sys.sleep()' – IBPX
進行編譯時,我得到一個'訪問這個字段需要一個系統平臺(php,neko,cpp等)'錯誤'我知道你可以做'haxe.Timer.delay a,b)'在'b'毫秒後做'a',但腳本的其餘部分不會等待它。是否有某種可以使用的'this.stop()'和'this.resume()'類型的組合? – IBPX
您需要延遲多久?你是在等待一個流程,還是你在等待用戶輸入? –