五、缩放、透明度和手动动画
下一个问题是怎么让这个光圈动起来。我们希望它能够在武将技施放后迅速扩大、变透明,完成气圈向外冲击并最终逸散的效果。
我们可以用SetObjectScale函数来设置物件的缩放大小:
void SetObjectScale (int objectHandle, int xScale, int yScale);
其中,scale以65536(0x10000)为原大小。因此,32768(0x8000)为二分之一大小,131072(0x20000)为两倍大小。
关于不透明度,我们可以用SetObjectOpacity函数来设置:
void SetObjectOpacity (int objectHandle, int nOpacity);
(该函数曾经的命名为SetObjectBrightness(“亮度”),该命名是注册带来的遗留问题之一。实际上由奥汀钦定的DownBrightness和RaiseBrightness两个函数名可知,“亮度”一般指的是背景亮度;何况,一个物件如果亮度为100%,理应全白才对。目前两个函数名都可以使用,并且具有同等作用。)
不透明度以16为100%(不透明),以0为0%(完全透明)。
知道怎么设置缩放和透明度之后,接下来的问题就是如何创建动画效果。在这里,我们用一种“土办法”来手动创建动画:我们用一个循环,让程序每过1 Tick就放大一次物件,并降低一次不透明度。

这里,每个循环中,我们都改变一次物件的属性:我们让这个物件每Tick放大原图的十六分之三倍,并且不透明度下降100%的十六分之一。Delay(1)使得一次循环的用时为1 Tick,避免程序不间断地把循环直接运行完,这样会让显示效果“一步到位”,直接显示最终的情形——此时不透明度已经归0,什么都显示不出来了。
手动动画是一种很常用的方法,我们之后会频繁地使用这种方法。从原理上说,这种做法类似于制作动画时一帧一帧地作画,改变物件的大小、透明度、位置等属性,只不过我们是使用代码来完成的而已。
最后,我们用以下函数销毁物件:
void FreeObject (int object);
下一个问题是怎么让这个光圈动起来。我们希望它能够在武将技施放后迅速扩大、变透明,完成气圈向外冲击并最终逸散的效果。
我们可以用SetObjectScale函数来设置物件的缩放大小:
void SetObjectScale (int objectHandle, int xScale, int yScale);
其中,scale以65536(0x10000)为原大小。因此,32768(0x8000)为二分之一大小,131072(0x20000)为两倍大小。
关于不透明度,我们可以用SetObjectOpacity函数来设置:
void SetObjectOpacity (int objectHandle, int nOpacity);
(该函数曾经的命名为SetObjectBrightness(“亮度”),该命名是注册带来的遗留问题之一。实际上由奥汀钦定的DownBrightness和RaiseBrightness两个函数名可知,“亮度”一般指的是背景亮度;何况,一个物件如果亮度为100%,理应全白才对。目前两个函数名都可以使用,并且具有同等作用。)
不透明度以16为100%(不透明),以0为0%(完全透明)。
知道怎么设置缩放和透明度之后,接下来的问题就是如何创建动画效果。在这里,我们用一种“土办法”来手动创建动画:我们用一个循环,让程序每过1 Tick就放大一次物件,并降低一次不透明度。

这里,每个循环中,我们都改变一次物件的属性:我们让这个物件每Tick放大原图的十六分之三倍,并且不透明度下降100%的十六分之一。Delay(1)使得一次循环的用时为1 Tick,避免程序不间断地把循环直接运行完,这样会让显示效果“一步到位”,直接显示最终的情形——此时不透明度已经归0,什么都显示不出来了。
手动动画是一种很常用的方法,我们之后会频繁地使用这种方法。从原理上说,这种做法类似于制作动画时一帧一帧地作画,改变物件的大小、透明度、位置等属性,只不过我们是使用代码来完成的而已。
最后,我们用以下函数销毁物件:
void FreeObject (int object);

















