查看: 2782|回复: 3

[已经解决] 不通过文件名怎么改变音量?

[复制链接]
梦石
0
星屑
65
在线时间
389 小时
注册时间
2009-11-24
回帖
59
发表于 2014-11-19 22:02:33 | 显示全部楼层 |阅读模式

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

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

×
假设现在某个bgm正在播放中,或者bgm停止播放中。
即现在的状态是 Audio.bgm_play(filename) 或 Audio.bgm_stop 。
假如此时bgm的filename未知,这种情况下怎么改变bgm的volume和pitch?
此外,bgs、se、me在未知filename情况下怎么直接改变volume和pitch?

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-11-19 23:15:18 | 显示全部楼层
首先我可能没看懂你的意思,
如果你的想法是修改音量和声调的话,一个想法就是重写RPG::BGM#play方法,在@volume和 @pitch后面都乘上一个系数。BGS和SE等同样都可以这样做
然后通过控制这个系数来控制音量和声调,(好像那些系统音量控制的脚本就是这么做的(大概,未测试过
回复

使用道具 举报

梦石
0
星屑
65
在线时间
389 小时
注册时间
2009-11-24
回帖
59
 楼主| 发表于 2014-11-20 09:00:03 | 显示全部楼层
VIPArcher 发表于 2014-11-19 23:15
首先我可能没看懂你的意思,
如果你的想法是修改音量和声调的话,一个想法就是重写RPG::BGM#play方法,在@v ...

描述得不是很清楚吗……
简单来说,就是如何即时控制bgm的音量。

这是播放bgm的代码:
  1. Audio.bgm_play(filename[, volume[, pitch[, pos]]])
复制代码
假如现在我播放bgm01.ogg,音量是80:
  1. Audio.bgm_play('bgm01.ogg', 80)
复制代码
然后我想要把bgm的音量改成100,那就这样做:
  1. Audio.bgm_play('bgm01.ogg', 100)
复制代码
嗯,这似乎没有什么问题。
但这是建立在知道当前播放bgm文件名的情况下的。
也就是知道当前播放的bgm文件名是bgm01.ogg。

在不知道bgm文件名的情况,举例代码如下:
  1. Audio.bgm_play('bgm' + rand(10).to_s + '.ogg', 80)
复制代码
这时要改变bgm音量,要怎么做?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
回帖
124

开拓者

发表于 2014-11-20 11:06:27 | 显示全部楼层
直接修改各自的play方法,在每次播放时记录一下文件名
(参考BGM.last)

点评

我之前唯一想到的办法就是这个,似乎也只能这样做了。不只是play,stop也要修改的。SE音轨多不知道怎么弄,但是SE播放时间很短所以忽略就没问题了  发表于 2014-11-20 11:23

评分

参与人数 2星屑 +5 梦石 +1 收起 理由
VIPArcher + 1 认可答案
test + 5

查看全部评分

泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部