标签:moved setevent 线程 c# 自动 stop 闪烁 内容 问题
由于human出牌的时候,牌总是和right玩家的胡同一时间出来,为了更有时序感,考虑的时候修改了结构,只新开一个线程,把click事件和问胡分开,由此结构也更简单和清楚,也由此少了100多行代码,切实感受到了先做规划的重要,但是也确实是刚开始的时候不懂的用线程,只能是摸索中前进。
c#中,要在一个类中的函数中使用另一个类的变量和方法等。
调整出牌显示时序。
谁开始的初始化有问题,已改正。
三方面联合初步调试,开始着手加入动画
用private ManualResetEvent human_movedone = new ManualResetEvent(false);来控制线程而不再用thread.sleep.
time控件只能在主线程中使用,要实现ai玩家的出牌,故用System.Timers.Timer类。
为了避免出现同时有多条线程在执行timer里的内容,应该在timer_tick开始时timer_stop,结束的时候timer_start.
ManulResetEvent和AutoResetEvent:ManulResetEvent的waitone后不会重置,需要手动用reset,而AutoResetEvent自动重置。
pictureBox_human_move.BringToFront();控件显示优先级提高,pictureBox_human_move.SendToBack()放最下面的层,显示优先级降低。
基本完成四个玩家的出牌动画。
由于显示的图片过多,打开程序和最小化-还原的时候出现闪烁,设置双缓存也不能明显改善,故尽量把开始时候显示的图片压缩,让它需要显示的时候再显示而不是不需要显示的时候显示card back。
碰的时候牌回收,原来自己的回合不能杠,已改。摸的牌放在picturebox14,出完牌再整理。
标签:moved setevent 线程 c# 自动 stop 闪烁 内容 问题
原文地址:http://www.cnblogs.com/zhouenyu/p/6123720.html