1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
\r
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\r
5 Copyright (c) 2010 The Native Client Authors. All rights reserved.
\r
6 Use of this source code is governed by a BSD-style license that can be
\r
7 found in the LICENSE file.
\r
10 <title>XM File Player</title>
\r
11 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
\r
12 <meta name="description" content="XM File Player" />
\r
13 <meta name="keywords" content="Native Client,jQuery,HTML5,MOD,XM" />
\r
14 <meta http-equiv="Content-Style-Type" content="text/css" />
\r
15 <meta http-equiv="Content-Script-Type" content="text/javascript" />
\r
16 <link type="text/css" href="css/smoothness/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
\r
17 <!-- <script type="text/javascript" src="jquery-1.6.4.js"></script>
\r
18 <script type="text/javascript" src="jquery-ui-1.8.16.custom.js"></script>-->
\r
19 <script type="text/javascript" src="jquery-1.6.4.min.js"></script>
\r
20 <script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
\r
21 <script type="text/javascript" src="http://nacl-gallery.appspot.com/check_browser.js"></script>
\r
22 <!-- <script type="text/javascript" src="jquery-1.5.1.min.js"></script> -->
\r
23 <script type="text/javascript">
\r
24 // var _gaq = _gaq || [];
\r
25 // _gaq.push(['_setAccount', 'UA-15457703-9']);
\r
26 // _gaq.push(['_trackPageview']);
\r
29 // var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
\r
30 // ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
\r
31 // var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
\r
34 var xmPlayer = null; // Global application object.
\r
36 var status_open = 0;
\r
37 var status_loading = 1;
\r
38 var status_complete = 2;
\r
39 var total_bytes = 0;
\r
40 var handleMessage_ = null;
\r
41 var progress_id = null;
\r
44 function reportLog(log) {
\r
45 $("#GeneralOutput").append(log + "<br/>");
\r
48 function handleMessage(message_event) {
\r
49 reportLog("handleMessage::" + message_event);
\r
50 if (message_event.data.match(/^GetURLHandler/)) {
\r
51 handleMessage_(message_event);
\r
53 reportLog(message_event.data);
\r
57 $().ready(function () {
\r
59 // Naclサポートの切り分けはGoogleのサンプルページのコードをそのまま利用してます。
\r
60 var isValidBrowser = false;
\r
61 var browserSupportStatus = 0;
\r
62 var checker = new browser_version.BrowserChecker(10, navigator["appVersion"], navigator["plugins"]);
\r
63 checker.checkBrowser();
\r
64 isValidBrowser = checker.getIsValidBrowser();
\r
65 browserSupportStatus = checker.getBrowserSupportStatus();
\r
66 switch (browserSupportStatus) {
\r
67 case browser_version.BrowserChecker.StatusValues.NACL_ENABLED:
\r
68 $('#supportStatus').html('<div class="INFO">INFO: Native Clientが有効化されたGoogle Chrome version ' + checker.chromeVersion_ + ' をご使用のため、このアプリケーションの実行が可能です。</div>');
\r
70 case browser_version.BrowserChecker.StatusValues.NON_CHROME_BROWSER:
\r
71 $('#supportStatus').html('<div class="WARNING">WARNING: お使いのブラウザはNative Clientをサポートしていません。</div>');
\r
73 case browser_version.BrowserChecker.StatusValues.CHROME_VERSION_TOO_OLD:
\r
74 $('#supportStatus').html('<div class="WARNING">WARNING: Native Client はGoogle Chrome version ' + checker.chromeVersion_ +
\r
75 'で実行することはできません。Google Chrome version ' + checker.requiredChromeVersion_ + ' 以上のブラウザをご利用ください。</div>');
\r
77 case browser_version.BrowserChecker.StatusValues.NACL_NOT_ENABLED:
\r
78 $('#supportStatus').html('<div class="WARNING">WARNING: Native Client が有効化されていません。Native Clientを有効化するためには' +
\r
79 'アドレスバーで<kbd>about:flags</kbd>を入力し、"ネイティブクライアント"の"有効にする"をクリックしてください。' +
\r
80 '有効化したらブラウザを再起動してください。</div>');
\r
83 $('#supportStatus').html('<div class="WARNING">WARNING: Native Clientをサポートしているかどうかの検出ができませんでした。</div>');
\r
86 // $("#xmfile-url").val("SHADOW.XM");
\r
87 $("button").button().css("font-size", "7pt").css("border", "4px").css("padding", "2px");
\r
88 $("button").attr("disabled", "true");
\r
90 $("#listener").ready(function () {
\r
91 reportLog("moduleDidLoad");
\r
92 xmPlayer = $("#xmPlayer")[0];
\r
93 xmPlayer.addEventListener("message", handleMessage,false);
\r
94 $("#load-file").attr("disabled", false);
\r
95 $("#load-file").click(
\r
98 reportLog("LoadFile");
\r
99 var logElt = document.getElementById('GeneralOutput');
\r
101 handleMessage_ = function (message) {
\r
102 reportLog("### File Loading..." & message.data);
\r
104 var status_info = message.data.split(":");
\r
105 var status = parseInt(status_info[1]);
\r
106 var success = parseInt(status_info[2]) != 0;
\r
108 var logElt = document.getElementById('GeneralOutput');
\r
109 logElt.innerHTML += 'File URL:' + $("#xmfile-url").val() + '<br/>';
\r
110 logElt.innerHTML += 'RESULT:\n' + status_info[3] + '<br/>';
\r
113 if (status == status_open && success) {
\r
115 total_bytes = parseInt(status_info[3]);
\r
116 logElt.innerHTML += "TotalBytes:" + total_bytes + '<br/>';
\r
117 $("#status-dialog")
\r
118 .html("<p>ファイルを読み込んでいます。</p><div id='progress'></div>")
\r
119 .attr("title", "ファイルロード")
\r
120 .dialog({ buttons: null });
\r
122 $("#progress").progressbar({ value: 0 });
\r
125 if (status == status_loading && success) {
\r
126 $("GeneralOutput").append(parseInt(status_info[3]) + "<br/>");
\r
127 $("#progress").progressbar("value", parseInt(status_info[3]) * 100 / total_bytes);
\r
130 if (status == status_complete && success) {
\r
131 if (progress_id != null)
\r
132 clearInterval(progress_id);
\r
133 $("#Play").click(function () {
\r
134 //xmPlayer.playSound();
\r
135 xmPlayer.postMessage("playSound");
\r
136 }).attr("disabled", false);
\r
138 $("#Stop").click(function () {
\r
139 xmPlayer.postMessage("stopSound");
\r
140 //xmPlayer.stopSound();
\r
141 }).attr("disabled", false);
\r
143 $("#status-dialog")
\r
144 .html("ファイルの読み込みが完了しました。")
\r
145 .dialog({ buttons: [
\r
147 text: "Ok", click: function () { $(this).dialog("close"); }
\r
150 } else if (!success) {
\r
151 logElt.innerHTML += "Load Failure:" + status_info[3] + "<br/>";
\r
152 $("#status-dialog").html("ファイルの読み込みが失敗しました。" + result)
\r
153 .attr("title", "ファイルロード")
\r
154 .dialog("options", "buttons", [
\r
156 text: "Ok", click: function () { $(this).dialog("close"); }
\r
162 xmPlayer.postMessage('loadXmFile:' + $("#xmfile-url").val());
\r
165 var logElt = document.getElementById('GeneralOutput');
\r
166 logElt.innerHTML += "exception: " + e + "<br/>";
\r
178 <style type="text/css">
\r
179 body {font-family:'メイリオ';font-size:10px;width:500px;}
\r
180 #GeneralOutput {font-size:6pt;border:1px solid gray;width:100%;height:100px;overflow:scroll;}
\r
181 #xmfile-url {width:400px;}
\r
182 #player-tab {height:300px;}
\r
183 .INFO { border:1px solid blue;}
\r
184 .WARNING {border:1px solid red;color:Red;}
\r
190 <div id="supportStatus"></div>
\r
194 <li><a href="#player-tab">Player</a></li>
\r
195 <li><a href="#info-tab">XM File Info.</a></li>
\r
196 <li><a href="#pattern-tab">Pattern</a></li>
\r
197 <li><a href="#instrument-tab">Instrument</a></li>
\r
199 <div id="player-tab" >
\r
200 <div>再生したいファイルを選択してLoad Fileボタンをクリック、ファイルをロードしてください。その後Playを押して再生します。</div>
\r
201 <div>url:<select id="xmfile-url">
\r
202 <option value="SHOOTING.XM" selected>SHOOTING.XM</option>
\r
203 <option value="SHADOW.XM">SHADOW.XM</option>
\r
204 <option value="DEADLOCK.XM">DEADLOCK.XM</option>
\r
205 <option value="sweetdre.xm">sweetdre.xm</option>
\r
206 <option value="aws_aq16.xm">aws_aq16.xm</option>
\r
208 <!-- <input id="xmfile-url" type="text" maxlength="2048" /></div> -->
\r
210 <button id="load-file">Load File</button>
\r
211 <button id="Play">Play</button>
\r
212 <button id="Stop">Stop</button>
\r
215 <div id="info-tab"></div>
\r
216 <div id="pattern-tab"></div>
\r
217 <div id="instrument-tab"></div>
\r
219 <!-- Load the published .nexe. This includes the 'nacl' attribute which
\r
220 shows how to load multi-architecture modules. Each entry in the "nexes"
\r
221 object in the .nmf manifest file is a key-value pair: the key is the runtime
\r
222 ('x86-32', 'x86-64', etc.); the value is a URL for the desired NaCl module.
\r
223 To load the debug versions of your .nexes, set the 'nacl' attribute to the
\r
224 _dbg.nmf version of the manifest file.
\r
228 <div id="GeneralOutput"></div>
\r
230 <div id="listener">
\r
231 <embed name="nacl_module"
\r
234 src="xm_player.nmf"
\r
235 type="application/x-nacl"
\r
238 <div id="status-dialog" title=""></div>
\r