简单的动画实现



hewenxie
2009-01-17 11:38:14

[i=s] 本帖最后由 hewenxie 于 2009-7-12 22:12 编辑 [/i]

AVG MAKER DS现在还不支持现成的动画文件格式,但是可以利用背景切换实现一些简单的动画,制作简单OP应该是可以的。
利用bg切换做动画,这样需要的图特别多,工作量很大。但如有这种需求则可以尝试一下。

教学
利用res_bg() 或 bg()
这两个指令最后一个参数是淡入淡出,只要把它设置为0,这样就关闭效果,实现快速bg切换。

下面就可以这样写脚本
@res_bg(avgFiles/bg/bg.res,bg1,0);
@res_bg(avgFiles/bg/bg.res,bg2,0);
@jump(-2);
这里形成了一个死循环,程序会在bg1和bg2这两张图之间来回切换。
同理,利用jump跳转可实现循环。当然如果不需要重复而单张逐一切换实现动画就不用循环了。

不重复只需一直写下去就可以了,结构很简单。
现在我们仍然讨论循环问题,
那么有人疑惑了,“死循环我怎么跳出去,不可能一直播动画啊?”
这里就要用到分支结构,利用系统变量实现。
--------------------------------------------------------
code:
--------------------------------------------------------
[code=amds]// 播放音乐
@playBGM(avgFiles/bgm/bgm1.mp3);
// 申请一个变量记录循环次数
@set_var(times, 0);
// 动画循环体 (假设有100张图)
@res_bg(avgFiles/bg/bg.res,bg1,0);
@res_bg(avgFiles/bg/bg.res,bg2,0);
....
@res_bg(avgFiles/bg/bg.res,bg100,0);
// 一次循环完毕,我们给times加上1
@set_value($(times)+1);
@if($(times)<2); // 判断是否循环了两次
@jump(-102); // 没有到两次,继续跳上去循环
@endif();
// 循环了两次 执行脚本跳转,结束此脚本
@unset_var(times);
@stopBGM();
@changeText(avgFiles/data/scr1.spt);[/code]
-----------------------------------------------------------
希望上面内容对制作有所帮助。

附件是演示
[attach]626[/attach]

[[i] 本帖最后由 hewenxie 于 2009-1-19 09:21 编辑 [/i]]


掌叔
2009-01-17 14:25:44

对于大量的图,我觉得可以先用flash等软件做好动画,然后再把每一帧都导出。回头我写个用flash导出动画图片的教程。