symbian 5th學習小結(拖動和pkg)

來源:互聯網
上載者:User

最近一直在弄移植,將3rd的程式移植到5th上,個人感覺,如果使用的都是系統控制項的話,那麼工程將要改動的地方很少。可能主要的工作就是添加上觸摸事件。如果你的前任將介面或者代碼寫的比較好的話,那麼恭喜你改起來會相當容易。

 

說一下我的心得吧,剛剛接觸觸摸事件,有點不大適應。會用的也就EButton1DownEButton1Up這兩個事件,至於拖動EDrag和EMove直接不用也不明白,現在感到很欣慰的是EDrag搞明白了點,而EMove現在也不懂,希望高手留言指點下。

 

如果現在symbian實現拖動,相對來說還是比較容易的。舉個例子來說,我想實現一個矩形在螢幕上的拖動。

 

首先,先定義個成員 TRect iRect;

然後在Draw函數中畫整個矩形,在這裡不累述了。

 

之後就是處理拖動事件。

 

當點擊螢幕的時候會產生個EButton1Down事件,這裡一般我們需要記錄一下他的位置可以用事件的iPosition這個成員擷取到你點擊的位置,TPoint point1;

 

如果你一直在螢幕上,然後拖動,那麼接下來系統會不停的回調HandlePointerEvent這個函數,然後事件類型iType是EDrag,這個時候我們只需要這樣寫,如下

if ( aPointerEvent.iType == TPointerEvent::EDrag )
{

TPoint point2 = aPointerEvent.iPosition - point1;  //相對於第一個點移動的位置

iRect.Move(point2 ); //

point1 = aPointerEvent.iPosition  //記錄這次拖動的事件的位置

DrawNow();

}

 

 

這樣就可以實現矩形的拖動了,當然觸摸事件還沒有結束,還會相應一個事件。

 

最後會相應EButton1Down這個事件。

 

如果當初的是點擊下螢幕,那麼就只會有EButton1DownEButton1Down兩個事件。

 

所以最後是在處理時間的時候,寫下判斷條件,因為handlePointerEvent一般是會調用兩邊的。

 

加上相應的觸摸後,基本3rd轉5th的工作就OK了。

 

最後是打包了,如果當時是3rd產生的工程,當然打包後可以直接用,但是一般會在安裝的時候提示軟體可能不相容等等提示資訊。這個時候開個UID就好。將pkg中的0x101F7961改為0x1028315F。對於具體的UID的介紹可以看下一遍blog。

 

暫時先寫這麼多了,如果有說的不對和不足的地方,希望路過的大牛小牛,大神大嬸們留個腳印。

 

註:要想使用EDrag,別忘了在container的ConstructL中加一句EnableDragEvents();

 

這幾天又發現些問題,可能是3rd的開發習慣了,也有可能是對於觸摸事件處理沒有經驗的原因吧!出了些很理想化的問題。比如我一個簡單的點擊事件。我單純的認為就會產生一個down和up事件,理論上是這樣,但是現實總是殘酷的。往往一些螢幕比較差的機器,在你想單純的產生一個點擊的事件(就是我們理想的down和up事件)的時候,往往都會產生一個EDrag(拖動)事件,所以大家在處理觸摸事件的時候,最好是將拖動距離很短的事件也判斷為一個簡單的點擊事件。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.