从创建的实例调用方法

时间:2011-10-11 20:54:42

标签: c# oop xna

第一篇文章如此嗨! (如果我使用某些术语错误,请纠正我)

我有一个类Screen,我在其中创建另一个名为Player的类的实例(让我们调用这个实例Player)。现在,在Screen中我有一个名为ResetHUD的方法,我想从Player中调用它。

我该怎么做? ResetHUD中唯一的代码是1行,它将变量设置为另一个变量。据我所知,我可以使用EventHandler(但由于ResetHUD不需要任何参数,我认为我使用的是错误的)或委托(我不知道如何使用)。

非常感谢帮助!

3 个答案:

答案 0 :(得分:0)

听起来你有一个遏制关系...... Screen对象包含一个(或多个?)Player对象。

当Screen创建Player时,它可以在Player上设置一个属性,指示父(创建)Screen对象。

class Player
{
    private Screen parentScreen;

    public Player(Screen parentScreen) { this.parentScreen = parentScreen; }

    public MyMethodThatHasToCallScreensMethod()
    {
        parentScreen.ResetHUD();
    }
}


class Screen
{
    public Player CreatePlayer()
    {
        return new Player(this);
    }
}

你也可以使用事件(顺便说一下,事件可以有参数,也可以没有,具体取决于你需要的东西。)

这是我最喜欢的C#中的事件和代理教程。从简单开始,并以每一步为基础构建。

http://www.akadia.com/services/dotnet_delegates_and_events.html

答案 1 :(得分:0)

在Player类上放置MyScreen属性。创建Player类时,将该属性设置为屏幕类。您现在可以参考屏幕,您可以从播放器内部调用。

答案 2 :(得分:0)

嗯,Player中的某些内容需要引用Screen实例。选项:

  • 创建Player时,将this传递给构造函数,以便它能够记住它所属的Screen
  • Player上创建一个活动,并从Screen
  • 订阅该活动
  • Screen作为参数传递给所涉及的方法调用链(这在您的情况下可能不实用)