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

Project1

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

要不随便放点老东西吧,关于SE和BGM

[复制链接]
梦石
0
星屑
65
在线时间
385 小时
注册时间
2007-7-27
帖子
4106

开拓者

跳转到指定楼层
1
发表于 2010-6-20 00:30:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
bgm和se都是WaveSoundBuffer的子类,不过bgm有两个buffer,还继承了另外一个类,所以这两个类最种有些方法不一样。
之前看水螅说过,因为bgm要设置是播放midi还是wave,不如bgm专门播放midi,wave类型的bgm就交给se来放,反正都可以设置 loop=true。不过最后实验下来,发现se和bgm还是有点差别,最大的差别就是se不能暂停……
所以要想游戏又播放midi又播放wave(包括mp3、ogg之类)的bgm就要做些改动。
实验表明,在config.tjs中设置的type,在游戏进行中是可以改的。比如这样:
  1. [eval exp="kag.bgm.type='Wave'"]
复制代码
这样之后找文件就能找到wave类型的文件了。不过还是不能用,因为buffer类型还是midi的,所以还要重建buffer,像这样:
  1. [eval exp="kag.bgm.createBuffers()"]
复制代码
这样之后就能正常播放了,实验通过。虽然wave改midi的时候卡了一下……

坚持用se来播放wave类的话,稍微改动一下也能做到。首先是bgm和se的父类都有一个paused的属性,赋值true就能暂停,赋值false就正常播放。实际上bgm的暂停就是改动这个属性做到的。
接下来就好办了,要么去mainwindow.tjs里面改kag指令的handler那个字典,要么就加个宏什么的。比如:
  1. [macro name=pausese]
  2. [eval exp="kag.se[+mp.buf].paused = true"]
  3. [endmacro]

  4. [macro name=resumese]
  5. [eval exp="kag.se[+mp.buf].paused = false"]
  6. [endmacro]
复制代码
调用宏的话就会传一个字典mp做参数,所以用这个宏的时候加上buf=xx的参数,就能让第xx号的buffer暂停或者继续。

这样还有一个问题,就是se的暂停的状态存盘的时候不会存下来。一路顺着tjs看过去,会发现问题在SE类里面。store这个是把该buffer的状态存入字典中,restore是把字典里面存的状态重新设置buffer。知道这个之后就简单了,直接加上红色的语句就可以。
  1. function store()
  2. {
  3. // 辞書配列に現在の状態を記録する
  4. var dic = %[];
  5. dic.currentStorage = currentStorage;
  6. dic.paused = this.paused;
  7. dic.volume = currentVolume;
  8. dic.pan = pan;
  9. return dic;
  10. }

  11. function restore(dic)
  12. {
  13. // 辞書配列から状態を読み出し、復帰する
  14. currentVolume = dic.volume;Debug.message("Volume");
  15. pan = dic.pan;Debug.message("Pan");
  16. if(dic.currentStorage != "")
  17. { play(%[storage : dic.currentStorage, loop : true]);this.paused = dic.paused;}
  18. else
  19. stop();
  20. }
复制代码
好久没用这东西,我都忘了if后面只能接单语句或代码块了……总之大括号必须添上。
这样把se当作bgm用应该就没什么问题了、大概……

哦对了,不管是bgm还是se,只有loop=true的时候,才会把目前播放的文件存入字典中,也就是说不循环的se或者bgm是不会存入存档里面的。

其实还有一个问题,就是存档读档的时候buffer似乎没有匹配,不过改改存读档部分的函数就好了
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-28 17:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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