« UJMLサンプル037:ティッカー(横バー式) | メイン | [prototype]ホテルでチェックイン »

UJMLサンプル038:ティッカー(横バー式)その2(2006/02/14)

Samples_038_bar_ticker2前回作成した「UJMLサンプル037:ティッカー(横バー式)」を改良したものだ。

文字が全て流れ終わった後も、繰り返して右から文字が出てくるようにした。

10個スペースを入れて無理やりやっているが、もっとスマートに書ける人はスマートに書いた方が良いと思った。

★---コード
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.5//EN"
"http://www.uievolution.com/dtd/ujml-1.5.dtd" [
    <!ENTITY SPACING "4">
    <!ENTITY MSEC_DELAY "200">
]>
<!-- http://uiengineda.blogs.com 文字列操作の練習:2回目以降も右から流れてくるように -->
<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="mLabelHeight" type="int"/>
            <var name="mMessage" type="string"/>
            <var name="mMessageTemp" type="string"/>
            <var name="mCt" type="int"/>
        </variables>
        <script>
            mMessage = "          秋元@サイボウズ研究所プログラマーBlog: 従うべきでないプログラミングのアドバイス10個";
            mMessageTemp = mMessage;

            mScrWidth = _getIntProperty(&_PROPERTY_INT_SCREEN_WIDTH;);
            mScrHeight = _getIntProperty(&_PROPERTY_INT_SCREEN_HEIGHT;);

            mLabelHeight = (&SPACING; * 2) + _text_height(&_FONT_SIZE_MEDIUM;, &_FONT_STYLE_PLAIN;, &_FONT_FACE_SYSTEM;);

            mCt = 0;
            sMessage = true;
        </script>
        <states>
            <!-- 画面の下部にメッセージを出すための帯 -->
            <state var="sMessage">
                <transition value="true">
                    <display>
                        <box>
                            <x>0</x>
                            <y><eval>mScrHeight - mLabelHeight</eval></y>
                            <width><eval>mScrWidth</eval></width>
                            <height><eval>mLabelHeight</eval></height>
                            <fg>&_COLOR_BLACK;</fg>
                            <bg>&_COLOR_BLACK;</bg>
                            <label>
                                <text><eval>mMessageTemp</eval></text>
                                <x>&SPACING;</x>
                                <y>&SPACING;</y>
                                <fg>&_COLOR_WHITE;</fg>
                                <bg>&_COLOR_BLACK;</bg>
                            </label>
                        </box>
                    </display>
                    <delay>&MSEC_DELAY;</delay>
                    <script>
                        sMessage = false;
                        if(mCt &_LT; _strlen(mMessage)-1){
                            mCt++;
                        }else{
                            mCt = 0;
                        }
                        mMessageTemp = _substring(mMessage,mCt,_strlen(mMessage)-1);

                        <!-- 何度も繰り返し出てくるようにした -->
                        if((_strlen(mMessage) - mCt) &_LT; 10){
                            mMessageTemp = _strcat(mMessageTemp,mMessage);
                        }

                        sMessage = true;
                    </script>
                </transition>
            </state>
        </states>
    </application>
</ujml>

トラックバック

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

UJMLサンプル038:ティッカー(横バー式)その2を参照しているブログ:

コメント

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