2011-10-11 197 views
0

第一篇文章太嗨! (请纠正我,如果我使用某个术语错误)从创建的实例调用方法

我有一个类在其中创建另一个类名为Player(让我们称之为实例播放器)的实例的屏幕。现在,在屏幕上我有一个名为ResetHUD的方法,我想从Player调用。

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

帮助表示赞赏!

+1

请将您的代码放在Q中,如果可以的话 –

回答

0

这听起来像你有一个遏制关系......屏幕对象包含一个(或更多?)播放器对象。

当屏幕创建播放器时,它可以在播放器上设置一个属性,指出父(创建)屏幕对象。

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

+0

Th e屏幕包含1个或更多玩家,是的。 我想过把它作为一个参数来传递,但它似乎是不好的做法,或者只是不好的做法。我会阅读代表和事件。谢谢! –

0

将一个自选属性上Player类。当您创建播放器类时,将该属性设置为您的屏幕类。您现在可以参考屏幕,您可以从播放器内部拨打电话。

0

那么,东西Player需要有一个参考Screen实例。选项:

  • 当您创建Player,通过this的构造函数,以便它可以记住它属于
  • ScreenPlayer创建事件,并从Screen
  • 订阅它一路传递Screen作为涉及的方法调用链的参数(这可能不适用于您的情况)
相关问题