UJMLサンプル129:ボタンの同時押しを処理するコンポーネントを作る(128の続き)(2006/06/16)
UIEngine だ: UJMLサンプル128:KeyUp & KeyDown
に引き続き、ボタンの同時押しを処理するためのコンポーネントを作りながらUJMLの紹介をしていく。前回のサンプルはどのボタンに対しても画面の再描画処理が行われたが、今回はカーソルキーのみで反応するように変更した。
新たに使用したのはUJMLの組み込み関数である _streq() である。これは、二つの文字列を比較する関数で覚えておくべきものの一つである。
_getStringEventData(&_EVENT_STRING_ONKEY;);
で得られたキーの文字列が何かを判定し、カーソルキーなら画面の再描画処理をするようにした。太字参照。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.5//EN" "../ujml.dtd" [
]>
<!-- http://uienginda.blogs.com UJMLサンプル129:KeyUp & KeyDown を作っていく -->
<ujml>
<application>
<state-variables>
<state-var name="sLabel" type="boolean"/>
</state-variables>
<variables>
<var name="mLabelText" type="string"/>
</variables>
<script>
sLabel = true;
</script>
<states>
<state var="sLabel">
<transition value="true">
<display>
<label>
<text><eval>mLabelText</eval></text>
<fg>&_COLOR_WHITE;</fg>
<bg>&_COLOR_BLACK;</bg>
<size>&_FONT_SIZE_SMALL;</size>
</label>
<box>
<event name="onKeyDown">
<variables>
<var name="key" type="string"/>
</variables>
<script>
key = _getStringEventData(&_EVENT_STRING_ONKEY;);
<!-- カーソルキーのみで処理をする -->
if(_streq(key,"UP") || _streq(key,"DOWN") || _streq(key,"RIGHT") || _streq(key,"LEFT")){
mLabelText = _strcat("KeyDown:",key);
_clear_state(sLabel);
sLabel = true;
}
</script>
</event>
</box>
<box>
<event name="onKeyUp">
<variables>
<var name="key" type="string"/>
<var name="flg" type="boolean"/>
</variables>
<script>
key = _getStringEventData(&_EVENT_STRING_ONKEY;);
<!-- カーソルキーのみで処理をする -->
if(_streq(key,"UP") || _streq(key,"DOWN") || _streq(key,"RIGHT") || _streq(key,"LEFT")){
mLabelText = _strcat("KeyUp:",key);
_clear_state(sLabel);
sLabel = true;
}
</script>
</event>
</box>
</display>
</transition>
</state>
</states>
</application>
</ujml>
次回以降もこのような感じでお送りする予定だ。途中で他のサンプルが入るかもしれないが。
UIEngine/UJML 初心者の方にお勧めのページ:
・初心者向けまとめページ
・初心者向けカテゴリ
その他の初心者向けのサンプル:
・UJMLサンプル052:超基礎:HELLO WORLD! その1
・UJMLサンプル053:超基礎:HELLO WORLD! その2 文字の色を指定
・UJMLサンプル056:超基礎:HELLO WORLD! その3 文字の色を指定 ENTITYを使う
・UJMLサンプル057:超基礎:HELLO WORLD! その4 文字の色を指定 変数から文字の色指定をする場合
・UJMLサンプル091:超基礎:HELLO WORLD! その5 ラベルの背景も指定する
コメント