2011-01-17 17 views
0

私はXNAとSystem名前空間の競合

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using Microsoft.Xna.Framework.Graphics; 
abstract public class GraphicsDeviceControl : Control 
{ 
    //.... 

    protected abstract void Update(); 

} 

新しい抽象クラスをdeclarateしようとしているが、私はそれをコンパイルしたとき、私はこの警告持っていた:

'WinFormsContentLoading.GraphicsDeviceControl.Updateを()' は、継承されたメンバーを非表示にします。 'System.Windows.Forms.Control.Update()'。 隠蔽が の場合、新しいキーワードを使用してください。

しかし、私はMicrosoft.Xna名前空間ではなく、システムを使用したい

私はあなたが継承したくないと思う
+1

Microsft.Xna名前空間には制御がありません。 Windows Forms ControlにXNAコンテンツを描画するか、Microsoft.Xna.Framework.Game/Microsoft.Xna.FrameworkのUpdatを実装するか、実際に何を達成したいかは不明です。 .GameComponent。 –

答えて

0

:あなたは、あなたのXNAプロジェクトのWinFormsのコントロールを作成する場合は、コントロールしてくださいcreate.msdn.comのサンプルを参照してください。

まだXNA.UpdateとWinforms.Updateの両方が、このようなメソッド名を変更してみてくださいしている間、あなたは本当に、あなたのXNAクラスはリサイズを継承する場合:

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using Microsoft.Xna.Framework.Graphics; 
abstract public class GraphicsDeviceControl : Control 
{ 
    //.... 
    public overide void System.Windows.Forms.Control.Update(...) 
    protected abstract void MyNameSpace.Update(...); 

} 
0

作成することができるかもしれませんあなたがそうのように、この問題を回避するために、文「を使用して」の別名は:http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1と更新サイクルを実行するために取得する方法を疑問に思っ:

using System; 
using System.Drawing; 
using Forms = System.Windows.Forms; 
using Microsoft.Xna.Framework.Graphics; 
abstract public class GraphicsDeviceControl : Forms.Control 
{ 
    //... 
    public overide void Forms.Control.Update(...) 
    protected abstract void MyNameSpace.Update(...); 
} 
0

私は彼がこれを使用しているかもしれないと思います。

ストップウォッチ(System.Diagnostics)を使用し、初期化で初期化し、gameTime変数のようにstopwatch1.Elapsedを使用することをお勧めします。 Application.IdleをInvalidate()に接続すると、Draw()関数が何度も呼び出されます。ここから更新関数を呼び出すことができます。

私はこれが古いと知っていますが、これを見つけたので、他の人がそれを見つけるかもしれません。インターネットのためのもの。

class YourDevice : GraphicsDeviceControl 
{ 
    private Stopwatch timer; 

    protected override void Initialize() 
    { 
     timer = Stopwatch.StartNew(); 
     Application.Idle += delegate { Invalidate(); }; 
    } 

    protected override void Draw() 
    { 
     Update(timer.Elapsed); 
    } 

    private void Update(TimeSpan gameTime) 
    { 
     // etc 
    } 
}