請教一個問題
我現在做一個簡單的打飛機游戲,遇到一個問題,當炮彈運行到視窗頂端后,無法讓這個炮彈物件銷毀
我把炮彈定義為一個userobject,在這個物件的ue_timer中設定炮彈每秒移動距離,我在這里面這么些報錯,提示沒有CloseUserObject這個函式,請教各位,如果讓物件自己銷毀自己
this.y = this.y - 40
if( this.y<=0) then
CloseUserObject(this)
end if
uj5u.com熱心網友回復:
userobject沒有closeuserobject函式。window上動態創建openuserobject,也應該在window上closeuserobject。
另外,建議先記錄待銷毀的userobject, 下次視窗timer前統一銷毀。
uj5u.com熱心網友回復:
pb12.5的userobject有closeuserobject函式
uj5u.com熱心網友回復:
用destroy試試uj5u.com熱心網友回復:
低版本的pb,uo中沒有closeuserobject,而且你的用例,uo是在表單上的,可以通過表單關閉,修改代碼為:window lw
powerobject lpo
this.y = this.y - 40
if( this.y<=0) then
//getparent window
do
lpo = this.getparent()
if lpo.typeof() = window! then
lw = lpo
exit
end if
loop while true
//CloseUserObject(this)
if isvalid(lw) then
lw.closeuerobject(this)
end if
end if
uj5u.com熱心網友回復:
樓上正解版本有關函式
uj5u.com熱心網友回復:
我機上現在最低的版本是PB7(所以低于PB7的不清楚).PB7是有closeuserobject.的。不負責任地說,我隱約記得,PB6是有closeuserobject的,換句話說,openuserobject/closeuserobject,是一對對出現的,你用得到openuserobject,應該就有closeuserobject這個函式。
我做過類似的幾個程式,就事論事,其實不需要銷毀userobject,因為這樣做可能消耗更多的資源,你openuserobject一個物件,也需要時間,再CLOSE它,還是需要時間,對吧?
以現有的計算機,你浪費的這點記憶體,邊零頭都算不上。
不要用的,就把它隱藏起來,再做一個沒有用的標記,下次需要openuserobject的時候,從沒有用的時面找,找不到,再新建一個.
這種方式,和WEB服務器的連接池,還有一般應用的記憶體池是一樣的。
它們都以犧牲少量記憶體來換取較快回應時間。
當然我們PB程式員,很少需要顯示地使用記憶體池自己管理,但隱含地
string ls_swap
......
ls_swap = "123"//這里申請記憶體
ls_swap = "1"//這里把前面多用的兩個位元組標記為沒用,實際還是用了前面的記憶體。
所以你也用了這種東西。
不保證這么玩法,在所有情況下都保持最低消耗。
但既然大家都這么玩,大概論上,應該是有好處的。
----------------------------------------------------
當然啦,如果您僅僅是想試一下功能.
你可以openuserobject,那就試一下closeuserobject。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/22989.html
標籤:控件與界面
