簡體   English   中英

如何將forms.timer傳遞到另一個類中以同時使用?

[英]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();
}

EnemyManager類

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.

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