设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1007|回复: 5
打印 上一主题 下一主题

怎么实现播放BGM一遍…

 关闭 [复制链接]

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
跳转到指定楼层
1
发表于 2009-4-8 00:02:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
放一遍音乐,然后执行其他事件…貌似要用到计时器吧?不过自带的计时器很不靠谱的样子…麻烦知道的人用高精度计时器实现一下吧==那个脚本的说明我没看懂…
此贴于 2009-4-10 11:16:28 被版主darkten提醒,请楼主看到后对本贴做出回应。

PC/IOS/Android共享的RM RPG:未名大学

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2009-4-8 17:28:57 | 只看该作者
这个用默认的计时器确实不合适,因为这厮是靠刷新帧数算的,窗口失去焦点后就停了
必须要高精度吗?只需要精确到秒的话,启动一个线程就足够了~
(事件脚本中也可以启动)
count = 0
timer = Thread.new {
  while count < 5
    count += 1
    sleep 1
  end
  $my_flag = true
}
这个是 5 秒后把 $my_flag 变为真,并行事件判断就行了


编辑:Thread.kill(timer)多余且有害,去掉了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
3
发表于 2009-4-8 17:52:21 | 只看该作者
以下引用紫苏于2009-4-8 9:28:57的发言:

这个用默认的计时器确实不合适,因为这厮是靠刷新帧数算的,窗口失去焦点后就停了
必须要高精度吗?只需要精确到秒的话,启动一个线程就足够了~
(事件脚本中也可以启动)

count = 0
timer = Thread.new {
while count < 5
   count += 1
   sleep 1
end
$my_flag = true
Thread.kill(timer)
}
这个是 5 秒后把 $my_flag 变为真,并行事件判断就行了

我有一个疑问,用计时器的话需要实现对BGM的持续时间有一个确定值,这个具体怎么办?按我的理解,当BGM播放过一遍之后返回一个值,不就可以实现控制了?但是找了半天,没找到BGM的播放控制相关脚本……
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
4
发表于 2009-4-8 19:01:30 | 只看该作者
以下引用tommay于2009-4-8 9:52:21的发言:

我有一个疑问,用计时器的话需要实现对BGM的持续时间有一个确定值,这个具体怎么办?按我的理解,当BGM播放过一遍之后返回一个值,不就可以实现控制了?但是找了半天,没找到BGM的播放控制相关脚本……

如果是 mp3 格式的话,可以直接从文件属性中获取持续时间…… mid 么……因为 RGSS 的 Audio 模块是异步播放的,开始播放后就继续执行程序了,所以不知道什么时候返回,除非能获取音频数据的缓冲区,判断缓冲区指针之后是否没有数据了,就知道播放完毕了~
目前只想到用 API ,新建一个线程,同步播放音频,这样就可以在音频播放完之后执行收尾操作了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
5
发表于 2009-4-8 19:10:10 | 只看该作者
以下引用紫苏于2009-4-8 11:01:30的发言:

如果是 mp3 格式的话,可以直接从文件属性中获取持续时间…… mid 么……因为 RGSS 的 Audio 模块是异步播放的,开始播放后就继续执行程序了,所以不知道什么时候返回,除非能获取音频数据的缓冲区,判断缓冲区指针之后是否没有数据了,就知道播放完毕了~
目前只想到用 API ,新建一个线程,同步播放音频,这样就可以在音频播放完之后执行收尾操作了~

期待紫苏大大能够做一个范例,这个问题我想了很久了,一直不知道该怎么做……
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
83 小时
注册时间
2006-4-4
帖子
1019
6
发表于 2009-4-8 19:17:53 | 只看该作者
用SE或ME来播放BGM不就是一遍了?{/gg}之后不会重复....用计时器等久一点也不会有问题把.............
SE也可以随意停止...{/gg}
要是我我就直接用祯数来等待{/gg}
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-16 13:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表