空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:クリッカブルマップで効果音を鳴らすには  

2013-11-23
2017-06-14
cm0
tb0

テキストリンクタグ[ link ]や、グラフィカルボタンのタグ[ button ]には
効果音を再生するための属性 enterse, clickse が定義されているので

「リンクやボタンにマウスが乗ったら効果音を再生する」

といった動作もカンタンに実装することができます。

しかし、クリッカブルマップを使用する場合はカンタンにいきません。
クリッカブルマップのアクション定義ファイルに使用できるのは

storage, target, onenter, onleave, hint, exp, countpage,cursor

この8つのみ。enterse,clickse なんて便利なモノはありません。
じゃあどうすりゃいいのよってのが今回のお題です。

少し長くなるので、先に答えを書いておきます。

「効果音を再生する関数を作って onenter に放り込む」

これだけです。では、その関数とやらを作っていきますヽ(・∀・ )ノ



1.効果音を再生する関数を作る


KAG3リファレンスの「TJSをもっと使うために」の中に
効果音を再生するための TJS 式が書かれています。


kag.se[ n ].play(%[ storage:'再生する効果音ファイル名', loop:false ]);


・nは効果音を再生するバッファ番号
・ファイル名はシングルクォーテーションで囲む
・効果音をループ再生させるなら[ loop:true ]に変更

で、これを関数にします。


// 効果音を再生する
// 引数 nm には効果音を再生するバッファ番号を入れる
function PlaySe(nm)
 {
  kag.se[ nm ].play(%[storage:'hoge', loop:false]);
 }


function で囲っただけです。
バッファ番号を引数 nm で指定できるようにしていますが
使用するバッファ番号が決まっているなら直接番号を書いちゃってください。


kag.se[ 0 ].play();


と書けば、バッファ番号0で効果音を再生するようになります。

また、効果音のファイル名を個別に指定できるようにしたい場合は


//  効果音を再生する
// 引数 elm には再生したい効果音のファイル名を入れる
function PlaySe( elm )
 {
  kag.se[ 0 ].play(%[storage:elm, loop:false]);
 }


と書いて、引数 elm に好きなファイル名を入れればOKです。
ファイル名は必ずシングルクォーテーションで括りましょう。括らないとエラーが出ます。



2.マップアクション定義ファイルを書く


↓この関数を使います


function PlaySe(nm, elm)
 {
  kag.se[ nm ].play(%[storage:elm, loop:false]);
 }


たとえば、領域1にカーソルが乗ったときに「hoge」という効果音を
バッファ番号0で再生したい場合は、マップアクション定義ファイルに


1:onenter="PlaySe(0, 'hoge')";


と書けばOKです。


1:onenter="kag.se[ 0 ].play(%[storage:'hoge', loop:false])";


と、直接書いても構いませんが、横に長くなるのでオススメしません。



3.クリックしたときに効果音を再生したい


んじゃ、応用編。

領域をクリックしたときに効果音を再生したい場合はどうするか。
これには exp を使用します。マップアクション定義ファイルに


1:exp="PlaySe()";


と書けばOKです。書き方は onenter のときと同じです。

もちろん、別の処理を続けて書くこともできるので
クリックしたときに変数 f.a に1を足したいと思ったら


1:exp="PlaySe(), f.a+=1";


のようにカンマで区切ってやればOKです。



4.前回のネタと混ぜてみる


領域にカーソルが乗ったら、効果音を再生しつつ画像を表示する。
これを実装できるようにしてみます。

まず、画像を表示する関数を適当に作ります。
実行すると、前景レイヤ0のX座標100、Y座標100に「sample」という画像を表示します。

いまさらですがファイルの拡張子は省略できます。
後でファイル形式を変更したときに修正しなくて済むので便利です。


function CutImg()
 {
  with( kag.fore.layers[ 0 ] )
  {
   .setPos( 100, 100 );
   .loadImages(%[ storage:'sample' ]);
   .visible = true;
  }
 }


で、次に効果音を再生する関数を適当に作ります。
「hoge」というファイルをバッファ番号0で再生します。


function PlaySe()
 {
  kag.se[0].play(%[storage:'hoge', loop:false]);
 }


画像表示の関数 CutImg に、効果音再生の関数 PlaySe を足します。


function CutImg()
{
  with( kag.fore.layers[ 0 ] )
  {
   .setPos( 100, 100 );
   .loadImages(%[ storage:'sample' ]);
   .visible = true;
  }
   PlaySe(); // 効果音再生の関数
}


ほい、できた。あとはマップアクション定義ファイルに


1:onenter="CutImg()";


と書けば、領域にカーソルが乗ったときに画像を表示しながら効果音を再生してくれます。

では今回はこれにて (´∀`*)ノシ


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/331-ce82c358
この記事にトラックバックする(FC2ブログユーザー)

Author

Recent

Category

Link

Comment

Mailform

Twitter