« UJMLサンプル126:移動するキャラとテキスト(125から続き) | メイン | コンポーネントの重ね合わせが驚くほど簡単である、、、これはすごい »

UJMLサンプル128:KeyUp & KeyDown(2006/06/15)

Samples_128_keyupdown 以前の投稿でボタンの同時押しイベントに言語レベルで対応していないことを書いたが、KeyUpとKeyDownイベントをハンドルできるのでコンポーネントで実装してしまえば良いだろうということで作り始めた。

 これまでKeyUpとKeyDownイベントを使ったことが無かったので、まずは簡単なサンプルから作り始め、最終的にはすぐに使えるコンポーネントとして公開する予定。その頃にはSDK2.0がDoja対応していることに期待。

 基本的にはこれまで使ってきたonSelectイベントと使い方は同じで、ボタンを押したとき、離したときにイベントが発生する。

 ソースコードをそのまま掲載するが、重要なのは太字部分。どのボタンに対してイベントが発生したのか、関数を使って取得している。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.5//EN" "../ujml.dtd" [
]>

<!-- http://uienginda.blogs.com UJMLサンプル128: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;);
                                    mLabelText = _strcat(
"KeyDown:",key);
                                    _clear_state(sLabel);
                                    sLabel = true;
                                </script>

                            </event>
                        </box>
                        <box>
                            <event name="onKeyUp">
                                <variables>
                                    <var name="key" type="string"/>
                                </variables>
                                <script>
                                    key = _getStringEventData(&_EVENT_STRING_ONKEY;);
                                    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 ラベルの背景も指定する

トラックバック

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

UJMLサンプル128:KeyUp & KeyDownを参照しているブログ:

コメント

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