ACLLib库可以用定时器自动执行一些事情,但如果有好几件事要执行,每个事件的间隔时间不一样时,又要如何设计这种情况呢?哪ACLLib库里面有多定器可以用吗?以下给出了一个用 ACLLib库设计多定时器的最终效果动图,这里用了两个定时器实现,第一个定时器间隔100MS,第二个定时器间隔1000MS。如下图:
图片中的左边定时器实现动画方法可以看这篇:acllib动线生成圆饼图案之旋转矩阵运用
图片中右边定时器实现动画将在下面内容中讲解。
下面内容将讲解两个问题:
1.图中动画右边多方框如何实现?
先确矩形框的最内中心点(300,70),方框左上点减5,右下点加5,就有了最内的矩形框,每往外层一次左上点减5一次,右下点加5一次。
另外将画刷颜色设成空setBrushColor(EMPTY),不然上次画的矩形框都会被这次遮住,就只有这次画的框。
具体实现函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
int RectNum = 1; void timer2(int) { beginPaint(); if (RectNum > 12) { RectNum = 1; setBrushColor(WHITE); rectangle(200, 0, 450, 140); } setPenColor(GREEN); setBrushColor(EMPTY); int x = 300; int y = 70; rectangle(x- RectNum *5, y-RectNum * 5, x + RectNum * 5, y + RectNum * 5); RectNum++; endPaint(); } |
2.用ACLLib库如何实现多定器?
a.先定义定时器要呼叫的两个函数一个是画左边动画timer1,一个是画又边动画timer2。
b.再定义一个函数timer,这个函数里面加入timer1、timer2两个函数的调用,跟据编号用switch语句实现选择调用另一个函数。
c.用ACLLib库的registerTimerEvent(timer)函数设置定时器回调函数。
d.用ACLLib库的startTimer函数设置定时器编号和执行间隔时间。startTimer(1, 100);startTimer(2, 1000);
e.这里定义的编号1,2就是用于switch语句中不同case执行不同的函数,这样就实现了ACLLib库多定时器设计.
如果要定义更多个定时器方法类似,定义好定时器执行函数,加入定时器回调函数内,开始设置定时器(startTimer)编号和执行间隔时间。
如以上看的还不是很明白,下面提供了完整的多定时器源代码。
ACLLib库设计多定时器代码如下:
多定时器可执行文件下载地址:
链接:https://pan.baidu.com/s/1RORkL_tAVgaVElP1CIIKAQ
提取码:fwvz
You mentioned that fantastically. nuleaf cbd oil
You actually stated that exceptionally well! zyloric 300
Amazing all kinds of awesome information. cialis tablets
Very good knowledge. Thanks! cheap drugs