Java版での記述方法とほぼ同じですが、Java版とJavascript版ではメソッド、一部記述方法に多少の差などがあるので注意が必要です。
基本的なJSSの使い方等はRyo氏のMasaoJSS使用方法まとめをご覧ください。
等ページではCanvas版で拡張するにあたりまず何を書けばいいかわからないという方向けに雛形的なものを公開する程度であることをご理解いただきたい。
Canvas版からの記述方法で使用します。
まず下記は<script>タグでのparamデータです。
<script type="text/javascript"> new CanvasMasao.Game({ "map0-0" : "............................................................", "map0-1" : "............................................................", パラメータ群..... }); </script>
Javascript拡張にはいくつかの書き方がありますが、ここではクロージャを使用した書き方でご紹介します。
上記に下記の青部分を追加してみましょう。
<script type="text/javascript"> new CanvasMasao.Game({ "map0-0" : "............................................................", "map0-1" : "............................................................", パラメータ群..... },null,{userJSCallback: (function(){ // グローバル変数 var Applet1 = 0; // JavaApplet var init_f = false; // JavaApplet 起動時の初期化をしたかどうかのフラグ return function(Offscreen_g, mode, view_x, view_y, ap){ // JavaApplet 起動時の初期化 if(init_f == false) { init_f = true; // JavaApplet 起動時の初期化 userInitJS(ap); } if(mode == 1) { // タイトル // JavaScript タイトル画面表示中を呼び出す userTitleJS(Offscreen_g); } else if(mode >= 100 && mode < 200) { // ゲーム中 if(Applet1.getJSMes() >= 1) { // ゲーム開始 // JavaApplet からのメッセージをクリアー Applet1.setJSMes(0); // JavaScript ゲーム開始 userGameStartJS(); } else { // JavaScript ゲーム中 userGameJS(Offscreen_g,view_x,view_y); } }else if(mode == 200) { // JavaScript ゲームオーバー userGameoverJS(Offscreen_g); }else if(mode == 300) { // JavaScript エンディング userEndingJS(Offscreen_g); } } // JavaApplet 起動時に JavaScript から1回だけ呼び出される function userInitJS(ap) { // JavaApplet を取得 Applet1 = ap; } // タイトル画面表示中に JavaScript から呼び出される function userTitleJS(Offscreen_g) { } // ゲーム開始時に JavaScript から1回だけ呼び出される function userGameStartJS() { } // ゲーム中 描画直前に JavaScript から呼び出される function userGameJS(Offscreen_g,view_x,view_y) { } // ゲームオーバー 描画直前に JavaScript から呼び出される function userGameoverJS(Offscreen_g) { } // エンディング 描画直前に JavaScript から呼び出される function userEndingJS(Offscreen_g) { } } )() }); </script>
青部分が、Java版当時のサンプルのように見やすくした形になります。
用途に合わせてご使用ください。
Java版のappletタグからreplaceを使用した正男の場合
まず下記は<applet>タグの部分です。
<applet code="MasaoJSS.class" width="512" height="320" archive="mc_c.jar" id="applet1_id" mayscript>
id="applet1_id"がない場合はタグ内にいれてください。(ここではapplet1_idとして説明します。)
次に<head>〜</head>内での記述です。わかりやすいようCanvasMasao.jsを呼び出してからその下に書くことをおすすめします。
<script type="text/javascript" src="../Outputs/CanvasMasao.js"></script> <script type="text/javascript"> JSMasao.replace("applet1_id", { userJSCallback: userJS }); // グローバル変数 var Applet1 = 0; // JavaApplet var init_f = false; // JavaApplet 起動時の初期化をしたかどうかのフラグ // JavaApplet から全てのモードで 描画直前に呼び出される function userJS(Offscreen_g,mode,view_x,view_y,ap) { // JavaApplet 起動時の初期化 if(init_f == false) { init_f = true; // JavaApplet 起動時の初期化 userInitJS(ap); } if(mode == 1) { // タイトル // JavaScript タイトル画面表示中を呼び出す userTitleJS(Offscreen_g); } else if(mode >= 100 && mode < 200) { // ゲーム中 if(Applet1.getJSMes() >= 1) { // ゲーム開始 // JavaApplet からのメッセージをクリアー Applet1.setJSMes(0); // JavaScript ゲーム開始 userGameStartJS(); } else { // JavaScript ゲーム中 userGameJS(Offscreen_g,view_x,view_y); } }else if(mode == 200) { // JavaScript ゲームオーバー userGameoverJS(Offscreen_g); }else if(mode == 300) { // JavaScript エンディング userEndingJS(Offscreen_g); } } // JavaApplet 起動時に JavaScript から1回だけ呼び出される function userInitJS(ap) { // JavaApplet を取得 Applet1 = ap; } // タイトル画面表示中に JavaScript から呼び出される function userTitleJS(Offscreen_g) { } // ゲーム開始時に JavaScript から1回だけ呼び出される function userGameStartJS() { } // ゲーム中 描画直前に JavaScript から呼び出される function userGameJS(Offscreen_g,view_x,view_y) { } // ゲームオーバー 描画直前に JavaScript から呼び出される function userGameoverJS(Offscreen_g) { } // エンディング 描画直前に JavaScript から呼び出される function userEndingJS(Offscreen_g) { } </script>
こちらもほぼ同じとなっております。
Java版まではアプレットの取得に
Applet1 = document.getElementById("applet1_id");を使用していましたが、Canvas版ではできないようです。
Applet1 = ap;
Java版とCanvas版,相応に対応するメソッドで細かな違いがあったのでメモしておきます。
微妙な違いのため、移植等ではご注意ください。
Canvas | Java | メソッド内容 |
---|---|---|
getHighscore() | getHighScore() | ハイスコアを取得するメソッドです。 |
setMapchip() | setMapChip() | パターン画像から指定した標準レイヤーの座標にマップチップを配置する。 |
getMapchip() | getMapChip() | 指定した標準レイヤーの座標にあるもののコードを取得する。 |
setMapchip2() | setMapChip2() | レイヤー画像から指定した背景レイヤーの座標にマップチップを配置する。 |
getMapchip2() | getMapChip2() | 指定した背景レイヤーの座標にあるもののコードを取得する。 |
間違いやご指摘等ありましたらTex(現「赤いシールド」)までご連絡ください。
スーパー正男MY+トップに戻る