林剛
關鍵字:優化
paint j2me,
區域性重新整理,區域性重畫,
我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2me
中的paint()
函式起到了畫螢幕的作用,往往在需要動畫的情況下非常頻繁地需要呼叫,而且在一些低端手機或移動裝置上面,對於
paint()
函式的頻繁呼叫會引起相應時間長甚至無法正常工作等問題。所以,對於
paint()
函式的優化就顯得特別重要。這裡,我們提出幾點優化
paint()
函式的方法和
1.
不要在paint()
函式當中使用耗時的操作,比如:
try
catch(exception ex)
其中的建立的方法由於需要
io操作非常費時,因此要盡量避免,建立操作只在初始化的時候做一遍。
2.
使用畫素較小的,一般來書,顏色種類少的顯示時間就少,因此,盡量避免使用
256色以上的,一些色調豐富,過度緩慢的往往需要
多種畫素來滿足需求,因此,盡量使用**,或者轉換成
256或
16色的,會減少繪圖時間。
3.
區域性重新整理,
每次的重畫
repaint()
都要呼叫
paint(),
而並不是每一次
repaint()
都要重畫整個螢幕,因此有時候之需要重畫部分螢幕即可,這又有兩種
方法可以實現,第一種是利用
clip,clip
是乙個矩形的繪圖區域,當重繪時,僅僅重繪這個區域以內的內容,而不管其他部分,因此可以節省操作,可
以通過setclip()
等函式設定繪圖區域。
另外可以通過
repaint( x,y,width,height )
來重畫指定的某乙個區域,這個函式實際上也是設定了某乙個重繪
clip(),
不過使用起來會更加方便。
4.
減少repaint()
的次數,盡量只在產生作用的時候才重畫。
5.
將paint()
函式的部分內容提到外面來做,使得重畫減少計算量和操作。
6.使用雙快取技術,某些裝置本身就支援雙快取技術,判斷裝置是否支援雙快取可以用canvas類的isdoublebuffered()方法。實現雙快取可以使用image 類的可變影象技術。如,利用:
image = image.createimage( width, height );
graphics g = image.getgraphics();
來建立乙個可變影象,它和canvas一樣都能夠得到graphics繪圖物件的繪製。而且可以不在paint()函式裡面,這一點非常重要。可以在init()中放入 繪圖語句,或者放到乙個單獨的函式中,把繪製到螢幕外緩衝當中,然後在paint()函式中僅僅是把這個image繪製到當前的canvas裡面了,這樣 就可以節省很多計算操作。比如:
public void paint(graphics g)
weblog: blogs.sun.***/lirincy
怎樣優化J2ME程式當中的paint 函式
怎樣優化j2me程式當中的paint 函式 優化 j2me 中的 paint 函式 林剛 關鍵字 優化 paint j2me,區域性重新整理,區域性重畫,我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2 優化j2me中的...
j2me程式優化技巧
1 少用字串連線,多用stringbuffer 2 盡量用固定大小的陣列代替使用vector 3 如果可以不使用新class就能實現功能,就不要增加新的class,因為每個class都有一定的記憶體開銷 4 使用有限的物件導向,因為純粹的oo往往意味著更多的虛方法,更多的層次關係,更多的class ...
怎樣優化j2me程式之中的 paint 函式
我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2me中的paint 函式起到了畫螢幕的作用,往往在需要動畫的情況下非常頻繁地需要呼叫,而且在一些低端手機或移動裝置上面,對於paint 函式的頻繁呼叫會引起相應時間長甚至無...