当前位置: 首页 > news >正文

时间条控件制作简明教程

转自百度<cb></cb>symbian吧 > 浏览贴子:http://post.baidu.com/f?kz=139962353

<cc></cc> 易智游戏中的时间条,格斗游戏中的血条,相信是大家在制作游戏当中经常遇到的元素.现在用一简单的教程介绍如何用S60自定义控件完成它,该控件可以随意控制大小,控制时间长度.

该控件将用到,窗口,如何制作自定义,时间周期类等知识.

制作之前首先请大家看看NokiaForum关于自定义控件的原理和教程
CPeriodic的类的使用可以参考sdk中
DeveloperLibrary>>APIReference>>C++APIreference>>TimersandTimingServices>>CPeriodic

1.类的定义:
Code:
classCMyTimerContainer:publicCCoeControl
{
public:

voidConstructL (TIntaSecond,TPointaPoint,TSizeaSize);//aSecond初始的秒数,TPoint控件所在位置;TSize控件大小
~CMyTimerContainer();
voidDraw(constTRect&aRect)const;

staticTIntStart__(TAny*aObject);//周期函数
voidStart_();//周期函数
private://data

CPeriodic*iPeriodic;
TIntiLeft;//剩余的时间
TIntiTotal;//总共的时间
TPointiPoint;//控件所在位置,
TSizeiSize;//控件的大小
}


2.周期函数:

Code:
TIntCMyTimerContainer::Start__(TAny*aObject)
{
((CMyTimerContainer*)aObject)->Start_();//cast,andcallnon-staticfunction
return1;
}

voidCMyTimerContainer::Start_()
{
iLeft--;
if(iLeft==0)
{
DrawNow();
iPeriodic->Cancel();
return;
}
DrawNow();
}
3.绘图函数
Code:


voidCMyTimerContainer::Draw(constTRect&aRect)const
{
CWindowGc&gc=SystemGc();

/*画背景*************************/
gc.SetBrushColor(KRgbBlack);
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.DrawRect(aRect);

/*画进度条*************************/
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.SetBrushColor(KRgbRed);
gc.SetPenStyle(CGraphicsContext::ENullPen);
gc.DrawRect(TRect(TSize(iLeft*Size().iWidth/iTotal,iSize.iHeight)));
}

4.控件的构造



Code:
voidCMyTimerContainer::ConstructL(TIntaSecond,TPointaPoint,TSizeaSize)
{
CreateWindowL();
iTotal=aSecond;
iLeft=iTotal;
iPoint=aPoint;
iSize=aSize;
iPeriodic=CPeriodic::NewL(CActive::EPriorityIdle);
iPeriodic->Start(0/*8000000*/,1000000/*35714*/,TCallBack(Start__,this));
SetExtent(aPoint,aSize);
ActivateL();
}

5.如何调用该控件



Code:
a,在XXXContainer.h中加入该控件
private://data
CMyTimerContainer*iTimer;

b,在构造函数中构造其,秒数,位置,以及大小
voidCXXXXContainer::ConstructL(constTRect&aRect)
{
CreateWindowL();

iTimer=new(ELeave)CMyTimerContainer;
iTimer->ConstructL(60/*initseconds*/,TPoint(0,100),TSize(176,15),this);

SetRect(aRect);
ActivateL();
}
至此一个时间控件就做好了,大家可以按照以上的步骤做一下.

贴子相关图片:

相关文章:

  • python asyncio socket_用python asyncio写一个MMO(2)
  • 深入理解Symbian控件架构
  • Symbian程序图标问题
  • 无符号数相减_关于超自然数的构造——非标准分析
  • ListBox控件
  • 分析称2007年IT巨头将争夺三大领域
  • python canny优化_python实现canny边缘检测
  • add多个文件 git 文件夹_穿越时空的git之创建版本库和常用命令操作
  • 终究需要什么呢?
  • python批量上传 服务器_批量从本地上传文件到指定服务器或从指定服务器下载文件...
  • 一本传世的游戏关卡制作秘笈
  • python实现空气质量提醒程序_用python写一个定时提醒程序的实现代码
  • python main作用_浅析python 中__name__ = '__main__' 的作用
  • 何苦做游戏
  • unittest测试框架_UnitTest单元测试框架解析「实用篇」
  • php的引用
  • hexo+github搭建个人博客
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • es6要点
  • express.js的介绍及使用
  • express如何解决request entity too large问题
  • Git初体验
  • HTTP请求重发
  • input的行数自动增减
  • Java 网络编程(2):UDP 的使用
  • Laravel Telescope:优雅的应用调试工具
  • Odoo domain写法及运用
  • python 学习笔记 - Queue Pipes,进程间通讯
  • RxJS: 简单入门
  • scrapy学习之路4(itemloder的使用)
  • socket.io+express实现聊天室的思考(三)
  • Webpack 4 学习01(基础配置)
  • 测试开发系类之接口自动化测试
  • 大快搜索数据爬虫技术实例安装教学篇
  • 工程优化暨babel升级小记
  • 简单实现一个textarea自适应高度
  • 你真的知道 == 和 equals 的区别吗?
  • 前端性能优化——回流与重绘
  • 我与Jetbrains的这些年
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • NLPIR智能语义技术让大数据挖掘更简单
  • 如何用纯 CSS 创作一个货车 loader
  • 通过调用文摘列表API获取文摘
  • ​Java并发新构件之Exchanger
  • # 达梦数据库知识点
  • ###C语言程序设计-----C语言学习(3)#
  • ###项目技术发展史
  • #{} 和 ${}区别
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (floyd+补集) poj 3275
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (蓝桥杯每日一题)love
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)