« インサイドUJML:解説4 | メイン | UIEngineはどこでもあるべき »

インサイドUJML:解説5(2006/01/26)

インサイドUJML:解説5
ソースのInside UJML

隙間時間に書いているので、文体に統一感無く読みにくいかもしれません。随時時間を見つけて修正する予定です。

今回はCursorから。

【Cursor:カーソルの操作の話】

 ここでは、カーソルの表示と方向キーによるカーソルの操作が出ます。さらに、PDA用にスタイラスでカーソル移動する方法も一緒に説明しています。

 いくつかポイントがあります。

■ 関数<function> setCursor内でステート変数sCursorをfalseしてすぐ、trueにすることで、カーソルの書き換えをしています。
切り抜き:
<function name="setCursor" type="void">
    <parameters>
        <var name="row" type="int"/>
        <var name="col" type="int"/>
    </parameters>
    <script>
        mCursorRow = row;
        mCursorCol = col;
        sCursor = false;←ここ
        sCursor = true;←ここ
    </script>
</function>

■ 「解説2のEvents」で書いた、空か透明な<box>エレメントでイベントを処理する実例が出ています。UPキーとDOWNキーを処理している<box>がそれです。
切り抜き:
<box>
    <event name="onselect">
        <accelerators> <key>UP</key> </accelerators>
        <script>
            ※ここに処理内容を書く
        </script>
    </event>
</box>

■ スタイラスによるイベントを処理するには、画面一杯の透明ボックスを配置して、<accelerators>エレメントの指定無しで書きます。透明にするには<fg><bg>共に&_COLOR_TRANSPARENT;とします。
切り抜き:
<box>
    <y> <eval>mTextHeight</eval> </y>
    <width> <eval>mBoxWidth * &MAX_COLS;</eval> </width>
    <height> <eval>mBoxHeight * &MAX_ROWS;</eval> </height>
    <fg>&_COLOR_TRANSPARENT;</fg>
    <bg>&_COLOR_TRANSPARENT;</bg>
    <event name="onselect">
        <script>
            ※ここに処理内容を書く
        </script>
    </event>
</box>

カーソルの形が凝っているのでコードが長めですが、重要なポイントはこの辺だと思います。

それから思い出したついでに書いておきますが、

・基本的に演算は整数でおこなわれる。割り算の答えは小数点以下切り捨ての整数値になります。

・UJMLでは制御文等で使う不等号に気をつける必要があります。
http://developer.uievolution.com/docs/ja/LangRef/Script_Entities.html
↑日本語(^o^)のリファレンスです。
<script>ブロックの中のプログラム中では括弧"<>"が使えないので次のように書きましょう。(XMLなので仕方無いです。)

例(mValが0より大きいかどうか判定):
 良い例:if(mVal &_GT 0)
 悪い例:if(mVal > 0)

スクリプトエンティティの一覧:
&_AND;  論理的AND演算子('&&')。
&_GT;  関係演算子('>')。
&_GTE;  関係演算子('>=')。
&_LT;  関係演算子( '<')。
&_LTE;  関係演算子('<=')。

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e5506f96098833

インサイドUJML:解説5を参照しているブログ:

コメント

Alphaserv

スクリプト部分を<[CDATA[ と ]]>(実際は半角)
で囲むと&_lt;などとしなくてもそのまま書けます。

この記事へのコメントは終了しました。