我目前正在Xamarin.ios中做一個小遊戲,其想法是您從按下開始到結束時都有30秒(並將您帶到遊戲結束屏幕),但如果你做錯了舉動,那麼它的遊戲結束了。我正在使用System.Timers並且定時器啓動正常,並開始滴答滴答,但是當您達到30秒並停止時,它會向控制檯輸出定時器已完成但不會執行任何我想要的操作。我嘗試了所有我能想到的東西,但似乎無法弄清楚。任何幫助表示讚賞,謝謝!也提前抱歉,這是我第一次使用stackoverflow。Xamarin.ios - 計時器不會在時間之後執行動作
下面是主要代碼:
//Setting up the timer
int count = 1;
System.Timers.Timer timer1;
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
count++;
Console.WriteLine ("timer tick");
if (count == 30)
{
timer1.Enabled = false;
Console.WriteLine ("timer finished");
//**Everything from here on is just what I want to happen**
imgBackground.Image = UIImage.FromFile ("gameover.jpg");
btn1.SetBackgroundImage (null, UIControlState.Normal);
btn2.SetBackgroundImage (null, UIControlState.Normal);
btn3.SetBackgroundImage (null, UIControlState.Normal);
btn4.SetBackgroundImage (null, UIControlState.Normal);
lblTime.Text = "";
btnStart.Enabled = true;
hasend = true;
//score is set back to 0
score = 0;
btn1green = false;
btn2green = false;
btn3green = false;
btn4green = false;
}
}
以下是我對啓動按鈕(正常工作)
//Start the timer
timer1.Enabled = true;
Console.WriteLine("timer started");
這裏是我當你犯了一個錯誤的舉動(也可正常工作)
else
{
//adjust the UI
imgBackground.Image = UIImage.FromFile("gameover.jpg");
btn1.SetBackgroundImage(null, UIControlState.Normal);
btn2.SetBackgroundImage(null, UIControlState.Normal);
btn3.SetBackgroundImage(null, UIControlState.Normal);
btn4.SetBackgroundImage(null, UIControlState.Normal);
lblTime.Text = "";
btnStart.Enabled = true;
hasend = true;
//score is set back to 0
score = 0;
btn1green = false;
btn2green = false;
btn3green = false;
btn4green = false;
timer1.Enabled = false;
Console.WriteLine("timer stopped");
}
因此,大家可以看到這是一個體面的數額在一次計時器結束的UI改變。我認爲,可能有一些做的,爲什麼它不工作
編輯:這也是我成立的viewDidLoad下的定時器()
timer1 = new System.Timers.Timer();
timer1.Interval = 1000;
timer1.Elapsed += new ElapsedEventHandler(OnTimeEvent);
你可能執行的計時器在後臺線程(否則你UI線程會停止),但我沒有看到任何代碼確保Timer在UI線程上執行OnTimeEvent(因爲你在做UI的時候需要這個)。 你可以發佈你設置定時器的代碼嗎? – Frank 2014-09-02 08:33:59
哦,對不起,我將添加代碼,然後結束的職位。這就是我在設置計時器方面的真實情況(對不起,我還在學習哈哈) – 2014-09-02 08:37:36