專利名稱:一種在移動通訊終端中顯示動畫的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于電信領(lǐng)域移動通訊終端圖像處理技術(shù),具體地說是一種在移動通訊終端中顯示動畫的方法。
背景技術(shù):
在目前所使用的移動通訊終端(其典型為手機、PDA)的屏幕中一般顯示的是一個固定的所選畫面,屏幕顯示不夠生動和有趣,屏幕和用戶之間的互動性比較差。
發(fā)明內(nèi)容
本發(fā)明的目的在于公開一種在移動通訊終端屏幕的任意位置顯示任意形狀的動畫,并且可以隨時改變該動畫的位置和內(nèi)容的在移動通訊終端中顯示動畫的方法,以克服上述的不足。
為了實現(xiàn)上述目的,本發(fā)明的方法包括在移動通訊終端中創(chuàng)建或者獲得一個透明的在屏幕最頂層的窗口組或窗口和在其下面創(chuàng)建一個動畫組件兩個部分,其具體步驟是第一步驟創(chuàng)建一個與窗口服務(wù)器的連接;第二步驟通過已有的與窗口服務(wù)器的連接,創(chuàng)建一個透明的在屏幕最頂層的窗口組;第三步驟在已有建立的一個透明的在屏幕最頂層的窗口組或窗口上創(chuàng)建一個子圖形;第四步驟創(chuàng)建一幀的圖像數(shù)據(jù);第五步驟將這一幀的圖像數(shù)據(jù)添加到創(chuàng)建的子圖形中;第六步驟激活這個子圖形,就能夠在屏幕的任意區(qū)域上顯示圖像。
上述第六步驟后返回到第四步驟,就能添加一幀新的圖像數(shù)據(jù),如此反復(fù),就能夠在屏幕的任意區(qū)域上顯示動畫的效果。
上述第四步驟中圖像數(shù)據(jù)包括一幀的圖像原始數(shù)據(jù)和圖像遮蓋區(qū)域數(shù)據(jù)。
上述第五步驟中圖像數(shù)據(jù)包括顯示延時的數(shù)據(jù)。
本發(fā)明基于創(chuàng)建或者獲得一組透明的在最頂層的窗口組或窗口并在其下面創(chuàng)建一個動畫組件的方法,用此方法可以在手機屏幕的任意位置顯示任意形狀的動畫,并且可以隨時改變該動畫的位置和內(nèi)容。從而解決了屏幕不夠生動和有趣的問題,增強了屏幕和用戶的互動性;并且解決了在任意窗口下顯示圖案和信息的問題,給使用者方便快捷的信息提醒和提供方式。
附圖為本發(fā)明方法的流程圖。
具體實施例方式
下面結(jié)合附圖和實施利對本發(fā)明作進(jìn)一步的描述,但下述實施例不應(yīng)理解為對本發(fā)明的限制。
本發(fā)明的方法包括在移動通訊終端中創(chuàng)建或者獲得一個透明的在屏幕最頂層的窗口組或窗口和在其下面創(chuàng)建一個動畫組件兩個部分。
第一部分為在移動通訊終端中創(chuàng)建或者獲得一個透明的在最頂層的窗口組或窗口,包括創(chuàng)建窗口組前的準(zhǔn)備、窗口組的創(chuàng)建、窗口組的獲得、窗口的創(chuàng)建;第二部分為創(chuàng)建一個動畫組件,包括創(chuàng)建一個建立在窗口組或窗口基礎(chǔ)上的子圖形,接著創(chuàng)建一幀的圖像數(shù)據(jù),然后將其添加到子圖形上,最后激活這個子圖形。
其中第一部分——創(chuàng)建或者獲得一組透明的在最頂層的窗口組或窗口,包括以下幾個步驟第一步驟創(chuàng)建一個與窗口服務(wù)器的連接。其目的是為創(chuàng)建一個透明的在最頂層的窗口組做好準(zhǔn)備工作,使其能夠到達(dá)屏幕的最頂層。
第二步驟通過已有的與窗口服務(wù)器的連接,來創(chuàng)建一個透明的在最頂層的窗口組。其目的有三個第一、可以達(dá)到透明的效果;第二、可以使這些窗口組出現(xiàn)在屏幕的最頂層;第三、給子圖形的添加提供平臺。
有些移動通訊終端中會自帶建立一個透明的在最頂層的窗口組,那么就直接使用該窗口組即可;有些移動通訊終端中窗口也可以實現(xiàn)透明和在最頂層出現(xiàn),那么就直接創(chuàng)建該窗口即可,如C++程序里的RBlankWindow。
第二部分——創(chuàng)建一個動畫組件,包括以下幾個步驟第一步驟在已有建立的一個透明的在最頂層的窗口組或窗口上創(chuàng)建一個子圖形。該子圖形可以在窗口組或窗口的任意區(qū)域顯示任意形狀的動畫。
第二步驟創(chuàng)建一幀的圖像數(shù)據(jù),其中包括一幀的圖像原始數(shù)據(jù)和圖像遮蓋區(qū)域數(shù)據(jù)。其中圖像原始數(shù)據(jù)用來描述顯示到屏幕的內(nèi)容,圖像遮蓋區(qū)域數(shù)據(jù)用來描述圖像原始數(shù)據(jù)的哪些部分顯示到屏幕上,哪些部分不顯示到屏幕上,也就是哪些區(qū)域不透明,哪些區(qū)域透明。將這一幀的圖像數(shù)據(jù)設(shè)定一個延時。這個延時就是這幀圖像數(shù)據(jù)會出現(xiàn)的時間。
第三步驟將這一幀的圖像數(shù)據(jù),包括延時的數(shù)據(jù)一起添加到創(chuàng)建的子圖形中。此時移動通訊終端中的圖像效果就準(zhǔn)備完畢了。
第四步驟激活這個子圖形。此時圖像就能夠在屏幕的任意區(qū)域顯示了。
第五步驟只要繼續(xù)按照步驟二和步驟三,就能添加一幀的圖像數(shù)據(jù),這樣就能夠在屏幕的任意區(qū)域上出現(xiàn)動畫的效果。
實施例1在手機屏幕上顯示一個飄移并不斷移動觸角的八腳章魚的動畫。
要實現(xiàn)一段漂浮在手機屏幕最頂端的動畫,首先需要解決的問題就是要搭建一個平臺,該平臺要具有以下的條件1)必須是窗口或是窗口組;2)該窗口或窗口組必須在手機屏幕的最頂層,即所有窗口之上;3)該窗口和窗口組要為透明。
為了搭建這個平臺,滿足上述的條件,本發(fā)明采取了以下兩種方法來實施。
第一種實施方式,創(chuàng)建一個透明的在屏幕最頂層的窗口組。
第一步驟創(chuàng)建一個與窗口服務(wù)器的連接在創(chuàng)建一個透明的在屏幕最頂層的窗口組時,首先需要完成的就是創(chuàng)建一個與窗口服務(wù)器的連接。創(chuàng)建該連接的主要目的是建立一個通道,使得即將創(chuàng)建的窗口組和窗口服務(wù)器能夠聯(lián)系起來,為實現(xiàn)窗口組出現(xiàn)在所有窗口的最頂層做好準(zhǔn)備。這個連接的主要步驟有兩個1)聲明一個窗口服務(wù)器的會話對象;其程序代碼為RWsSession ws;2)通過此會話對象連接到窗口服務(wù)器。
其程序代碼為ws.Connect();第二步驟創(chuàng)建一個透明的在最頂層的窗口組
當(dāng)?shù)谝徊降倪B接工作完成后,通過已有的連接,就能夠創(chuàng)建出一組透明的在最頂層的窗口組了。其步驟有兩個1)通過窗口服務(wù)器的會話對象來構(gòu)造一個窗口組對象;其程序代碼為RWindowGroup wg(ws);User::LeaveIfError(wg.Construct((TUint32)&wg,EFalse));2)通過設(shè)置此窗口組的次序位置(ordina1 position)為最前,優(yōu)先級(priority)為最高,此時窗口組被設(shè)置為屏幕頂層。
其程序代碼為wg.SetOrdinalPosition(10,ECoeWinPriorityAlwaysAtFront+10)。
第二種實施方式,獲得一個透明的窗口組并將它設(shè)置為最頂層。
有些程序會自帶建立一個透明的窗口組,那么就直接使用該窗口組并將它的優(yōu)先級設(shè)置一下即可。如在Symbian的APP程序中就可以直接獲得程序的透明窗口組。具體步驟分為兩步1)在Symbian的APP程序中,直接通過應(yīng)用程序的控件環(huán)境(CEikonEnv)來獲得應(yīng)用程序的窗口組對象。
其程序代碼為RWindowGroup&wg=CEikonEnv::Static()->RootWin();2)與上面的第一種實施方式里設(shè)置透明窗口組到最頂層的方法一樣,更改此窗口組的次序位置和優(yōu)先級就能夠設(shè)置為最頂層平臺搭建好后,就要在該平臺上創(chuàng)建一個子圖形(RWsSprite)了。所謂的子圖形其實也是一個子窗口,不同于以往的子窗口的是,它可以在窗口組的任意區(qū)域顯示任意形狀任意大小的圖片。而以往的子窗口大多數(shù)都是矩陣型的,這樣的子窗口出現(xiàn)在窗口組里會顯示出矩形范圍的圖片。這樣會使得不需要的圖片背景也出現(xiàn)在手機屏幕上,多余的矩形部分會遮蓋原屏幕上的圖案。因此,將子圖形添加到透明的最頂層的窗口組里的這個方案,解決了傳統(tǒng)窗口解決不了的問題。
創(chuàng)建一個子圖形的步驟1)通過前面的窗口服務(wù)器的會話對象來構(gòu)造一個子圖形對象。
其程序代碼為RWsSprite sprite(ws);2)通過前面的窗口組來完成子圖形的構(gòu)造。
其程序代碼為sprite.Construct(wg.Wg(),TPoint(0,0),ESpriteNoChildClip);當(dāng)子圖形創(chuàng)建完畢后,就是最后制作動畫的工序,稱之為創(chuàng)建一幀的圖像數(shù)據(jù),包括一幀的原始圖像數(shù)據(jù)、遮蓋區(qū)域數(shù)據(jù)和一幀的延時數(shù)據(jù)。其中原始圖像數(shù)據(jù)即是顯示到手機屏幕之前的初始內(nèi)容;遮蓋區(qū)域數(shù)據(jù)是用來描述圖像數(shù)據(jù)的,它將決定哪些部分顯示到屏幕上,哪些部分不顯示到屏幕上,也就是哪些區(qū)域不透明,哪些區(qū)域透明;一幀的延時數(shù)據(jù)即是這一幀的動畫出現(xiàn)和保持的時長。
該實施方式的具體步驟如下1)聲明一幀的圖像數(shù)據(jù)。
其程序代碼為TSpriteMember spriteMember;spriteMember.iInvertMask=EFalse;spriteMember.iOffset=TPoint(0,0);2)設(shè)置這幀圖像數(shù)據(jù)的原始圖像數(shù)據(jù)(八角章魚),將其轉(zhuǎn)化為一個位圖。這個位圖的原始圖像數(shù)據(jù)可以從圖像文件中獲得,或者直接從內(nèi)存的一塊區(qū)域中取得。
從文件中取得原始圖像數(shù)據(jù),來創(chuàng)建幀圖像的的程序代碼為spriteMember.iBitmap=CreateBitmapL(szBitmap,m-pScreenDevice->DisplayMode());其中CreateBitmapL函數(shù)實現(xiàn)從szBitmap所指明的文件中讀取原始圖象數(shù)據(jù),把圖象裝載到內(nèi)存中,然后指明幀圖像的原始圖像數(shù)據(jù)iBitmap就是剛才裝載的數(shù)據(jù)。
3)設(shè)置這幀圖像數(shù)據(jù)的遮蓋區(qū)域數(shù)據(jù)(遮蓋八角章魚輪廓以外的背景)。遮蓋區(qū)域數(shù)據(jù)的圖像數(shù)據(jù)可以從圖像文件中獲得,也可以通過對幀圖像的原始數(shù)據(jù)進(jìn)行計算獲得,或者直接從內(nèi)存的一塊區(qū)域中取得。
過對幀圖像的原始數(shù)據(jù)進(jìn)行計算獲得的程序代碼為spriteMember.iMaskBitmap=GenerateMaskL(spriteMember.iBitmap);其中GenerateMaskL函數(shù)完成計算幀圖像的原始數(shù)據(jù),自動生成遮蓋區(qū)域數(shù)據(jù),該數(shù)據(jù)表明一個圖像的哪個部分顯示,哪個部分透明。
4)設(shè)置這幀圖像數(shù)據(jù)的延時其程序代碼為spriteMember.iInterval=TTimeIntervalMicroSeconds32(1000000);5)當(dāng)創(chuàng)建一幀的圖像數(shù)據(jù)之后,就將其添加到子圖形中去其程序代碼為sprite.AppendMember(spriteMember);6)激活子圖形其程序代碼為sprite.Activate();上述所有的程序代碼都是在移動電話Symbian系統(tǒng)中,用C++語言建立的這樣一幀的圖像數(shù)據(jù)就可以在屏幕最頂層顯示了。
只要不斷的添加新的一幀的圖像數(shù)據(jù),在圖像數(shù)據(jù)里,改變原始數(shù)據(jù)的形象,比如原來的數(shù)據(jù)里章魚的觸角是散開的,而后一幀的圖像里章魚的觸角會有點變化。輸入較短的延時后,就會看到八腳章魚的觸角在不斷的擺動;將觸角在不斷的擺動的八腳章魚改變其輸入到子圖形里的位置,在合理的延時設(shè)置下,就會看到觸角在不斷的擺動的八腳章魚在屏幕上不斷飄移,形成動畫。
實施例2在手機屏幕固定位置上顯示一個不斷移動觸角的八腳章魚的圖像。
將實施例1中將觸角在不斷的擺動的八腳章魚不改變其輸入到子圖形里的位置,其他方法與實施例1相同,即能完成。
實施例3在手機屏幕上顯示一個不斷飄移的形象靜止不動的八角章魚圖像。
在實施例1中不改變原始數(shù)據(jù)八角章魚的形象,而是只改變其輸入到子圖形里的位置,在合理的延時設(shè)置下,就會顯示出八角章魚在屏幕上不斷的飄移。
實施例4在手機屏幕的固定位置上顯示一個形象靜止不動的八角章魚圖像。
在實施例1中,既不改變原始的圖像形象,也不改變圖像輸入到子圖形里的位置,即能完成。
本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
權(quán)利要求
1.一種在移動通訊終端中顯示動畫的方法,包括在移動通訊終端中創(chuàng)建或者獲得一個透明的在屏幕最頂層的窗口組或窗口和在其下面創(chuàng)建一個動畫組件兩個部分,其具體步驟是第一步驟創(chuàng)建一個與窗口服務(wù)器的連接;第二步驟通過已有的與窗口服務(wù)器的連接,創(chuàng)建一個透明的在屏幕最頂層的窗口組;第三步驟在已有建立的一個透明的在屏幕最頂層的窗口組或窗口上創(chuàng)建一個子圖形;第四步驟創(chuàng)建一幀的圖像數(shù)據(jù);第五步驟將這一幀的圖像數(shù)據(jù)添加到創(chuàng)建的子圖形中;第六步驟激活這個子圖形,就能夠在屏幕的任意區(qū)域上顯示圖像。
2.如權(quán)利要求1所述的在移動通訊終端中顯示動畫的方法,其特征在于第六步驟后返回到第四步驟,添加一幀新的圖像數(shù)據(jù),如此反復(fù),就能夠在屏幕的任意區(qū)域上顯示動畫的效果。
3.如權(quán)利要求1所述的在移動通訊終端中顯示動畫的方法,其特征在于第四步驟中圖像數(shù)據(jù)包括一幀的圖像原始數(shù)據(jù)和圖像遮蓋區(qū)域數(shù)據(jù)及顯示延時的數(shù)據(jù)。
4.如權(quán)利要求1所述的在移動通訊終端中顯示動畫的方法,其特征在于第一步驟連接的過程有兩個1)聲明一個窗口服務(wù)器的會話對象;2)通過此會話對象連接到窗口服務(wù)器。
5.如權(quán)利要求1所述的在移動通訊終端中顯示動畫的方法,其特征在于第二步驟創(chuàng)建過程為1)通過窗口服務(wù)器的會話對象來構(gòu)造一個窗口組對象;2)通過設(shè)置此窗口組的次序位置為最前,優(yōu)先級為最高,此時窗口組被設(shè)置為屏幕頂層。
6.如權(quán)利要求1所述的在移動通訊終端中顯示動畫的方法,其特征在于第三步驟創(chuàng)建一個子圖形的過程為1)通過窗口服務(wù)器的會話對象來構(gòu)造一個子圖形對象;2)通過窗口組來完成子圖形的構(gòu)造。
7.如權(quán)利要求1或3所述的在移動通訊終端中顯示動畫的方法,其特征在于第四步驟創(chuàng)建一幀圖像數(shù)據(jù)的過程為1)聲明一幀的圖像數(shù)據(jù);2)設(shè)置這幀圖像數(shù)據(jù)的原始圖像數(shù)據(jù),將其轉(zhuǎn)化為一個位圖;3)設(shè)置這幀圖像數(shù)據(jù)的遮蓋區(qū)域數(shù)據(jù);4)設(shè)置這幀圖像數(shù)據(jù)的延時。
8.如權(quán)利要求7所述的在移動通訊終端中顯示動畫的方法,其特征在于位圖的原始圖像數(shù)據(jù)從圖像文件中獲得或者直接從內(nèi)存的一塊區(qū)域中取得。
9.如權(quán)利要求7所述的在移動通訊終端中顯示動畫的方法,其特征在于遮蓋區(qū)域數(shù)據(jù)的圖像數(shù)據(jù)從圖像文件中獲得或通過對幀圖像的原始數(shù)據(jù)進(jìn)行計算獲得,或者直接從內(nèi)存的一塊區(qū)域中取得。
全文摘要
本發(fā)明涉及一種在移動通訊終端中顯示動畫的方法,包括在移動通訊終端中創(chuàng)建一個透明的在屏幕最頂層的窗口組和在其下面創(chuàng)建一個動畫組件兩個部分,其具體步驟是創(chuàng)建一個與窗口服務(wù)器的連接;創(chuàng)建一個透明的在屏幕最頂層的窗口組;在透明的窗口組上創(chuàng)建一個子圖形;創(chuàng)建一幀的圖像數(shù)據(jù);將圖像數(shù)據(jù)添加到子圖形中;激活子圖形;在子圖形中添加一幀新的圖像數(shù)據(jù),如此反復(fù),就能夠在屏幕的任意區(qū)域上顯示動畫的效果。本發(fā)明可以在手機屏幕的任意位置顯示任意形狀的動畫,并且可以隨時改變該動畫的位置和內(nèi)容,從而解決了屏幕不夠生動和有趣的問題,增強了屏幕和用戶的互動性。
文檔編號G06T13/00GK1997191SQ200610124679
公開日2007年7月11日 申請日期2006年9月30日 優(yōu)先權(quán)日2006年9月30日
發(fā)明者劉俊, 劉萬松, 朱順炎 申請人:武漢市迅彩科技有限責(zé)任公司