我正在尝试声明新的抽象类
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Xna.Framework.Graphics;
abstract public class GraphicsDeviceControl : Control
{
//....
protected abstract void Update();
}
但是当我编译它时,我收到了这个警告:
'WinFormsContentLoading.GraphicsDeviceControl.Update()' 隐藏继承的成员 'System.Windows.Forms.Control.Update()'。 如果隐藏了,请使用new关键字 意图。
但我想使用Microsoft.Xna命名空间,而不是System
答案 0 :(得分:0)
我认为你不想继承:Control,如果你想创建一个XNA项目的WinForms控件,那么请看create.msdn.com上的示例。
如果你真的希望你的XNA类继承WinForms,同时仍然有XNA.Update和Winforms.Update尝试更改方法名称,如下所示:
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(...);
}
答案 1 :(得分:0)
您可以为“使用”语句创建别名,以避免出现此问题:
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(...);
}
答案 2 :(得分:0)
我认为他可能一直在使用这个:http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1,并想知道如何让更新周期运行。
最好的办法是使用秒表(System.Diagnostics),在初始化时初始化它,然后使用stopwatch1.Elapsed,就像它是你的gameTime变量一样。如果你将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
}
}