Project1

标题: 有方便快捷的对需要显示的图片施加淡入淡出效果的方法吗? [打印本页]

作者: GOODLATTICE    时间: 2024-5-5 20:32
标题: 有方便快捷的对需要显示的图片施加淡入淡出效果的方法吗?
如题。
一个一个的打图片透明度真是太煎熬了,在有十几张本身就具有自己透明度的,需要覆盖在地图上显示的图片需要淡入淡出显示的情况下真的很难顶。
有没有什么可以快速使得图片淡入淡出的方法?
作者: 魔法丶小肉包    时间: 2024-5-5 21:45
本帖最后由 魔法丶小肉包 于 2024-5-5 21:52 编辑

事件里脚本调用set_sprite_opacity(任意个参数,每个为2~5个元素的数组)
参数格式[参数1,参数2..参数5]
参数顺序:
图片编号(必填)编号为事件显示图片时填的编号,如果该参数填0,则指定为当前画面中的所有图片
目标透明度(必填)
合成方式(选填,为0,1,2中的一个)不填视为0
是否等待完成(选填,true或false)不填视为false
处理时间(选填,帧数)不填视为60

举例:
set_sprite_opacity([0,50])
set_sprite_opacity([1,100,2],[2,200])

RUBY 代码复制
  1. class Game_Interpreter
  2.   def set_sprite_opacity(*arg)
  3.     arg.each {|i| return unless i.is_a?(Array)}
  4.     if arg.size == 1 && arg[0][0] == 0
  5.       arg[0][2] ||= 0
  6.       arg[0][3] ||= false
  7.       screen.pictures.each do |pic|
  8.         pic.move(pic.origin, pic.x, pic.y, pic.zoom_x, pic.zoom_y, arg[0][1], arg[0][2], arg[0][4] ? arg[0][4] : 60)
  9.         wait(arg[0][4]) if arg[0][3]
  10.       end
  11.     else
  12.       arg.each do |i|
  13.         i[2] ||= 0
  14.         i[3] ||= false
  15.         pic = screen.pictures[i[0]]
  16.         pic.move(pic.origin, pic.x, pic.y, pic.zoom_x, pic.zoom_y, i[1], i[2], i[4] ? i[4] : 60)
  17.         wait(i[4]) if i[3]
  18.       end
  19.     end
  20.   end
  21. end

作者: GOODLATTICE    时间: 2024-5-7 18:15
魔法丶小肉包 发表于 2024-5-5 21:45
事件里脚本调用set_sprite_opacity(任意个参数,每个为2~5个元素的数组)
参数格式[参数1,参数2..参数5]
参 ...

非常感谢!测试了一下发现可以用!请问这个脚本是您本人写的吗?是的话我进行注明。
作者: GOODLATTICE    时间: 2024-5-7 18:28
魔法丶小肉包 发表于 2024-5-5 21:45
事件里脚本调用set_sprite_opacity(任意个参数,每个为2~5个元素的数组)
参数格式[参数1,参数2..参数5]
参 ...

不过我还有个问题,如果要在事件中指名图片使得其淡入显示,不是要先在事件中为此图片赋予编号吗?既然需要赋予图片编号,那么不是应该在它需要淡入显示之前就显示完毕图片了吗?
而且当我在图片显示指令写下set_sprite_opacity([1,0][1,255])时,所呈现的并不是编号图片1从透明度0至透明度255的淡入显示,而是编号1图片的淡出显示。难不成在命令中,前后顺序不是指定淡入淡出命令的方法?请问这部分具体该如何设计?对于如何赋予指定图片“淡入显示”,怎么在写法上区分淡入和淡出?
作者: 魔法丶小肉包    时间: 2024-5-12 19:19
GOODLATTICE 发表于 2024-5-7 18:28
不过我还有个问题,如果要在事件中指名图片使得其淡入显示,不是要先在事件中为此图片赋予编号吗?既然需 ...

问题1.在事件显示图片的时候如果需要做出淡入显示的效果,那么
显示图片1(透明度设为0)
set_sprite_opacity([1,255])
问题2.假设需要让图片1先进行0~255,然后再从255~0,可以通过等待参数来实现前后顺序
set_sprite_opacity([1,255,0,true,60],[1,0])
如果不写等待参数,是会同时执行的,所以会出现直接到最后一步的情况(用于多张图片一起处理)
作者: GOODLATTICE    时间: 2024-5-13 10:36
魔法丶小肉包 发表于 2024-5-12 19:19
问题1.在事件显示图片的时候如果需要做出淡入显示的效果,那么
显示图片1(透明度设为0)
set_sprite_opa ...

非常感谢!我明白了




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