[英]System.ComponentModel.DataAnnotations.Schema namespace conflict
[英]Xna and System namespace conflict
我正在嘗試聲明新的抽象類
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命名空間,而不是系統
我不希望您從以下控件繼承:如果要創建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(...);
}
您可能可以為“ using”語句創建別名,從而避免出現以下問題:
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(...);
}
我認為他可能一直在使用: 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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.