Project1

标题: 【更新】伪动态/视频 脚本 [打印本页]

作者: kuerlulu    时间: 2013-8-23 13:48
标题: 【更新】伪动态/视频 脚本
本帖最后由 kuerlulu 于 2013-8-24 19:05 编辑
做完这个脚本突然发现以前有个前辈也发布过类似脚本,就是动态标题菜单那个,和我的原理一样。
↑防触雷先声明。

最后一下退出好像没录进去。
由于2611张帧图=26.9M所以就不用毒盘等工具放工程了,脚本是关键啦。
前面切换选项时换背景其实就是图片标题菜单的原理。

[pre lang="ruby" line="1" file="伪动态/视频"]class Scene_Logo20 # ■伪视频说明:越往后面越不同步
  def main
    @i = 10
    # 生成伪视频前的准备:确定使用文件路径和居中
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
    @sprite.ox = @sprite.bitmap.width / 2
    @sprite.oy = @sprite.bitmap.height / 2
    @sprite.x = 320
    @sprite.y = 240
    # 我来组成 BGM
    Audio.bgm_play("Audio/BGM/badapple.ogg" ,100 ,100)
    Graphics.transition
    # 主循环
    loop do
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      @i += 1
      Graphics.update
      # 如果画面被切换就中断循环
      if $scene != self or @i == 2610
        break
      end
      # 每500帧清空一下缓存确保流畅运行
      if @i % 500 == 0
        RPG::Cache.clear
      end
    end
    # 各种释放
    Graphics.freeze
    @sprite.bitmap.dispose
    @sprite.dispose
    # 注释此行可BGM不停止
    Audio.bgm_stop
    # 呼出 Title
    $scene = Scene_Title.new
    # BGM已停止、、、
  end
end[/pre]


话说注释得多有木有糖?
上面是用于播放视频的,使用时请先更改倒数第四行和Audio以及@sprite.bitmap后面的内容。调出方法用 Scene_Logo20.new
第一个@i = 10是指从文件名为“10.jpg”的文件开始刷新,也就是开头,下面的“@i == 2610”是指播放到“2611.jpg”的图就停止播放。这两个值可用来调同步率。
关于帧图的制作请翻到文末。

[pre lang="ruby" line="1" file="插入型"]    @i = 722
    # 生成伪视频前的准备:确定使用文件路径和居中
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
    @sprite.ox = @sprite.bitmap.width / 2
    @sprite.oy = @sprite.bitmap.height / 2
    @sprite.x = 320
    @sprite.zoom_x = 1.25
    @sprite.y = 240
    @sprite.zoom_y = 1.25
    # 主循环
    loop do
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      @sprite.bitmap = RPG::Cache.gameover("badapple20/" + @i.to_s)
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      @i += 1
      Graphics.update
      # 如果画面被切换就中断循环
      if $scene != self or @i == 790
        break
      end
      # 每500帧清空一下缓存确保流畅运行
      if @i % 500 == 0
        RPG::Cache.clear
      end
    end
    # 各种释放
    Graphics.freeze
    @sprite.bitmap.dispose
    @sprite.dispose
[/pre]


上面这段可以插入在默认脚本中,使用时仍然要先改上述内容,“722”“790”就是视频中演示的菜单中只播放一段视频。
等完美版做出来我会更新在脚本开头就能改相应数据的。

下面是吐槽:关于为什么是20帧而不是40帧以及脚本中Graphics.update×3大丈夫吗不会卡帧吗什么的,其实我做了一个40帧的版本(6000多张),运行时完全不同步,RMXP的帧率真是碉堡了。掉帧什么的我不想吐槽了。


视频中的2倍速,很简单把第一个脚本的17 18 19 27行删掉,然后改一下BGM的节拍(第三个数值)为210就行了。
ps:结合真后台脚本享用更佳~

下面是技术信息,关于帧图制作,
采用KMP高级捕获技术每秒20帧捕获=每50毫秒一张
捕获结束请打开毁图看看,右击图片进行批量转格式(如果你第一次捕获选择bmp格式要换到jpg格式)和批量重命名(选做:批量改大小。。很占CPU不建议一次弄完),建议分3-5次弄完。
关于音频,可以百度,也可以用KMP高级捕获技术提取音频。建议转成ogg格式。
如果想只播放一次请将 Audio.bgm_play 改成 Audio.se_play

更新了关于丫的视频(“分数”做好),同时也想请问一下有没有什么好的方法做音乐游戏菜单。。
视频更新完成。

请注意左上角。
作者: satgo1546    时间: 2013-8-23 14:25
话说我也搞过这种东西,1500帧的东西就一点都不同步了……BGM放完然而图还在动……
作者: kuerlulu    时间: 2013-8-23 17:27
本帖最后由 kuerlulu 于 2013-8-23 17:29 编辑

同步率破表调试完成了,采用传说中的原画帧(6566)然后BGM节拍设置成131.9,同步率破表。
请不要尝试洗脑循环,程序大概在第17遍吃掉你的电脑、、、这什么鬼畜设定
作者: chd114    时间: 2013-8-24 11:02
我的眼睛被你闪瞎了···如果我要的是循环3次5次不是无数次也不是一次怎么办》?
作者: chd114    时间: 2013-8-24 12:51
@i=2610是循环2610次?
作者: 789456qwe    时间: 2016-2-19 13:53
求范例工程
谢谢!




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