查看: 2309|回复: 7

[已经解决] 如何在放一段音乐时其他操作都失效?

[复制链接]
梦石
0
星屑
705
在线时间
2 小时
注册时间
2015-7-18
回帖
3
发表于 2015-7-18 20:22:02 | 显示全部楼层 |阅读模式

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

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

×
如题。比如说,NPC说我们来听一段音乐,然后音乐响起,之后无论你如何点鼠标,都不会有反应,直到音乐放完。然后才能开始其他操作。比如移动人物或者继续对话.希望各位大神指点

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-7-18 20:28:51 | 显示全部楼层
播放音乐
等待X帧(X为音乐时长)

如果怕对面把游戏放到后台的话,可以考虑使用 Time.now 进行计算。(不要问我要范例和代码。我没有XP)

在 RGSS3 中可以使用 Audio.bgm_pos 进行判断

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-7-18 20:30:45 | 显示全部楼层
你先估算一下你的音乐时长,然后使用事件的【等待】命令。
等待的帧数与时间的换算关系是20帧=1秒。
假如我的BGM的名字叫做'bgm.wma',长度是1分钟,那么我就这样写:
【事件指令】
演奏BGM:'bgm.wma'
等待:600帧
等待:600帧
注:等待命令最多设置999帧,所以如果长度超过999帧请使用多个【等待】命令。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-9-5
回帖
9
发表于 2015-7-18 22:46:50 | 显示全部楼层
演奏BGM,然后用等待事件,等待x帧。
x=音乐时长(秒)×60
x最大等于999,所以超过16.65秒长度的BGM需要用多个等待事件叠加。

点评

XP事件中1秒是20帧哦,这点和VA不同  发表于 2015-7-18 22:51

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
705
在线时间
2 小时
注册时间
2015-7-18
回帖
3
 楼主| 发表于 2015-7-19 08:47:33 | 显示全部楼层
taroxd 发表于 2015-7-18 20:28
播放音乐
等待X帧(X为音乐时长)

非常感谢,不过我之前就采用这种方法,但觉得怪怪的,想问问还有没有其他的办法。不过还是谢谢啦
回复

使用道具 举报

梦石
0
星屑
705
在线时间
2 小时
注册时间
2015-7-18
回帖
3
 楼主| 发表于 2015-7-19 08:48:25 | 显示全部楼层
RyanBern 发表于 2015-7-18 20:30
你先估算一下你的音乐时长,然后使用事件的【等待】命令。
等待的帧数与时间的换算关系是20帧=1秒。
假如我 ...

非常感谢,不过我之前就采用这种方法,但觉得怪怪的,想问问还有没有其他的办法。不过还是谢谢啦
回复

使用道具 举报

梦石
0
星屑
705
在线时间
2 小时
注册时间
2015-7-18
回帖
3
 楼主| 发表于 2015-7-19 08:49:32 | 显示全部楼层
茨木华扇 发表于 2015-7-18 22:46
演奏BGM,然后用等待事件,等待x帧。
x=音乐时长(秒)×60
x最大等于999,所以超过16.65秒长度的BGM需要用 ...

非常感谢,不过我之前就采用这种方法,但觉得怪怪的,想问问还有没有其他的办法。不过还是谢谢啦

点评

XP中没有比较好的办法来判断一个音乐文件是否已经播放完毕(没有音乐的定位功能),所以也只能用这种方法了。  发表于 2015-7-21 11:58
回复

使用道具 举报

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

发表于 2015-8-2 19:37:35 | 显示全部楼层
脚本中 在main前面插入一新段
复制上:
  1. module Extra
  2.   module_function
  3.   PlaySound=Win32API.new("winmm.dll","PlaySound",'pll','l')
  4.   def Play_Music(pl)
  5.     PlaySound.call(pl,0,1)
  6.     200.times{Graphics.update} #让音乐准备好 可以短一点 不过无所谓的
  7.     loop{Graphics.update
  8.     break if PlaySound.call("x.wav",0,1|16)==1}  #这里改地址
  9.   end
  10. end
复制代码
调用是 Extra.Play_Music("你的音乐文件地址")
但是音乐文件必须是wav格式的
此外 在文件目录下新建一个 x.wav 内容空白
你可以把这个x.wav建在其他地方 但是上面的代码要相应变化

p.s.Ruby中 Audio\bgm  要改成 Audio/bgm

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部