公共方法在其类中有效,但在另一个正在发生的事情上不起作用
本文关键字:不起作用 另一个 方法 有效 | 更新日期: 2023-09-27 18:35:50
我在ballsprite类上创建了一个方法,告诉我是否存在碰撞。它应该返回一个布尔值;问题是当我从场景类调用它时,它会调用该方法,但当我告诉它设置 Ball visible = false
它不会这样做。
所以我在 BallSprite
类上将其创建为属性并将其设置为 false,知道为什么它会以这种方式发生吗?
这是相关代码:
public bool isvisible = true; //this is the attribute I added
public bool is_ballCrash() //this checks for collision
{
int maxY = game.GraphicsDevice.Viewport.Height - ballSprite.Height;
return (ballPosition.Y > maxY);
}
if(is_ballCrash()) //this is is_ballCrash usage
{
//crashSound.Play();
ballPosition.Y = 0;
ballSpeed.X = 150;
ballSpeed.Y = 150;
isvisible = false; //***
}
现在在我的现场:当我在更新方法上添加它时,它可以工作:
if (ballSprite.isvisible == false)
ballSprite.Visible = false;
但这不起作用,这就是我得到的:
if (ballSprite.is_ballCrash() == true)
{ballSprite.Visible = false;}
它确实返回一个 true 值(球在其 y 位置重置,因此类本身工作)。
问题是在场景中输入方法,if
获得它的真实值(或者至少应该,因为该方法返回它)但不执行块。
我尝试了其他代码行,例如:
ballSprite.ballSpeed.X -= 1000;
但它没有到达它(不会在断点上停止)
我不明白该方法如何返回 true 并在精灵类上执行它应该做的事情,但在场景类的更新方法上没有它应该获得相同的值。
除非我错过了一些明显的东西。
我想我知道
- this.isvisible = false;在你的类中
- 公共财产可见不知何故没有链接。
您可以通过在类中创建函数来轻松测试这一点
public void TestVisible()
{
System.Diagnostics.Debug.Assert(this.isvisible == this.Visible);
}
并从
if (ballSprite.is_ballCrash() == true)
{
ballSprite.Visible = false;
ballSprite.TestVisible();
}
你应该得到一个断言错误