Titanium Mobile でRPG開発進捗30日目


今日で30日、一ヶ月が経ちました。
それなりに遊べるものならすぐ出来ると
甘い気持ちで始めたものの
RPGはやっぱりやることが多いです。


さて、本日の進捗としては

  1. が出るようになったよ
  2. 入力待ち処理

あたりでしょうか。


まず、の出現ですがこちらは出すだけなら
そんなに問題じゃないです。
何故か、ダメージのエフェクト演出を
先に作り始めたんですが、
こいつがなかなか難がある実装となりました。
やってることとしては2つのアニメオブジェクトを
作り出し、交互に呼び出すというもの。
かるーく概要を書くと

var a1 = createAnimation();
var a2 = createAnimation();
a1.addEventListener("complete", function(){
    view.animate(a2);
});
a2.addEventListener("complete", function(){
    view.animate(a1);
});
view.animation(a1);


こんな感じ。これはシンプルな書き方で
これをグローバル変数と絡めると偉いことに。
なんとか逃げ道を付けられたので良かったです。解決。


次に入力待ち処理ですが、こちらも独特な手段を使いました。
Titanium Mobile は基本的にイベントドリブン型なので
イベントが無ければ何も起きないのです。
なので、一旦流れを途切れさせてしまうと、次はイベントが
何らかの形で発生しないと処理できない。
ということで、入力待ち処理の引数にコールバック関数を持ってくことに。
入力待ちには画面サイズのラベルを全面に表示してタップ待ち

// XXはグローバルアクセス用のオブジェクト
inputWait:function (func) {
    var overwrap = Ti.UI.createLabel({text:'▼ タップしてください ▼', width:320, height:480, zIndex:10000});
    overwrap.addEventListener('click', function(){
        XX.view.remove(overwrap);
        (func)();
    });
    this.view.add(overwrap);
},


こんな感じでコールバック関数を実行できるようです。
少し横着な感じですけど、もっと綺麗に書ける方法があるなら教えて欲しいです。