zoukankan      html  css  js  c++  java
  • Symbian自定义控件—如何实现跑马灯效果? [symbian](转)

    网上的算法很多,但我只提供一个最笨,最简单,但最有效的方法去做:

    比如你要一行要显示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()方法

  • 相关阅读:
    R
    P
    O
    M
    二分算法的一些思考
    I
    H
    G
    5-46 新浪微博热门话题 (30分)——unfinished HASH
    BZOJ 1179: [Apio2009]Atm
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1852329.html
Copyright © 2011-2022 走看看