上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-11-16, PM 3:31 星期日 文章主題: 問題 |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:36 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-11-16, PM 8:15 星期日 文章主題: Re: [問題發問] 用DirectDraw 寫程式的問題!!! |
|
|
你的vc++版本太新…我開啟不了@_@"
我只能開2005以下的… |
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-11-17, AM 3:38 星期一 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:36 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-11-17, PM 5:42 星期一 文章主題: |
|
|
你把一個CDisplay物件用傳值傳給了drawPlayer函式
在drawPlayer跑完一次後,它會把這個傳進來的物件給delete掉
結果它的解構式中會把一些需要的東西給SAFE_RELEASE掉
雖然你外面那個CDisplay物件的一些成員指標還指向原本的那些空間
但是空間中的資料已經被Release掉了
所以第二次跑到drawPlayer函式時,你的程式就當了
解決方法很簡單
把drawPlayer的參數從傳值改成傳址就行了 |
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-11-17, PM 6:34 星期一 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:37 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-11-17, PM 9:49 星期一 文章主題: |
|
|
HPkon 寫到: | 可以了耶!!!
謝謝大人的幫忙!!!
可是在下還有個小問題!!!
就是在下 new 了 2 個 Player 物件之後
人物的圖片會一直閃爍
但是如果把 Player 類別裡的 drawPlayer 函數裡的 clear() 拿掉的話就不會有問題
可是相對的畫面就沒辦法清除了
請問這有什麼方法可以解決嗎???
http://www.badongo.com/file/12127438 |
會這樣是因為你繪圖的流程架構有問題
CDisplay的UpdateBounds、Clear跟Present都不應該是每張圖就做一次的
這些都是全畫面相關的函式,每個frame應該只做一次
所以你必須把這三個函式抓出來到外面
大致像這樣:
代碼: | void drawGame()
{
GameDisplay.UpdateBounds();
GameDisplay.Clear();
PlayerTest->drawPlayer(&GameDisplay);
PlayerTest2->drawPlayer(&GameDisplay);
GameDisplay.Present();
} |
而drawPlayer裡留一個BitBlt就好
這是最簡單的改法,只是這個做法並不是什麼很好的解決方案
或許你該想想有沒有什麼其他的方式 |
|
回頂端 |
|
|
|