簡體   English   中英

計時器停止時啟用功能C#

[英]enable function at timer stop c#

我想這個問題已經被問了1000遍了,但我不知道我做錯了什么。 我在C#中使用計時器。 如果過期,則應將值設置為1以啟用其他功能。 我的意圖是阻止一個功能,直到計時器計時。 如果計時器停止,則應啟用新功能。

using System.Timers;    
public float testNumber;
private Timer timer;


void Gearup ()
{

    if (currentGear < 5) {
        currentGear = currentGear + 1;

        timer = new Timer ();
        timer.Interval=2000;
        timer.AutoReset = true;
        timer.Start();
        testNumber = 10;
    }
    if (timer.Enabled != false) {
        testNumber = 1;

} 

你們能幫我嗎? 每次測試代碼時,測試編號都會立即設置為1。請保持謙虛,我知道我是菜鳥。

更新問題:我的問題是,我的游戲角色應該在游戲中換擋。 一旦換檔,就不應允許角色將其向右移。 這就是為什么我想在短短幾秒鍾內阻止shift函數。

因此,您需要以兩秒的間隔啟動一個計時器。 計時器結束后,您要將變量testNumber設置為1。
這種情況只會發生一次,然后停止。

然后,應將AutoReset屬性設置為false,並為Elapsed事件添加一個事件處理程序。

testNumber = 10;
Timer timer = new Timer();
timer.Elapsed += (s, o) => 
{ 
     Console.WriteLine("Timer elapsed"); 
     testNumber = 1;
};
timer.Interval = 2000;
timer.AutoReset = false;
timer.Start();

現在,您無需停止檢查任何內容。 繼續執行從Gearup方法退出的代碼。 間隔時間段過后,全局變量testNumber將設置為1。

計時器啟動時timer.Enabled設置為true。 然后您的程序跳入

if (timer.Enabled != false) {
        testNumber = 1;

}

塊。 因為timer.Enabled 不等於 false,所以它是true 你必須去挑戰

if (timer.Enabled == false) {
        testNumber = 1;

//for timer restart use:
timer.Start();

}

要么

if (timer.Enabled != true) {
            testNumber = 1;
//for timer restart use:
timer.Start();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM