端末の向き変更を検出
iOSの場合
window.orientationchangeイベントで
向きの変更を検出できる
Androidの場合
2.2以降とそれ以前ではことなり
2.2以降なら
iOSと同じく
window.orientationchangeイベントを使い
2.1以前なら
window.onresize
を使う
例えば
ele.innerHTML=”現在の値は”+window.orientationchange;
とすれば
現在の加速度センサーの値が取得できる
月別: 2013年3月
加速度センサーで端末の向き取得
加速度センサーで端末の向き取得
端末の向きを取得するには
window.orientationプロパティ
を使う
プロパティの値は
0縦向き
向きは通常
90
横向き
上が左側になる向き
-90
横向き
上が右側になる向き
180
縦向き
逆さにした状態
単に、縦か横か調べたいなら
-90 90のどちらかでいいので
Math.abs()で
絶対値を取得し
90なら横向きと判断できる
使うときには
setInterval()で間隔を決める
ソースにすると
setInterval(fuction(){
if(Math.abs(window.orientation)==90){
//横方向の処理
}
else{
縦方向の処理
},
間隔をミリ秒で指定
);
画像を漏れなく、表示するには
画像を漏れなく、表示するには
昔あった
ボンバーマンとか倉庫番のような
ゲームを作る場合
ブロック画像を用意して
プログラムでこれを画面に配置する
この場合、画像が全部読み込まれないと
ステージが構成できない
画像の読みこみを待つには
Imageオブジェクトの
onloadイベントを使い、
読み込んだ画像の数をカウントするようにする
Viewportなどのメタデータ設定
Viewportなどのメタデータ設定
スマホゲームで必須なのが
viewportの設定
あと、ユーザーに画面の拡大縮小操作されないように
use-scalable=no
にしておく
これでゲーム画面を画面いっぱいに
表示できるし
画面タッチしたときの誤操作も防止できる
そして、
scriptタグで
Javascriptで作成したゲーム関連ファイルを読み込む
あと、styleタグでCSSの設定をするけど
このときに
HTMLのすべての要素の
padding(余白のこと)
と
margin
を
0にしておく
ソースにすると
*{margin:0; padding:0;}
*はすべてという意味
Linux操作ではおなじみ
また、正規表現でもよく使われる
これを設定することで
隙間なくぴったりと要素を表示できるようになる
WebStorageの初期化方法
WebStorageの初期化方法
WebStorageで
ストレージ全体を初期化するには
clear()を使う
ソースにすると
localStorage.clear();
WebStorageは
オリジンごとに
個別のストレージが用意されるけど
もし、同じオリジンの中に
別のWebアプリがあると
clear()で他のWebアプリの使っているストレージ領域も消されてしまう
ちなみに、オリジンとは
プロトコル+ポート番号
プロトコルは通信規格でTCPなどなど
ポート番号は、サーバー管理者なら
おなじみのもので
ウェルノウンポートで調べるといろいろでます
ちなみに、HTTPは80
SSHは通常なら22
です
このため、アプリごとに
サブドメインを区切ったり
アプリが利用したキーだけ削除するなど
配慮する必要があります
あと、直接ブラウザーのストレージを初期化する方法として
ブラウザーのアドレスバーに
javascript:void(localStorage.clear())
とすることで消去可能
これをブラウザーのブックマークに入れておけば
作業効率もよくなりそうです
WebStorageで気を付けること
WebStorageで気を付けること
現在のWebStorageは
文字列しか保存できない
このため、文字列以外のオブジェクトを保持するには
何らかの方法で文字列変換しておく必要がある
オブジェクトを文字列変換するのによく使われるのが
JSON
Javascriptでは、JSONオブジェクトがあり
これを使えば
Javascriptオブジェクトと
文字列への再変換ができる
JavascriptオブジェクトをJSONへ変換するには
JSON.stringify()
を使う
以下は例
var obj=[1,2,3];
var json_str = JSON.stringify(obj);
これで、objをJSONへ変換して
変数 json_strへ格納
そして、今度はJSON形式の文字列を
Javascriptオブジェクトへ戻す
JSONからJavascriptオブジェクトへ変換するには
JSON.parse()を使う
今回は
前回に作成した変数 json_strから戻して
今度は、js_objへ格納
var js_obj = JSON.parse(json_str);
これもWebAPIでかなり使うので
覚えておくと便利
Web Storage API
Web Storage API
WebStorageを操作するメソッド、プロパティ
length
キーの個数を返す
key(n)
n番目のkeyを返す
getItem(key)
keyに対応する値を返す
setItem(key,value)
keyに対するvalueを保持
removeItem(key)
keyと値を削除
clear()
ストレージを消去
複数データの読み出し
複数データをオブジェクトにまとめて保存した場合
まとめてデータを読み出します
以下はソース
var load_str ~ localStorage.playerData;
//読み出したデータをオブジェクトに変換
var load_obj = JSON.parse(load_str);
//オブジェクトを変数に代入
var name = load_obj.name;
var hp = load_obj.hp;
var dress = load_obj.dress;
JSON.stringy() でJSON文字列にして保存した
データを
JavaScriptオブジェクトに復元するには
JSON.parse() を津かいます
JSON文字列では、
数値や文字列などの型情報は保存されているため
parseInt()
parsefloat()
などで数値変換しなくても大丈夫です
さらに、複数の値を localStorage の
1つのキーにまとめて保存することもできます
また、逆に複数のキーにわけて保存することもできます
ちなみに、このJSON.parse() ですが
Web API でマッシュアップするときにも使えます
最近ではXML以外に JSON で提供もされていますので
いろいろ使うことができます
また、JSONを使うことで
ゲームの保存と読み込み、
セーブとロードができるので、いろいろと活用すると
おもしろいゲームができそうです
ゲームデータの管理方法
ゲームの中で利用する複数データの保存には
いくつかの方法がある
例えば、RPGで
プレイやーの名前、HP、総備品など
複数のデータを保存する場合
このときの方法の1つとしては
名前 name
体力 HP
装備 dress
を複数のキーとして保存する方法がある
ソースにすると
localStorage.name=”ロト”
localStorage.hp =100;
localstrage.dress=”光の鎧”;
もう一つの方法としては、複数のキーを1つのオブジェクトとして
保存する方法
この場合、JSON.srtingfy() を使ってオブジェクトを文字列変換してから保存
ソースにすると
//オブジェクトにデータ設定
var save_obj={
“name”: “ロト”,
“hp” : 100,
“dress”: “光の鎧”;
};
//文字列データに変換してから保存
localStorage.playerdata =JSON.stringfy(save_obj);
プレイヤーが多いとJSOnの方が楽かもしれない
どちらをつかってもいいけど
localSrorage に保存したデータは全て文字列になっているので注意
今回のHPみたいに数値でいれたはずのものも文字列になっているので
数値を保存した時には
parseInt()
parsefloat()
などで、読み出した値を数値変換しないとバグるので注意
というわけでステータスを読み出したいなら
//名前
var name = localStorage.name
//HP
var hp = parseInt(localStorage.hp);
//総備品
var dress = localStorage.dress;
というようになる
最近では、HTML5でゲームもつくれるので
作る時には変換されることに気をつける必要があるので注意
Web Storage の活用
Web Storage はブラウザ側
つまりスマホ端末内に
任意のデータを保存する技術
これがない従来のweb アプリでは
データの保存には
webサーバーに保存する
もしくは
Cookie に保存していました
ちなみに、Cookie のh存容量は
4kB未満ですが
Web Storage では
2.4MBほどあります
Web Storage API は
キーと値のペアでデータを保存する
キーバーリュー型で実装されています
Web Storage には2種類あり、
データを永続化するlocalStorage
ブラウザを閉じるまで有効な
sessionStorage
この2つになります
この2つは用途により使い分けします
あと、これらはオリジンごとに保存されます
オリジンは、
プロトコル+ドメイン+ポート番号
のことです
Web Storage の基本的な書式は
ストレージへ値を保存するには
localStorage[key]= value;
ストレージからの読み出しは
var value = localStorage[key];
となります