YahooWidgetsのソースコードと比較する タイマー的な使い方(2006/07/06)
UIEngine だ: YahooWidgetsのソースコードと比較する
に引き続き、もう一点、コードの比較を紹介する。今回取り上げるのはタイマーだ。前回紹介した<image>と異なり、二つのプラットフォームの思想の差が良く現れている。
本ブログの初期のサンプルでもUIEngineでのタイマーの実現サンプルを紹介している。以下がそのエントリーへのリンクだ。
UJMLサンプル003:ステート変数千本ノック その3 タイマー
ここで解説したように、UIEngineにてタイマーを実現するにはステート変数を活用し、<delay> タグでタイマーインターバルを設定した。
Yahoo!Widgetsではどうか。これは、別のブログのサンプルで紹介しているソースコードが参考になる。
Yahoo!Widgetsではタイマーの実現にその名も<timer>というタグを利用し、インターバルの設定は <interval> というタグで行う。
UJMLの場合:
<state var="sMessage">
<transition value="true">
<display>
<label>
<text><eval>mTimer</eval></text>
<fg>&_COLOR_WHITE;</fg>
<bg>&_COLOR_BLACK;</bg>
</label>
</display>
<delay>1000</delay>
<script>
sMessage = false;
mTimer--;
if(mTimer > 0)sMessage=true;
</script>
</transition>
</state>
Yahoo!Widgetsの場合:
<timer>
<name>timer</name>
<interval>1</interval>
<ticking>true</ticking>
<onTimerFired><!-- interval で指定された秒毎に以下のスクリプトが実行される -->
<![CDATA[
myText.data = myText.data - 1;
if(myText.data == 0){
timer.ticking = false;
}
]]>
</onTimerFired>
</timer>
UJMLでは、ステート変数に対して<delay>により実行間隔を設定し、<script>タグ中でステート変数のON/OFFを切り替えることでタイマーを実現する。
Yahoo!Widgetsでは、<timer>タグを利用し<interval>で実行間隔を、<ticking>でタイマーのON/OFFを制御する。
コメント