« UJMLサンプル008:上下からつぶれて消える箱 | メイン | SDKはWEB上に持ってこれるか? »

UJMLサンプル009:画面の中央で「俺の名は、、、」(2006/02/02)

Samples_005_oreno_center何かと画面の中央に表示したいものです。そこで、例の「ルパン三世ティッカー」を画面中央で表示するようにしました。

---コード
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.2//EN" "ujml.dtd" [
    <!ENTITY ORENO_MESSAGE "俺の名はルパン三世" >
    <!ENTITY SPACING "4">
]>
<ujml>
    <application>
        <state-variables>
            <state-var name="sMessage" type="boolean" />
        </state-variables>
        <variables>
            <var name="mScrWidth" type="int" />
            <var name="mScrHeight" type="int" />

            <var name="mPosX" type="int" />
            <var name="mPosY" type="int" />

            <var name="mMessage" type="string"/>
            <var name="mChar" type="string"/>
            <var name="mCounter" type="int"/>
            <var name="mMessageLength" type="int"/>

            <var name="mWidth" type="int"/>
            <var name="mOneWidth" type="int"/>
            <var name="mHeight" type="int"/>
        </variables>

        <script>
            <!-- スクリーンのサイズを調べる -->
            mScrWidth = _getIntProperty(&_PROPERTY_INT_SCREEN_WIDTH;);
            mScrHeight = _getIntProperty(&_PROPERTY_INT_SCREEN_HEIGHT;);

            <!-- 1文字分の幅 -->
            mOneWidth = (&SPACING; * 2) +_text_width("俺", &_FONT_SIZE_MEDIUM;,
                &_FONT_STYLE_ITALIC;, &_FONT_FACE_SYSTEM;);

            <!-- 全文字数分の幅 -->
            mWidth = (&SPACING; * 2) +
                _text_width("&ORENO_MESSAGE;", &_FONT_SIZE_MEDIUM;,
                &_FONT_STYLE_ITALIC;, &_FONT_FACE_SYSTEM;);

            <!-- 高さ -->
            mHeight = (&SPACING; * 2) +
                _text_height(&_FONT_SIZE_MEDIUM;, &_FONT_STYLE_ITALIC;,
                &_FONT_FACE_SYSTEM;);

            <!-- 中心の位置 -->
            mPosX = (mScrWidth / 2) - (mOneWidth / 2);
            mPosY = (mScrHeight / 2) - (mHeight / 2);

            mMessage = "&ORENO_MESSAGE;";
            mMessageLength = _strlen(mMessage);
            mCounter = 0;
            mChar = _substring(mMessage, mCounter, mCounter + 1);
            sMessage = true;
        </script>
        <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <display>
            <fn>
                <text>Back</text>
                <event name="onselect">
                    <accelerators> <key>F1</key> </accelerators>
                    <script>
                        _unload();
                    </script>
                </event>
            </fn>
        </display>
        <states>
            <state var="sMessage">
                <transition value="true">
                    <display>
                        <!-- 四角い箱の中にラベルを配置しています。 -->
                        <box>
                            <x><eval>mPosX</eval></x>
                            <y><eval>mPosY</eval></y>
                            <width><eval>mOneWidth</eval></width>
                            <height><eval>mHeight</eval></height>
                            <fg>&_COLOR_BLACK;</fg>
                            <bg>&_COLOR_BLACK;</bg>
                            <label>
                                <text><eval>mChar</eval></text>
                                <x>&SPACING;</x>
                                <y>&SPACING;</y>
                                <fg>&_COLOR_WHITE;</fg>
                                <bg>&_COLOR_BLACK;</bg>
                            </label>
                        </box>
                    </display>
                    <delay>200</delay>
                    <script>
                        sMessage = false;
                        mCounter++;
                        if(mCounter == _strlen(mMessage))mCounter = 0;
                        mChar = _substring(mMessage, mCounter, mCounter + 1);
                        sMessage=true;
                    </script>
                </transition>
            </state>
        </states>
    </application>
</ujml>

トラックバック

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

UJMLサンプル009:画面の中央で「俺の名は、、、」を参照しているブログ:

コメント

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