actioncircle.cpp
来自「如何实现一个活动对象」· C++ 代码 · 共 88 行
CPP
88 行
#include "ActiveCircle.h"
#include "CircleContainer.h"
CActiveCircle::CActiveCircle(CCircleContainer* aBallAppView, TInt ax,TInt ay)
:CActive(CActive::EPriorityStandard)
{
iCCircleContainer = NULL;
iPoint.SetXY(ax,ay);
iCCircleContainer = aBallAppView;
iTimer.CreateLocal();
vx = 10;
vy = 10;
//将活动对象加入对象调度器
CActiveScheduler::Add(this);
}
CActiveCircle::~CActiveCircle()
{
Cancel();
iTimer.Close();
}
void CActiveCircle::Start()
{
if(IsActive())
{
return;
}
else
{
//调用异步函数
iTimer.After(iStatus,100000);
//激活活动对象
SetActive();
}
}
void CActiveCircle::RunL()
{
int x = iPoint.iX;
int y = iPoint.iY;
x += vx;
y += vy;
if(x < 0)
{
x = -x;
vx = -vx;
}
if(x > 137)
{
x = 264 - x;
vx = -vx;
}
if(y < 0)
{
y = -y;
vy = -vy;
}
if(y > 103)
{
y = 200 - y;
vy = -vy;
}
//设置新座标
iPoint.SetXY(x,y);
//重新绘制屏幕显示
iCCircleContainer->DrawNow();
//再次启动
this->Start();
}
void CActiveCircle::DoCancel()
{
iTimer.Cancel();
}
TPoint& CActiveCircle::GetPoint()
{
return iPoint;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?