試験だー、逃げろー。
紅茶ばかり飲むせいで未だにインスタントコーヒーの粉末の適量がどれくらいなのか分からない。
ゲーム作る上で音って大事だよね、ということで考えた結果をぐだぐだと。
JavaScriptにはデフォルトで音声を扱えるような機構がない。じゃあどうしようか、という話。
※サンプルコードのHTMLは最低限だけしか書いてないのでそのつもりで。
HTMLの要素でbgsoundというのがあるので、これを弄って音を制御するという方法。
<script>
var sound = function(src){
  var bgsound = document.createElement("bgsound");
  bgsound.setAttribute("src", src);
  return{
    play:function(){
      document.body.appendChild(bgsound);
    },
    stop:function(){
      document.body.removeChild(bgsound);
    }
  }
}
var s = sound("sound.wav");
</script>
<body><input type="button" value="play" onclick="s.play();return false;">
<input type="button" value="stop" onclick="s.stop();return false;"></body>
          HTMLの要素でembedというのがあるので、これを弄って音を制御するという方法。bgsound要素の場合と似ているが設定する属性が違ったりする。
<script>
var sound = function(src){
  var embed = document.createElement("embed");
  embed.setAttribute("src", src);
  embed.setAttribute("hidden", true);
  embed.setAttribute("autostart", true);
  return{
    play:function(){
      document.body.appendChild(embed);
    },
    stop:function(){
      document.body.removeChild(embed);
    }
  }
}
var s = sound("sound.wav");
</script>
<body><input type="button" value="play" onclick="s.play();return false;">
<input type="button" value="stop" onclick="s.stop();return false;"></body>
          HTMLの次期仕様HTML5ではaudio要素という要素が新たに加わる。audioオブジェクトを弄って音声の再生ができる。
<script>
var s = new Audio("sound.wav");
</script>
<body><input type="button" value="play" onclick="s.play();return false;">
<input type="button" value="stop" onclick="s.stop();return false;"></body>
          JavaScriptからFlash(ActionScript)の関数を利用できるので、あらかじめ音声制御用のFlashを作っておいてJavaScriptで操作するといったことが可能である。実際のコードとかはJavaScriptでMP3を再生するライブラリの作り方:CodeZineを参照されたし。
現時点で一番妥当なのはFlash経由で再生する方法かな。こういうところで他力本願になってしまうのがJavaScriptの悲しい運命か・・・。
PC部で群れて来た。カオスここに極まる。
          
割と弾幕ゲーっぽい感じになってきた・・・と思う。
IE非推奨。FPS一桁ほぼ確実。canvas要素にデフォルトで対応していない都合で描画に時間を食うのが大きいと思う。
推奨ブラウザはGoogle Chrome、Safari。FirefoxとOperaはやや重い。描画エンジンの違いが大きいのだろうか。
町田行って散髪したり例大祭のカタログ買ったり東方怪綺談のサントラ買ったり。
JS東方。弾の管理を配列から連結リストに変えたらバグったorz
処理の軽減の点でリストの導入は譲れないところなのだが、バグの原因がどの辺なのか見当がつかない・・・。
東方紅魔郷購入。あふれ出るカリスマとやらに会いたくなったので。
一ヶ月ほど放置していたJS東方の開発を再開。いつエターなるかもわからんが。
試験もとりあえず無難(?)に終了し、春休みに突入して正午起床、日がなニコ動といった具合に堕落の限りを尽くした生活を送っている次第です。家から一歩も出ないと日記のネタに困るよね。
脈絡もなく落書き。
          
顔がうまく描けなかったんで視覚素子をハッキング攻殻ネタでごまかす。正直ごまかせてない。
今日が私の誕生日だということにメールで言われて気づいた。
ということで19歳になった。とうとう東方夢時空の岡崎夢美教授よりも年上になってしまったのか、とニッチ志向な感慨にふける。
誕生日プレゼントは転類の承認が欲しいです、教授。
今日は英語の試験。うちのクラスは当たりだったらしく、無難に終了。
明日は物理(電磁気学)。うぼぁ。
ネタができたので更新。
地霊殿Extra出現。わぁい!
買ってから1ヶ月以上立ったのか・・・。
ひさびさの更新。正直ネタがない。
試験残り二科目。電磁気学つらい・・・。
正直転類できるかどうか怪しい。うぼぁ。
ネタが無ければ作ればいいじゃないということでJavaScriptでゴリッと。
document.body
  .appendChild(document.createElement("table"))
    .appendChild(document.createElement("tbody"))
      .appendChild(document.createElement("tr"))
        .appendChild(document.createElement("td"))
          .appendChild(document.createTextNode("foolish"))
          .parentNode
        .parentNode
        .appendChild(document.createElement("td"))
          .appendChild(document.createTextNode("table"))
          .parentNode
        .parentNode
      .parentNode
      .appendChild(document.createElement("tr"))
        .appendChild(document.createElement("td"))
          .appendChild(document.createTextNode("creation"))
          .parentNode
        .parentNode
        .appendChild(document.createElement("td"))
          .appendChild(document.createTextNode("by DOM"));
        汚いけどキレイ、みたいな。チェインおいしいです。
XSLTでBrainf*ckを実装できないかと考えてみたが、挫折。XSLTの変数って初期化した後変更できないんだね。それって定数では・・・。
じゃぁ変数を使わない言語だったら実装できるんじゃね?ということで関数型言語の実装を考え中。Unlamdaとか純Lispとかならできるんじゃないかと。ただ、まず関数型言語の文法を理解するのがきつい・・・。
ところで、XSLT自体が関数型言語っぽいという見方もあるらしい。へぇ。さらに言うとJavaScriptも関数型言語寄りな見方があるとか。JavaScriptはCの皮を被ったLispなんだそうで。
試験終わったらLispをもう一回勉強してみるか。・・・どこまでモチベが持つかね。
お絵描き。試験期間中ですよー。
          
フランのアレってファンネルだよね。
なんだかんだで6〜7時間かかった。絵師としての適性はなさそうだ。足とか脚がうまく描けん。
鬱ですよー。
と、言わせたいがためにお絵描き。
          
描いたあとになって羽の仕様が違うことを知った。だらしねぇな。ついでに言うと髪のリボン書き忘れた。仕方ないね。
かれこれ二週間近く日記放置。別に特別忙しかった訳でもなくただネタがなかっただけです。アサヒるという手もあったがw
        
今週から本格的に期末試験期間に入るんで多分更新頻度は改善しないです。俺、この試験終わったら転類するんだ・・・。