BGMを鳴らす
無音の世界で寂しかったので今回はBGMを鳴らしてみます。現在の仕様ではBGMイベントを作り、マップをロードするときにBGMを鳴らすようにしています。音楽の再生の方法はBGMと効果音の再生(2008/5/11)で解説してるので参照してください。BGMはTAM Music FactoryさんからMP3をお借りしてます。ここの曲大好きです。
BGMイベント
まずフィールドかお城のイベントファイルを見てください。下のようなBGMイベントが追加されています。
BGM,field BGM,castle
fieldやcastleはMP3ファイルのファイル名です。この場合、フィールドマップではfield.mp3、お城のマップではcastle.mp3を再生することを意味しています。BGMはすべてbgmフォルダに入っています。このイベントファイルをロードするのはMapのload_event()でしたね。
def load_event(self): """ファイルからイベントをロード""" file = os.path.join("data", self.name + ".evt") # テキスト形式のイベントを読み込む fp = codecs.open(file, "r", "utf-8") for line in fp: line = line.rstrip() # 改行除去 if line.startswith("#"): continue # コメント行は無視 data = line.split(",") event_type = data[0] if event_type == "BGM": # BGMイベント self.play_bgm(data) elif event_type == "CHARA": # キャラクターイベント self.create_chara(data) elif event_type == "MOVE": # 移動イベント self.create_move(data) fp.close() def play_bgm(self, data): """BGMを鳴らす""" bgm_file = "%s.mp3" % data[1] bgm_file = os.path.join("bgm", bgm_file) pygame.mixer.music.load(bgm_file) pygame.mixer.music.play(-1)
BGMイベントのときplay_bgm()を呼び出しています。play_bgm()ではそのまま再生するだけです。再生の方法はBGMと効果音の再生(2008/5/11)を見てください。まあ2行で音が鳴るので簡単ですね。
BGMはマップをロードするときにメモリに読み込む点に注意してください。あらかじめロードしておかなくても速度的には問題なさそうです。