Project1

标题: 请求在界面背景中播放多帧动画的范例工程 [打印本页]

作者: monicawind    时间: 2013-10-7 18:17
标题: 请求在界面背景中播放多帧动画的范例工程
本帖最后由 monicawind 于 2013-10-7 21:22 编辑

各位达人好!

因为我是个脚本小白,Ruby的帮助和论坛上的一些关于loop_animation的帖子看不懂。

我现在只学会了在Window脚本中插入图片,实在不懂在脚本中怎么创建一个动画、怎么刷新,怎么填写那些参数(RPG::Animation::Frame)

所以想求一份在脚本中播放动画的范例工程。谢谢哪位好心的达人给我一份吧!


我想要的效果是:在取名界面中,背景上的灯笼左右摇摆!




我尝试的方法包括:

1、用事件,实现了灯笼的循环,但是界面Scene一出来,哪怕背景图设置的是透明度0,也把地图上的事件给全部遮挡了

2、想要用loop_animation,但是一直看不懂。请求范例工程!


3、用脚本,直接旋转灯笼图片:灯笼会一直朝一个方向旋转而不是左右摇摆,我不知道循环语句怎么写(下面注释掉的部分是无法生效的东西)

RUBY 代码复制
  1. def update
  2.         i=0
  3.         loop do
  4.                 i +=1
  5.                 if i <= 400
  6.                         break
  7.                 end
  8.         end
  9.         if i>0 and i<20
  10.                 @light1.angle -=1
  11.                 @light2.angle -=1
  12.                 @light3.angle -=1
  13.                 @light4.angle -=1
  14.                 @light5.angle -=1
  15.                 @light6.angle -=1
  16.                 @light7.angle -=1
  17.                 @light8.angle -=1
  18.                 @light9.angle -=1
  19.                 @light10.angle -=1
  20.         end
  21.         if i>20 and i<40
  22.                 @light1.angle +=2
  23.                 @light2.angle +=2
  24.                 @light3.angle +=2
  25.                 @light4.angle +=2
  26.                 @light5.angle +=2
  27.                 @light6.angle +=2
  28.                 @light7.angle +=2
  29.                 @light8.angle +=2
  30.                 @light9.angle +=2
  31.                 @light10.angle +=2
  32.         end       
  33.  
  34.  
  35. =begin
  36.         for i in 0..20
  37.                 @light1.angle +=1
  38.                 @light2.angle +=1
  39.                 @light3.angle +=1
  40.                 @light4.angle +=1
  41.                 @light5.angle +=1
  42.                 @light6.angle +=1
  43.                 @light7.angle +=1
  44.                 @light8.angle +=1
  45.                 @light9.angle +=1
  46.                 @light10.angle +=1
  47.         end
  48.         for i in 0..20
  49.                 @light1.angle -=1
  50.                 @light2.angle -=1
  51.                 @light3.angle -=1
  52.                 @light4.angle -=1
  53.                 @light5.angle -=1
  54.                 @light6.angle -=1
  55.                 @light7.angle -=1
  56.                 @light8.angle -=1
  57.                 @light9.angle -=1
  58.                 @light10.angle -=1
  59.         end        
  60.         for i in 0..20
  61.                 @light1.angle +=1
  62.                 @light2.angle +=1
  63.                 @light3.angle +=1
  64.                 @light4.angle +=1
  65.                 @light5.angle +=1
  66.                 @light6.angle +=1
  67.                 @light7.angle +=1
  68.                 @light8.angle +=1
  69.                 @light9.angle +=1
  70.                 @light10.angle +=1
  71.         end
  72.         for i in 0..20
  73.                 @light1.angle -=1
  74.                 @light2.angle -=1
  75.                 @light3.angle -=1
  76.                 @light4.angle -=1
  77.                 @light5.angle -=1
  78.                 @light6.angle -=1
  79.                 @light7.angle -=1
  80.                 @light8.angle -=1
  81.                 @light9.angle -=1
  82.                 @light10.angle -=1
  83.         end          
  84.         for i in 0..10
  85.                 @light1.angle +=1
  86.                 @light2.angle +=1
  87.                 @light3.angle +=1
  88.                 @light4.angle +=1
  89.                 @light5.angle +=1
  90.                 @light6.angle +=1
  91.                 @light7.angle +=1
  92.                 @light8.angle +=1
  93.                 @light9.angle +=1
  94.                 @light10.angle +=1
  95.         end        
  96. =end
  97. =begin
  98.     loop do
  99.                 for i in 0..20
  100.                         @light1.angle +=1
  101.                 end     
  102.                 for i in 0..20
  103.                         @light1.angle -=1
  104.                 end             
  105.                 if $scene != self
  106.                         break
  107.                 end
  108.     end   
  109. =end





作者: monicawind    时间: 2013-10-7 18:19


十一长假就要过去,555,跪求高人指点指点~~~5555
作者: monicawind    时间: 2013-10-7 18:30
跪求高人解答……坐等……555人家还差一步就可以把漂漂的UI弄出来了啊55555

作者: myownroc    时间: 2013-10-7 19:12
不能这么用循环,rm刷新的频率很高,图片交替时根本看不出。
建议去参考各种动态效果(动态战斗系统、动态标题等等)。
楼主有脚本基础,应该能够看懂。
作者: 芯☆淡茹水    时间: 2013-10-7 20:57
本帖最后由 芯☆淡茹水 于 2013-10-7 20:58 编辑

1,弄两张背景图片:一张灯笼向左摆,另一张向右摆,命名:灯笼0;灯笼1  ,保存在 Pictures 文件夹下。
2,在你的显示文字的场景里,在生成窗口后边,初始化一个局部变量(名字随意),比如:@Time = 0
3,同样在该场景的 update 方法里,添加生成背景图,背景图的名字根据变量 @time 的变化而变化,
   比如:@time += 1
             @time = 0 if @time >= 20    #限制变量,因为只有两张背景图,用十帧时间显示一张。
         @menu_com = Sprite.new
             name = "灯笼" + (@time / 10).to_s   #文件名为 灯笼 加上变量值除以 10 ,也就是 灯笼0 和 灯笼1 不断变换。
             @menu_com.bitmap = RPG::Cache.picture(name)
最后,在释放窗口那里,加一句:@menu_com.dispose if @menu_com != nil  
作者: 芯☆淡茹水    时间: 2013-10-7 21:27
同理,也可以用位图的变换显示来显示一些动态效果,比如一些装备大图的动态。背景图片就用精灵图片显示。
再给你个装备大图动态的效果范例
Project1.rar (280.86 KB, 下载次数: 44)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1