m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

cordova+enchantjsでサンプルアプリ

enchatjs

javascriptゲームエンジン簡単な描画処理を実施できるとのこと
http://enchantjs.com/ja/

実装

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
    <title>Capture Photo</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" src="enchant.min.js"></script>
    <script type="text/javascript" src="main.js"></script>
    <style type="text/css">
        body {
            margin: 0;
            padding: 0;
        }
    </style>
  </head>
  <body>
  </body>
</html>
main.js
enchant();

window.onload = function() {
    
    // 画面サイズ
    var _width = document.width;
    var _height = document.height;
    var game = new Game(_width, _height);
    
    game.preload('chara1.png'); // preload image
    game.fps = 20;

    game.onload = function(){
    	
    	var _w = _width - 32;
    	var _h = _height - 32;
    	
    	var scene = game.rootScene;
		scene.backgroundColor = "blue";
    	
        var bear = new Sprite(32, 32);
        bear.image = game.assets['chara1.png'];
        game.rootScene.addChild(bear);
        bear.frame = [6, 6, 7, 7];   // select sprite frame
        
        bear.tl
            .moveBy(_w, 0, 90)   // move right
            .moveBy(0, _h, 90)
            .scaleTo(-1, 1, 10)      // turn left
            .moveBy(-1 * _w, 0, 90)     // move left
            .moveBy(0, -1 * _h, 90)
            .scaleTo(1, 1, 10)       // turn right
            .loop();                 // loop it
    };
    
    
    game.start();
};
マニフェスト
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.phonegap01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="10" />

	<supports-screens 
		android:largeScreens="true" 
		android:normalScreens ="true" 
		android:smallScreens="true" 
		android:resizeable="true"
		android:anyDensity="true"/> 
	<uses-permission android:name="android.permission.VIBRATE" />
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
	<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.RECEIVE_SMS" />
	<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
	<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
	<uses-permission android:name="android.permission.READ_CONTACTS" />
	<uses-permission android:name="android.permission.WRITE_CONTACTS" />
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
	<uses-permission android:name="android.permission.GET_ACCOUNTS" />
	<uses-permission android:name="android.permission.BROADCAST_STICKY" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        >
        <activity
            android:name="com.example.phonegap01.MainActivity"
            android:label="@string/app_name" 
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

※起動時の画面などを制御する「android:screenOrientation="landscape"」を追加

結果

f:id:m_shige1979:20140702202320p:plain
※実機画面のスクリーンショット

指定サイズでの固定を行っているわけではない→400☓300などで固定化している感じではないので画面へ配置する場所が固定ではなくなった感じになるかもしれません。
位置調整は多少誤差があるのでうまく動かないもかも

まとめ

cordova(phonegap)にenchantjsを組み込むことも可能な感じ、ゲーム用のものだけど高速動作は期待できないから
シンプルな挙動というか簡単な動作でできるゲームアプリしか作成できないと思われる。

enchantjsでサンプルを作ったりしてenchantjsの勉強をしながらandroidアプリへの落としこみを行う必要がありそう

追記

webサイトでスマホアプリと書かれているけど、実際、その場合htmlのWebアプリとandroidiphoneなどのアプリの場合も混在するのでなんかの区切りが欲しいな