→ james732:比較好奇的是你想要做什麼事呢? 04/18 03:22
這個是拿xna書上的教學範例來改的,他原本是用vector2記錄
視窗的寬跟高,然後在update裡記算撞到視窗後的反彈
我試著把視窗改成可變動大小,因此,需要讓遊戲原件裡記錄的
視窗寬高跟著變。
方法一:是採用this.Window.ClientSizeChanged事件,在視窗
變動時,從程式主體去修改原件的變數,這很簡單,我也試成功
了。
但是考慮到,如果遊戲變大的話,場上會有一大堆的遊戲原件,
逐一修改很費事,就打算用指標(方法二)。
雖然有遇到視窗寬高是屬性不能傳位址的狀況,但那個拐個彎就
能解決。
this.Window.ClientSizeChanged +=
new EventHandler(Window_ClientSizeChanged);
void Window_ClientSizeChanged(object sender, EventArgs e)
{
this.WindowX = this.graphics.GraphicsDevice.Viewport.Width;
this.WindowY = this.graphics.GraphicsDevice.Viewport.Height;
}
然後,把this.WindowX、this.WindowY的位址傳出去就好。
※ 編輯: F23ko 來自: 163.27.109.99 (04/18 03:39)
※ 編輯: F23ko 來自: 163.27.109.99 (04/18 03:40)
→ jhchou:fixed就是叫CLR暫時不要動fixed變數在記憶體中的位置 04/18 11:52
→ jhchou:這樣才能用指標直接操作 04/18 11:52
→ jhchou:通常會用到指標都是要對記憶體大量讀寫 04/18 12:03
→ jhchou:你的例子看起來沒有用到指標的必要啊 讓ClassSprite直接存 04/18 12:06
→ jhchou:現在window的reference就好了 04/18 12:07
→ F23ko:咦? 實執型別的指標跟參考型別的refernce是不一樣的意思喔? 04/18 13:48
→ F23ko:我還以為是類似的東西.... 04/18 13:48
→ F23ko:謝謝,我覺得我需要去讀一些基層的東西.... 04/18 13:59
推 horngsh:要弄清楚何謂value type variable and reference variable 04/20 08:45
推 horngsh:C#裡是用ref or out加在實際參數前作call by address. 04/20 08:47
→ F23ko:對,但是使用ref跟out,都沒辦法儲存變數的參考位址,一定要 04/20 09:33
→ F23ko:用指標.... 04/20 09:33
→ F23ko:例如 04/20 09:36
→ F23ko:void Func1(ref int X){ 04/20 09:36
→ F23ko:int X2 = X; //存的是「值」而不是參照 04/20 09:37
推 horngsh:C#裡用ref or out的最大目的是產生side effect, 也就是要 04/20 13:37
推 horngsh:改變原呼叫方法中的實際參數的內容... 04/20 13:37
推 horngsh:最簡單的例子是寫一個MySwap(int x, int y)..實作看看就知 04/20 13:39
→ F23ko:msdn這個方面寫的蠻清楚的。 04/20 14:29
→ help0430:你會不會想的太複雜了~要比較的時候再取得畫面長寬即可 04/21 22:07