• 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()方法

  • 相关阅读:
    linux基础学习2
    linux下部署项目问题
    ThinkPHP上传返回 “文件上传保存错误!”
    jQuery自定义插件
    对于nginx为什么能提高性能
    WebSocket 是什么原理?为什么可以实现持久连接?
    数据库的左右外连接
    漫画说算法--动态规划算法一(绝对通俗易懂,非常棒)
    Integer.MIN_VALUE
    反射
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1852329.html
Copyright © 2020-2023  润新知