SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
enchant.jsでゲーム制作を
   はじめてみよう

       2012.7.21
   第5回 HTML5など勉強会

     Ryota Shiroguchi
私について
● @3panda

● 仕事はHTMLとかCSS触ってます。

● プログラムは 苦手です;

● 「パンダの会」の主催 次回は9/15(土)!!

● パンダが大好きです。
enchant.jsとは
● ゲームエンジン

● HTML5 + JavaScript

● クロスプラットフォーム

● 日本製(株式会社ユビキタスエンターテインメントが公開)
enchant.jsの良いところ
● スタートアップが楽ちん

● サンプルが豊富

● ドキュメントが日本語

● 公式のプラグインも豊富
スタートアップ HTML
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>enchant</title>
    <script type="text/javascript" src="enchant.js"></script>
    <script type="text/javascript" src="game.js"></script>
    <style type="text/css">
       body {
          margin: 0;
       }
    </style>
  </head>
  <body>
  </body>
</html>
スタートアップ HTML
<!DOCTYPE html>
<html>
  <head>                                              enchant.js          を読み込む
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>enchant</title>
    <script type="text/javascript" src="enchant.js"></script>
    <script type="text/javascript" src="game.js"></script>
    <style type="text/css">
       body {
          margin: 0;
       }
    </style>                 実行用jsファイル を読み込む。             ※
  </head>
  <body>                     HTMLに直接記述も可能。
  </body>
</html>                          ※今回はgame.jsとしていますが何でもOK
スタートアップ game.js
enchant();
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く
 }
 game.start();
}
スタートアップ game.js
                   enchantのお約束!
enchant();
                                  JavaScriptのお約束!
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く
 }
 game.start();
}
スタートアップ game.js
                                  ゲーム(オブジェクト)を生成
enchant();
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く                      ゲーム中の処理
 }
 game.start();
}
  ゲームをスタート!
まずはキャラの配置 game.js
var game = new Game(320, 320);
  game.fps = 24;
    game.preload('chara1.gif');
    game.onload = function(){
  //キャラクター
    var bear = new Sprite(32, 32);
    bear.image = game.assets['chara1.gif'];
    //rootSceneに追加
    game.rootScene.addChild(bear);
 }
 game.start();
}
まずはキャラの配置 game.js
                                フレームレートの設定
var game = new Game(320, 320);
    game.fps = 24;                       画像のプリロード
    game.preload('chara1.gif');
    game.onload = function(){            スプライトの生成
  //キャラクター
    var bear = new Sprite(32, 32);
    bear.image = game.assets['chara1.gif'];
    //rootSceneに追加
    game.rootScene.addChild(bear);          画像の指定
 }
 game.start();
                   ※ルートシーンに追加
}
ゲーム的な動きのデモ&解説
● キャラを動かす

● ステージを配置する

● 当たり判定
キャラを動かす

//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
キャラを動かす                 キャラにイベントリスナーを追加



//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
キャラを動かす

//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
                           イベントはフレーム毎
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
ステージを配置する
//MAPを表示させる
var blocks = [
   [ -1, -1,//省略// -1, -1, -1, -1 ],
   ////////////////省略/////////////////////
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);
ステージを配置する                     配列で表示する画像を管
                                   理
//MAPを表示させる
var blocks = [                        タイルの一コマづつ敷き
   [ -1, -1,//省略// -1, -1, -1, -1 ],    詰めるように配置。
   ////////////////省略/////////////////////
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);
ステージを配置する
//MAPを表示させる
var blocks = [
   [ -1, -1,//省略// -1, -1, -1, -1 ],
   ////////////////省略/////////////////////
                                     Map(オブジェクト)を生成
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];                                          画像の指定
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);

                                    配列を呼び出し配置
ステージを配置する

 game.onload = function(){

     //---------------省略-------------------//

     //rootSceneに追加
     game.rootScene.addChild(bear);
     game.rootScene.addChild(map);
 }
                              ※ルートシーンに追加
 game.start();
}                              ※オブジェクトは
                             シーンに追加する事で表示
当たり判定
//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];

//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {
   label.text = '当たった!';
   this.frame = 3;
}
当たり判定                                    キャラを一つ追加


//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];

//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {
   label.text = '当たった!';
   this.frame = 3;
}
当たり判定
//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];

//-------------------省略--------------------//
                                     当たり判定の処理
//星との当たり判定
   if(this.within(star, 15)) {       intersect,またはwithin
   label.text = '当たった!';                 メソッドを利用。
   this.frame = 3;
}
プラグイン
● ui.enchant.js

● nineleap.enchant.js
ui.enchant.js
● ゲームパッド

● アナログパッド

● ボタン
nineleap.enchant.js
● ゲームスタート画面

● ゲームオーバー画面

● ただしあくまで簡易
なんとかゲーム
 を作れました
ぽいもの
その他プラグイン(サンプル紹介)
● tl.enchant.js(アニメーション)

● gl.enchant.js(Web GL)

● widget.enchant.js(インターフェイス)※
 ※現在未発表の為、サンプルはありません
さらに詳しい解説は
● 公式サイトのサンプルコード

● code9leap

● ドットインストール

● enchant.js プログラミング入門の資料

● tl.enchant.jsの解説
まとめ
● やっぱり簡単

● プログラムの勉強にも

● ゲーム開発の需要の予感も
まとめ
● やっぱり簡単

● プログラムの勉強にも

● ゲーム開発の需要の予感も

・・・でも結局のところ言いたい事は
ゲームをつくるのはおもしろいw
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Masataka Motokurumada
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方Masaru Mizuochi
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井Daisuke Imai
 
Processing workshop
Processing workshopProcessing workshop
Processing workshopWataru Kani
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaandroid sola
 
WordPressと外部APIとの連携
WordPressと外部APIとの連携WordPressと外部APIとの連携
WordPressと外部APIとの連携Hidekazu Ishikawa
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0Wataru Kani
 
㉖cocos2dを覚えよう!
㉖cocos2dを覚えよう!㉖cocos2dを覚えよう!
㉖cocos2dを覚えよう!Nishida Kansuke
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話idkqh7 Nishino
 
三角関係になったときの対処法
三角関係になったときの対処法三角関係になったときの対処法
三角関係になったときの対処法Yachiyo Suzuki
 
Acme minechan
Acme minechanAcme minechan
Acme minechantakesako
 
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editorセキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editordo_aki
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!notargs
 
ネコでもわかるインタラクティブサウンド20130706
ネコでもわかるインタラクティブサウンド20130706ネコでもわかるインタラクティブサウンド20130706
ネコでもわかるインタラクティブサウンド20130706Takashi Tanaka
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作るmizdra
 

Was ist angesagt? (19)

Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井
 
Processing workshop
Processing workshopProcessing workshop
Processing workshop
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
 
WordPressと外部APIとの連携
WordPressと外部APIとの連携WordPressと外部APIとの連携
WordPressと外部APIとの連携
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
㉖cocos2dを覚えよう!
㉖cocos2dを覚えよう!㉖cocos2dを覚えよう!
㉖cocos2dを覚えよう!
 
MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
 
三角関係になったときの対処法
三角関係になったときの対処法三角関係になったときの対処法
三角関係になったときの対処法
 
Acme minechan
Acme minechanAcme minechan
Acme minechan
 
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editorセキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
 
ネコでもわかるインタラクティブサウンド20130706
ネコでもわかるインタラクティブサウンド20130706ネコでもわかるインタラクティブサウンド20130706
ネコでもわかるインタラクティブサウンド20130706
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作る
 

Ähnlich wie enchant.jsでゲーム制作をはじめてみよう

-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろうnico0927
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 TutorialRyo Shimizu
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜勝成 鈴江
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Tomoaki Shimizu
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BAtsushi Tadokoro
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話Shogo Sensui
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発studioshin
 
Designing video game hardware in verilog
Designing video game hardware in verilogDesigning video game hardware in verilog
Designing video game hardware in verilogAtsuki Takahashi
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
何が変わった JavaFX 2.0
何が変わった JavaFX 2.0何が変わった JavaFX 2.0
何が変わった JavaFX 2.0Yuichi Sakuraba
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルTakashi Yoshinaga
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"deepblue will
 
PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?reona396
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るMasahiro Wakame
 

Ähnlich wie enchant.jsでゲーム制作をはじめてみよう (20)

-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorial
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発
 
Designing video game hardware in verilog
Designing video game hardware in verilogDesigning video game hardware in verilog
Designing video game hardware in verilog
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
何が変わった JavaFX 2.0
何が変わった JavaFX 2.0何が変わった JavaFX 2.0
何が変わった JavaFX 2.0
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"
 
PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
 
JavaFX 2.0 への誘い
JavaFX 2.0 への誘いJavaFX 2.0 への誘い
JavaFX 2.0 への誘い
 

enchant.jsでゲーム制作をはじめてみよう