【講座?】CoRを触ってみる05~RmakeSoundクラス編~【自分用メモ?】
投稿者: 光楼(114) 投稿日:2017/02/11 14:43
【講座?】CoRを触ってみる04~シーン編~【自分用メモ?】←前回
いつ三目並べ作るんだよ!って言われそうですが安心してください、これからです。
#このブログの情報は2017年2月11日現在のものです。今後変更になる可能性があります。
今回はいよいよ素材を扱っていきます。
RmakeSoundクラスは音楽と効果音を扱うクラスだそうです。
クラスとは?
『何かを実行する設計図』とか『データや処理をひとまとまりにまとめたもの』とか言われてます。
まぁ、設計図ですよ設計図。
音楽
RmakeでいうとBGM。無限再生されます。
準備
とりあえずなんでもいいのでCOREシーンに音楽を追加してください。
手順は導入編で説明した通り、音楽管理から追加するんです。
登録したら処理を書き込んでいきます。
下記の状態にしてください。
変数定義
ここからが本番!
まず使用する変数を定義します。
sceneとpreloadの間に
と書いて下さい。
と書いたと思います。
これと同じものと考えていいと思います。
音楽を表わすIDを格納する変数で、その音楽に対して操作をするときに使うと覚えておけば良いでしょう。
あっ変数名は自由ですよ。分かりやすい名前にしてください。もちろん変数に使える文字で。
ただ、nullはCoRでは使えない?みたいなので気にする必要は無いかと。
読込み
ついにpreloadに書込みます。
preload内に以下のように書きます。
何をしているかというと、
IDが317557の音楽を読込み、メインBGMという名前を付けているんです。
名前は自由、音楽IDはさっき追加したものです。
再生
create内に書きます。
まずはさっき読込んだ音楽を使える状態にしましょう。
以下のように書いて下さい。
これで使えるようになりました。
早速再生しましょう!
これで再生できると思います。
全部まとめると下記のようになります。
その他
もちろん再生があるので停止もあります。
基本的には
の形になります。
上記の例でいえばmain_musicが操作対象、playが操作内容ですね。
このstopとかが設計図で、対象へ渡すことによって変化させているって解釈でいいのかな?
効果音
書き方は音楽の時とほぼ変わりません。
なので説明省きます。
全部書くとこうなります。
あとがき
最初に変数を定義したけれど、実は無くても動作する。
では何故定義するのだろうか。
サンプルを見るとカウントしたりする変数は定義されていない。
素材のための変数は定義されている。
デフォルト値の設定だろうか……。
とりあえず、定義しておいた方が良いでしょう。
見やすいってのもあるだろうし。
#2月18日追記
あの場所で定義することにより、シーン全体でその変数を使えるようにしているそうです。
あの場所で定義しないとcreate内でしか使えなくなります。
次回→【講座?】CoRを触ってみる06~スプライト編~【自分用メモ?】
ツイート
いつ三目並べ作るんだよ!って言われそうですが安心してください、これからです。
#このブログの情報は2017年2月11日現在のものです。今後変更になる可能性があります。
今回はいよいよ素材を扱っていきます。
RmakeSoundクラスは音楽と効果音を扱うクラスだそうです。
クラスとは?
『何かを実行する設計図』とか『データや処理をひとまとまりにまとめたもの』とか言われてます。
まぁ、設計図ですよ設計図。
音楽
RmakeでいうとBGM。無限再生されます。
準備
とりあえずなんでもいいのでCOREシーンに音楽を追加してください。
手順は導入編で説明した通り、音楽管理から追加するんです。
出来たかな? |
登録したら処理を書き込んでいきます。
下記の状態にしてください。
scene 'start' do #シーンstart preload do #素材読込み end create do #シーン初期化 end update do #メインループ end render do #描画 end end start_scene "start" |
変数定義
ここからが本番!
まず使用する変数を定義します。
sceneとpreloadの間に
main_music = nil
と書いて下さい。
- この変数は何か?
spriteHandle = createSprite(127)
と書いたと思います。
これと同じものと考えていいと思います。
音楽を表わすIDを格納する変数で、その音楽に対して操作をするときに使うと覚えておけば良いでしょう。
あっ変数名は自由ですよ。分かりやすい名前にしてください。もちろん変数に使える文字で。
- nilって?
ただ、nullはCoRでは使えない?みたいなので気にする必要は無いかと。
読込み
ついにpreloadに書込みます。
preload内に以下のように書きます。
music '適当な名前', id: 音楽ID |
何をしているかというと、
IDが317557の音楽を読込み、メインBGMという名前を付けているんです。
名前は自由、音楽IDはさっき追加したものです。
再生
create内に書きます。
まずはさっき読込んだ音楽を使える状態にしましょう。
以下のように書いて下さい。
最初に定義した変数 = add_music(さっき付けた名前) |
これで使えるようになりました。
早速再生しましょう!
最初に定義した変数.play |
これで再生できると思います。
全部まとめると下記のようになります。
scene 'start' do #シーンstart #変数定義 main_music = nil preload do #素材読込み music 'メインBGM', id: 317557 end create do #シーン初期化 #音楽作成&再生 main_music = add_music('メインBGM') main_music.play end update do #メインループ end render do #描画 end end start_scene "start" |
その他
もちろん再生があるので停止もあります。
基本的には
操作対象.操作内容
の形になります。
上記の例でいえばmain_musicが操作対象、playが操作内容ですね。
書き方 | 実行される処理 |
---|---|
対象.stop | 音楽の停止 |
対象.pause | 音楽の一時停止 |
対象.resume | 音楽の再開 |
効果音
書き方は音楽の時とほぼ変わりません。
なので説明省きます。
全部書くとこうなります。
scene 'start' do #シーンstart #変数定義 main_music = nil determining_sound = nil preload do #素材読込み music 'メインBGM', id: 317557 sound '決定音', id: 302148 end create do #シーン初期化 #音楽作成&再生 main_music = add_music('メインBGM') main_music.play #効果音作成&再生 determining_sound = add_sound('決定音') #determining_sound.play end update do #メインループ end render do #描画 end end start_scene "start"
あとがき
最初に変数を定義したけれど、実は無くても動作する。
では何故定義するのだろうか。
サンプルを見るとカウントしたりする変数は定義されていない。
素材のための変数は定義されている。
デフォルト値の設定だろうか……。
とりあえず、定義しておいた方が良いでしょう。
見やすいってのもあるだろうし。
#2月18日追記
あの場所で定義することにより、シーン全体でその変数を使えるようにしているそうです。
あの場所で定義しないとcreate内でしか使えなくなります。
次回→【講座?】CoRを触ってみる06~スプライト編~【自分用メモ?】
コメントする
コメントするには、ログインする必要があります。
コメント一覧
変数定義について補足です。
scene do - endの位置に変数定義がmain_music変数をupdateブロックで呼び出すことができなくなります。
scene do - endの位置に変数定義を書くことによって、createブロックでもupdateブロックでも変数が見えるようにすることができます。言い換えると、updateブロックで呼び出さないなら必要ないということになりますね。
以下、細かい話です(^^;
興味のある方だけどうぞ。。。
変数にはスコープの中でしか見えないという決まりがあります。
スコープというのは、変数の有効範囲という意味です。
CoR(mruby)では、変数はdo - endやdef - endの中がスコープということになります。(つまり、do - endの外側からは使えません。)
思わぬバグを回避するためにも、変数はできるだけ狭いスコープで使うほうが良いですが、必要に応じて、広いスコープをもたせることによって、いろいろなところで呼び出せて便利に使うこともできます。
scene do - endの位置に変数定義がmain_music変数をupdateブロックで呼び出すことができなくなります。
# 変数定義がない場合 scene 'start' do preload do music 'メインBGM', id: 317557 end create do main_music = add_music('メインBGM') end update do # ここでエラーになる # createブロックのmain_music変数はupdateブロックからは見えない main_music.play end end
scene do - endの位置に変数定義を書くことによって、createブロックでもupdateブロックでも変数が見えるようにすることができます。言い換えると、updateブロックで呼び出さないなら必要ないということになりますね。
以下、細かい話です(^^;
興味のある方だけどうぞ。。。
変数にはスコープの中でしか見えないという決まりがあります。
スコープというのは、変数の有効範囲という意味です。
CoR(mruby)では、変数はdo - endやdef - endの中がスコープということになります。(つまり、do - endの外側からは使えません。)
思わぬバグを回避するためにも、変数はできるだけ狭いスコープで使うほうが良いですが、必要に応じて、広いスコープをもたせることによって、いろいろなところで呼び出せて便利に使うこともできます。
やったー(^ω^)