Laden...

Wie kann ich ein Event auslösen bei gedrückter Maustaste?

Erstellt von Borbes vor 5 Jahren Letzter Beitrag vor 5 Jahren 854 Views
B
Borbes Themenstarter:in
21 Beiträge seit 2018
vor 5 Jahren
Wie kann ich ein Event auslösen bei gedrückter Maustaste?

Guten Abend zusammen,

Mein Spiel wächst. Per linken Mausklick schießt das Raumschiff Laserstrahlen. Was auch soweit funktioniert. Siehe Code:


private void Form1_Click(object sender, EventArgs e)
        {
            dauerfeuer = true;
            TimeSpan verstricheneZeit = DateTime.Now - start;

            if (verstricheneZeit.TotalMilliseconds > schussVerzoegerung)
            {

                Geschoss geschoss = new Geschoss(Properties.Resources.new_bullet, true, this.PointToClient(Cursor.Position).X - 38, this.PointToClient(Cursor.Position).Y - 40, 5);

                try
                {
                    soundArray[1].Position = 1;
                    soundAusgabe.Init(soundArray[1]);
                    soundAusgabe.Volume = 0.1f;
                    soundAusgabe.Play();
                }
                catch { }

                lock (geschossListe_lock)
                    geschossListe.Add(geschoss);

                start = DateTime.Now;
            }

        }

Ich würde nun aber gerne einbauen, dass bei gedrückt haltender Maustaste Geschosse verschossen werden. Ich habe mehrmals gegoogelt, allerdings nur Lösungen für ein normales Mouse Click Event gefunden.

Ich habe etwas rumexperimentiert, aber keine Lösung gefunden. Mein neuster Versuch sieht so aus:


private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && dauerfeuer)
            {
                do
                {
                    Geschoss geschoss = new Geschoss(Properties.Resources.new_bullet, true, this.PointToClient(Cursor.Position).X - 38, this.PointToClient(Cursor.Position).Y - 40, 5);
                } while (dauerfeuer);
            }
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            dauerfeuer = false;
        }

Weis jemand Rat?

B
Borbes Themenstarter:in
21 Beiträge seit 2018
vor 5 Jahren

Ok, hab es selbst gelöst. Habe jetzt einfach einen Task erstellt, der bei Maus UP wieder abgebrochen wird. Ist zwar vielleicht nicht der beste Weg, aber er funzt.