查看: 2637|回复: 2

[有事请教] 请教如何在场景里使用闪烁的效果?

[复制链接]
梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
回帖
1074
发表于 2019-6-14 22:20:58 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
VX并没有$game_screen.start_flash这个方法。
取代的是$game_map.screen.start_flash。
但这个方法只能在地图场景里使用。
不能在其他菜单场景里使用。
请问该怎么修改才能在菜单场景里使用闪烁功能?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2019-6-15 16:13:42 | 显示全部楼层
[pre lang="ruby"]
module Screen
  class << self
    attr_accessor :sprite
  end
  def self.start_flash(color, duration)
    @sprite = Sprite.new
    @sprite.z = 999
    @sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @sprite.bitmap.fill_rect(@sprite.bitmap.rect, color)
    class << @sprite
      attr_writer :duration

      def update_opacity
        @time ||= 0
        self.opacity = (self.opacity * (@duration - @time - 1)) / (@duration - @time)
        @time += 1
      end
      
      def showed?
        @time == @duration - 1 || self.opacity == 0
      end
    end
    @sprite.duration = duration
  end
end

class << Graphics
  alias update_for_screen_flash update
  def update
    update_for_screen_flash
    if (sprite = Screen.sprite)
      sprite.update_opacity
      Screen.sprite = nil if sprite.showed?
    end
  end
end[/pre]

比较简单粗暴的实现方式
要使用时用Screen.start_flash(color, duration)

一个使用范例:
[pre lang="ruby"]class Scene_Menu
  alias start_for_screen start
  def start
    start_for_screen
    Screen.start_flash(Color.new(255,0,0), 60)
  end
end
[/pre]

效果:
6.gif

点评

感谢前辈的指导,效果实现了  发表于 2019-6-15 20:12

评分

参与人数 1赞 +1 收起 理由
文雅夕露 + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部