C# PictureBox更改为与我想要的相反
所以我正在为我的编程课做一个第二季度的项目,我正在Visual Studio中制作一个游戏。我知道,这对比赛来说可能不太理想,但我真的没有时间把我所有的工作都转移到团结上。所以我的问题是,我设置了代码,这样当你按下空格键时,如果玩家(我用图片和GIF做的所有这些)面向右边,他会向右挥剑,如果他在左边,他会向左挥剑。有一个计时器,完成后,会将玩家动画更改回空闲状态。我测试了一下,当他面向左边,我按空格键时,他向左摆动,最后向左结束。问题是,他在面对右边的时候做了同样的事情。我已经尝试了我所知道的一切,而老师正忙于帮助其他人完全学习我的代码。有人能帮我吗C# PictureBox更改为与我想要的相反,c#,C#,所以我正在为我的编程课做一个第二季度的项目,我正在Visual Studio中制作一个游戏。我知道,这对比赛来说可能不太理想,但我真的没有时间把我所有的工作都转移到团结上。所以我的问题是,我设置了代码,这样当你按下空格键时,如果玩家(我用图片和GIF做的所有这些)面向右边,他会向右挥剑,如果他在左边,他会向左挥剑。有一个计时器,完成后,会将玩家动画更改回空闲状态。我测试了一下,当他面向左边,我按空格键时,他向左摆动,最后向左结束。问题是,他在面对右边的时候做了同样的事情。我已经尝试了我所知道的一
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Sprite_The_Knight
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.BackgroundImage = Properties.Resources.Title;
titleLabel.Show();
startLabel.Show();
KeyDown += new KeyEventHandler(Form1_KeyDown);
spritePC.Image = Properties.Resources.KnightIdle;
}
private void EnemiesReady()
{
enemyNPC1.Image = Properties.Resources.Zombie;
enemyNPC2.Image = Properties.Resources.Zombie;
enemyNPC3.Image = Properties.Resources.Skeleton;
enemyNPC4.Image = Properties.Resources.ZombieFlip;
enemyNPC5.Image = Properties.Resources.ZombieFlip;
enemyNPC6.Image = Properties.Resources.SkeletonFlip;
}
private void EnemiesGo()
{
}
private void SpriteAttack()
{
if (spritePC.Image == Properties.Resources.KnightIdle)
{
SpriteSwingRight();
}
else
{
SpriteSwingLeft();
}
AttackTimer.Enabled = true;
}
private void SpriteSwingRight()
{
spritePC.Image = Properties.Resources.KnightSwing;
}
private void SpriteSwingLeft()
{
spritePC.Image = Properties.Resources.KnightSwingFlip;
}
private void SpriteTurnRight()
{
spritePC.Image = Properties.Resources.KnightIdle;
}
private void SpriteTurnLeft()
{
spritePC.Image = Properties.Resources.KnightIdleFlip;
}
private void SpriteShield()
{
}
private void SpriteDeath()
{
}
private void startLabel_Click(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.Intro;
titleLabel.Hide();
startLabel.Hide();
introLabel.Show();
}
private void introLabel_Click(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.Land;
introLabel.Hide();
spritePC.Show();
EnemiesReady();
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
SpriteTurnRight();
}
else if (e.KeyCode == Keys.Left)
{
SpriteTurnLeft();
}
if (e.KeyCode == Keys.Space)
{
// i dunno he swings his soouurd or something
SpriteAttack();
}
}
private void AttackTimer_Tick(object sender, EventArgs e)
{
AttackTimer.Tick += new System.EventHandler(AttackTimer_Tick);
AttackTimer.Start();
if (spritePC.Image == Properties.Resources.KnightSwing)
{
spritePC.Image = Properties.Resources.KnightIdle;
}
else
{
spritePC.Image = Properties.Resources.KnightIdleFlip;
}
AttackTimer.Stop();
}
}
}
问题出在这一行:
if (spritePC.Image == Properties.Resources.KnightIdle)
您无法比较这样的图像。因为当您调用Properties.Resources…
时,总是会得到图像的新实例。但是,您可以保留这些图像的本地副本,以便能够进行比较。将这些字段放在表单上:
public partial class Form1 : Form
{
Bitmap _KnightSwingFlip = Properties.Resources.KnightSwingFlip;
Bitmap _KnightSwing = Properties.Resources.KnightSwing;
Bitmap _KnightIdle = Properties.Resources.KnightIdle;
// rest of code
}
然后在表单上的任何地方使用它们
public Form1()
{
// rest of code
spritePC.Image = _KnightIdle;
}
及
请记住,您应该相应地更改代码的其余部分。i、 e无论您在哪里使用
Properties.Resources…
都使用本地副本。问题在于这一行:
if (spritePC.Image == Properties.Resources.KnightIdle)
您无法比较这样的图像。因为当您调用Properties.Resources…
时,总是会得到图像的新实例。但是,您可以保留这些图像的本地副本,以便能够进行比较。将这些字段放在表单上:
public partial class Form1 : Form
{
Bitmap _KnightSwingFlip = Properties.Resources.KnightSwingFlip;
Bitmap _KnightSwing = Properties.Resources.KnightSwing;
Bitmap _KnightIdle = Properties.Resources.KnightIdle;
// rest of code
}
然后在表单上的任何地方使用它们
public Form1()
{
// rest of code
spritePC.Image = _KnightIdle;
}
及
请记住,您应该相应地更改代码的其余部分。i、 e无论您在哪里使用
Properties.Resources…
都可以使用本地副本。超越roo的回答:我强烈建议创建一个类,不仅保存图像,还保存有关图像的信息。imagecomaprisons总是一个坏主意。超越roo的回答:我强烈建议创建一个类,不仅保存图像,还保存有关图像的信息。这是个坏主意。非常感谢!我会试试的。@StephenFleece如果这对你有用,请接受答案谢谢!我会试试的。@StephenFleece如果这对你有用,请接受答案