Symbian自訂控制項—如何?跑馬燈效果? – [symbian]

來源:互聯網
上載者:User

網上的演算法很多,但我只提供一個最笨,最簡單,但最有效方法去做:

比如你要一行要顯示4個字母的長度,顯示的資訊為"ABCDE",1秒鐘為其更新速度

那麼我們可以緊挨著放置4個LABEL,LABEL1,LABEL2,LABEL3,LABEL4設定好他們的位置

然後演算法如下:

1.擷取要顯示的資訊並存入數組裡

  TBuf<10> iSourceData = _L("ABCDE");

  CDesCArray* aDataArray = new (Eleave) CDesCArrayFlat(10);

  CleanupStack::PushL(aDataArray);

  for(TInt i = 0; i< P>

 {

  aDataArray->AppendL(iSourceData[i]);

 }

2.以下為跑馬燈的具體實現:

在標頭檔定義:

         TInt j = 0;

         TInt a=0;b=1;c=2;d=3;

以下需放在使用中的物件的RunL()裡執行

                 if(a < aDataArray->Count())

              {

              LABEL1->SetTextL((*aDataArray)[a]);

              }

              else

              {

               LABEL1->SetTextL(_L(""));

              }

          if(a < aDataArray->Count()+2)

              {

              a++;

              }

              else

              {      

               a=0;

              }

               if(b < aDataArray->Count())

          {

              LABEL2->SetTextL((*aDataArray)[b]);

              }

              else

              {

               LABEL2->SetTextL(_L(""));

              }

                if(b< aDataArray->Count()+2)

              {

              b++;

              }

              else

              {      

               b=0;

              }

 

               if(c< aDataArray->Count())

              {

              LABEL3->SetTextL((*aDataArray)[c]);

              }

              else

              {

               LABEL3->SetTextL(_L(""));

              }

 

           if(c< aDataArray->Count()+2)     

         {

              c++;

              }

              else

              {      

               c=0;

              }

 

             if(d< aDataArray->Count())

              {

              LABEL4->SetTextL((*aDataArray)[d]);

              }

              else

              {

               LABEL4->SetTextL(_L(""));

              }

 

               if(d< aDataArray->Count()+2)            

              {

              d++;

              }

              else

              {      

               d=0;

              }

              waitOneSend(); //等待一秒鐘的操作

記得退出頁面得調用使用中的物件Cancel()方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.