Случайное изображение не перемещается при кодировании в таймере - PullRequest
0 голосов
/ 18 марта 2020

Я не знаю, по-прежнему ли мне не хватает этого, но всякий раз, когда вы хотите добавить PictureBox, вы просто находите его на панели инструментов и перетаскиваете в пользовательский интерфейс. Но то, что я сделал, я кодировал, добавив PictureBox, тогда я хочу переместить его вправо. Я кодировал его на таймере, и вот как я это делаю.

 private void enemyMove_Tick(object sender, EventArgs e)
    {
        GameMenu menu = new GameMenu();

        if (menu.cmbox_Level.Text.Equals("Easy"))
        {

            this.Controls.Add(menu.EnemyTank);
            menu.EnemyTank.Width = 26;
            menu.EnemyTank.Height = 32;
            menu.EnemyTank.BackgroundImage = Properties.Resources.Tank_RIGHT_v_2;
            menu.EnemyTank.BackgroundImageLayout = ImageLayout.Stretch;
            menu.EnemyTank.Left += 2;
        }
    }

Не спрашивайте меня, запущен ли таймер. Да, это уже началось, это было закодировано в Форме. Но почему-то, когда я запускаю программу, она не двигается. Но затем я попытался добавить PictureBox, на этот раз я попытался перетащить его в пользовательский интерфейс, затем добавить изображение на него, а затем закодировать его, перемещаясь вправо. Когда я запускаю программу, она работает. Но я хочу, чтобы всякий раз, когда я запускаю кнопку, она просто заставляет случайный PictureBox двигаться вправо. Иди, что здесь пропало.

1 Ответ

0 голосов
/ 18 марта 2020

Я сделал несколько предположений. Если мои предположения не верны, пожалуйста, обновите ваш пост для деталей. Следующее содержимое скопировано из моего комментария.

  1. Новый GameMenu всегда будет создавать новое EnemyTank.
  2. A EnemyTank Значение по умолчанию Left фиксировано ;

Ваш enemyMove_Tick продолжает создавать GameMenu и EnemyTank. То есть, каждый тик, EnemyTank создается и значение изменяется в вашем коде на "значение по умолчанию плюс 2." .

Вот пример.

 GameMenu m_menu;

 void YourConstructor()
    {
            //  InitializeComponent();
            //  something else in your form constructor
            m_menu = new GameMenu();

            m_menu.EnemyTank.Width = 26;
            m_menu.EnemyTank.Height = 32;
            m_menu.EnemyTank.BackgroundImage = Properties.Resources.Tank_RIGHT_v_2;
            m_menu.EnemyTank.BackgroundImageLayout = ImageLayout.Stretch;
            this.Controls.Add( m_menu.EnemyTank );
    }
 private void enemyMove_Tick(object sender, EventArgs e)
    {

        if (menu.cmbox_Level.Text.Equals("Easy"))
        {
            m_menu.EnemyTank.Left += 2;
        }
    }
...