[英]How to pass a forms.timer into another class to be used simultaneously?
我主要有一個計時器,希望將其傳遞到一個名為“ Enemy”的類中。 我不確定如何正確執行操作。 這是我的代碼的樣子。
我的計時器在主要調用“點擊”中稱為“ mastertmr”。 單擊“敵人產生”按鈕,然后我希望能夠以與我的主計時器相同的增量生成敵人。 我將其作為“ tmr”傳遞。
public MainWindow()
{
InitializeComponent();
character = new Character(Background, Dispatcher, keys, Display, 10);
character.Place(200, 100);
creatures = new List<Character>();
enemies = new List<Enemy>();
creatures.Add(character);
Display.Content = character.X;
random = new Random();
enemymanager = new EnemyManager(Background, Dispatcher, keys, Display, **mastertmr** , 10);
mastertmr = new System.Windows.Forms.Timer();
mastertmr.Interval = this.waitTime;
mastertmr.Tick += new EventHandler(Click);
mastertmr.Start();
}
public void Click(object sender, System.EventArgs e)
{
//EnemyManager enemymanager;
enemymanager.spawn();
}
class EnemyManager
{
System.Windows.Forms.Timer tmr;
protected Dispatcher dispatcher;
protected Canvas Background;
protected Label Display;
protected Int32 waitTime;
protected Dictionary<String, String> keys;
public int i;
public EnemyManager(Canvas Background, Dispatcher dispatcher, Dictionary<String, String> keys, Label Display, System.Windows.Forms.Timer tmr, Int32 waitTime =100)
{
this.Background = Background;
this.dispatcher = dispatcher;
this.keys = keys;
this.waitTime = waitTime;
this.tmr = tmr;
}
public void spawn()
{
tmr.Tick += new EventHandler(hi);
tmr.Start();
Enemy enemy;
i++;
if (i % 100 == 0)
{
enemy = new Enemy(Background, dispatcher, keys, Display, 10);
enemy.Place(400, 0);
}
}
public void hi(object sender, System.EventArgs e)
{
Display.Content = "Hiiiiiiiiiiiiiiiiiiisdfghdfgh";
}
}
我不確定您要做什么,但我會避免將計時器傳遞給敵人的班級。 如果您試圖在每個刻度上同時執行多個操作,那么我將在主類的Tick事件上訂閱“ hi”方法,例如
enemymanager = new EnemyManager(Background, Dispatcher, keys, Display, 10);
mastertmr = new System.Windows.Forms.Timer();
mastertmr.Interval = this.waitTime;
mastertmr.Tick += new EventHandler(Click);
mastertmr.Tick += new EventHandler(enemymanager.hi);
mastertmr.Start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.