转自百度<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(); } 至此一个时间控件就做好了,大家可以按照以上的步骤做一下.
|
|
|
贴子相关图片:
|
分享到:
相关推荐
nokia-自定义控件,Symbian学习笔记,SymbianER-时间条控件制作简明教程,创建自定义控件中文
PB各种时间控件, PB各种时间控件, PB各种时间控件 PB各种时间控件PB各种时间控件, PB各种时间控件, PB各种时间控件 PB各种时间控件
控件_滚动条控件_滚动条控件_滚动条控件_滚动条控件_滚动条控件_滚动条控件_滚动条
【易语言】控件大全使用教程 阿杰整理上传于,2009年2月17日10:01:28 包括以下控件: 控件-组合框 控件-状态条(工具条) 控件-影像框 控件-颜色选择器 控件-选择列表框 控件-选择框 控件-选择夹 控件-信息框 ...
拖动seekbar选择时间的自定义控件
TimelineDataSource时间线控件 TimelineDataSource时间线控件 TimelineDataSource时间线控件 TimelineDataSource时间线控件 TimelineDataSource时间线控件 TimelineDataSource时间线控件
ITextSharp控件_入门教程,
wpf 时间轴控件
时间控件JS时间控件JS时间控件JS时间控件JS时间控件JS时间控件JS
日期时间控件日期时间控件日期时间控件日期时间控件日期时间控件
js 时间控件js 时间控件js 时间控件js 时间控件
时间控件时间控件时间控件时间控件JS时间控件JS时间控件JS时间控件JS时间控件
WindowsFormsDevExpress控件中文使用教程(如若打开空白,则在属性里点击解除锁定按钮)
本应用在TigraSlider滑条控件的基础上,扩展了时间滑条的功能。 扩展了两个JS方法: (1)任一整数转换成时间格式字符串函数:intToTime() (2)将时间格式字符串转换成整数函数:timeToInt() TigraSlider示例请...
一个简单的ActiveX控件——详尽教程
Android强大的日期时间选择控件 安卓 android 日期时间 控件 datepicker
vb窗体和基本控件PPT课件教程,重点讲述控件的属性及用法
qml实现简单的时间选择控件
1、根据给定的年和月绘画出时间控件 2、往时间控件中添加小圆点标识(单个添加和批量添加--单个传当月日期,多个传日期数组) 3、对控件中前、后月份日期的点击事件(灰色日期),当前月份日期点击事件 4、日期...