Devilmanta Mesaj tarihi: Haziran 10, 2009 Paylaş Mesaj tarihi: Haziran 10, 2009 Hoca yılan oyunu verdi ama şöyle bir sorunum var karenin hareketini Thread.Sleep() ile kontrol ediyorum yani 1/4 saniye geçiyor 10pixel atlıyor şeklinde ama bunu daha yukarı tuşuna atamamla programın donması bir oldu. Diğer tuşlara daha Thread.Sleep() atamadım onlarla kareyi hareket ettirebiliyorum ama yukarı basınca donuyor kod şöyleki: switch (e.KeyData) { case (Keys.Up): if (m_rect.Y <= 0) { m_rect.Y = this.Height - m_rect.Height; } else { while (m_dirChange == false) { m_rect.Y -= 10; Thread.Sleep(50); this.Invalidate(); } } break; case (Keys.Down): if (m_rect.Y >= this.Height-m_rect.Height) { m_rect.Y = 0; } else { m_rect.Y += 10; } this.Invalidate(); break; case (Keys.Right): if (m_rect.X + m_rect.Width >= this.Width-m_rect.Width) { m_rect.X = 0; } else m_rect.X += 10; this.Invalidate(); break; case (Keys.Left): if (m_rect.X <= 0) { m_rect.X = this.Width; } else m_rect.X -= 10; this.Invalidate(); break; } Hertürlü fikre açığım teşekkürler. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ractamainus Mesaj tarihi: Haziran 10, 2009 Paylaş Mesaj tarihi: Haziran 10, 2009 ne hata döndürdüğünü yazarsan daha faydalı olur aslında. ya da debug yaparsan, o anki durum bildirirsen falan. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sailor Mesaj tarihi: Haziran 10, 2009 Paylaş Mesaj tarihi: Haziran 10, 2009 while döngüsünden çıkmıyordur? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Haziran 10, 2009 Paylaş Mesaj tarihi: Haziran 10, 2009 Kaç thread var programında? while (m_dirChange == false) { m_rect.Y -= 10; Thread.Sleep(50); this.Invalidate(); } .NET'de nasıl bilmiyorum ama genelde GUI operasyonları farklı thread'de yapılır, program akışı farklı thread'de gerçekleşir. Tek thread kullanıyorsan ve o thread içinde sonsuz while döngüsüne girersen GUI güncellenmediği için karenin hareket ettiğini göremezsin. Yine while döngüsünden çıkmadığın için m_dirChange'in değerini değiştirecek input'u da okuyamazsın. Bütün gün bekler durursun. ;) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aktiftablet Mesaj tarihi: Haziran 10, 2009 Paylaş Mesaj tarihi: Haziran 10, 2009 Thread.sleep() yerine timer sınıfını kullan. Designer ekranında toolboxda var, ordan sürükleyrek bir timer oluşturabilirsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Devilmanta Mesaj tarihi: Haziran 11, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 11, 2009 Mirage said: Kaç thread var programında? while (m_dirChange == false) { m_rect.Y -= 10; Thread.Sleep(50); this.Invalidate(); } .NET'de nasıl bilmiyorum ama genelde GUI operasyonları farklı thread'de yapılır, program akışı farklı thread'de gerçekleşir. Tek thread kullanıyorsan ve o thread içinde sonsuz while döngüsüne girersen GUI güncellenmediği için karenin hareket ettiğini göremezsin. Yine while döngüsünden çıkmadığın için m_dirChange'in değerini değiştirecek input'u da okuyamazsın. Bütün gün bekler durursun. ;) demek istediğini anladım sanırım ve o yüzden program hata vermeden donuyor. Debug yaptığım vakitte hata vermiyor zaten. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Devilmanta Mesaj tarihi: Haziran 11, 2009 Konuyu açan Paylaş Mesaj tarihi: Haziran 11, 2009 aktiftablet said: Thread.sleep() yerine timer sınıfını kullan. Designer ekranında toolboxda var, ordan sürükleyrek bir timer oluşturabilirsin. Teşekkür ederim ayrıca bu daha kullanışlıymış. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar