UJMLサンプル141:135の同時押しコンポーネントの活用して、同時押し中に四角(box)を大きくする(2006/07/10)
前回紹介した140番のサンプルと基本的には同じだが、応用例として紹介する。今回も、以下のエントリーで紹介した同時押しコンポーネントを活用している。
・UJMLサンプル138:135の同時押しコンポーネントの活用
・UJMLサンプル135:ボタンの同時押し用コンポーネントを作る 最後
前回の140番では同時押し中にカウントアップしていたが、今回はそれを応用し同時押し中に箱をだんだんと大きくするサンプルだ。もう少し実践的なものの方が役立つと思うが、基礎的な練習としてみていただけたらと思う。
同時押し中、例えば上と右で右上に移動、といったものも紹介できたらと思っている。
変更したのは、message_view.ujml というファイルのみ。
message_view.ujml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 1.5//EN" "../ujml.dtd" [
]>
<!-- http://uienginda.blogs.com メッセージ表示用 141用-->
<!-- 同時に押されたらカウントアップする -->
<!-- カウントアップにより箱の大きさを変える -->
<ujml>
<partition>
<state-machines>
<include file="bottommessagebar.ujms" state-machine="MessageBar" />
</state-machines>
<state-variables>
<state-var name="sButtonStatus" type="int" access="import"/>
<state-var name="sCountUp" type="boolean"/>
<state-var name="sBox" type="boolean"/>
</state-variables>
<variables>
<var name="mCounter" type="int"/>
</variables>
<functions>
<function name="initCounter" type="void">
<script>
mCounter=0;
sCountUp = false;
</script>
</function>
<function name="fireCounter" type="void">
<script>
if(!sCountUp)sCountUp = true;
</script>
</function>
</functions>
<script>
initCounter();
</script>
<states>
<state var="sBox">
<transition value="true">
<display>
<box>
<x><eval>(_getIntProperty(&_PROPERTY_INT_SCREEN_WIDTH;) - (5 * mCounter)) / 2</eval></x>
<y><eval>(_getIntProperty(&_PROPERTY_INT_SCREEN_HEIGHT;) - (5 * mCounter)) / 2</eval></y>
<width><eval>5 * mCounter</eval></width>
<height><eval>5 * mCounter</eval></height>
</box>
</display>
</transition>
</state>
<state var="sCountUp">
<transition value="true">
<delay>300</delay>
<script>
sCountUp = false;
mCounter++;
MessageBar.show(_strcat("Counter : ",mCounter));
_clear_state(sBox);
sBox = true;
sCountUp = true;
</script>
</transition>
</state>
<state var="sButtonStatus">
<transition value="0">
<script>
MessageBar.show("");
initCounter();
</script>
</transition>
<transition value="1">
<script>
MessageBar.show("上 ");
initCounter();
</script>
</transition>
<transition value="2">
<script>
MessageBar.show(" 下 ");
initCounter();
</script>
</transition>
<transition value="3">
<script>
MessageBar.show("上下 ");
fireCounter();
</script>
</transition>
<transition value="4">
<script>
MessageBar.show(" 左 ");
initCounter();
</script>
</transition>
<transition value="5">
<script>
MessageBar.show("上 左 ");
fireCounter();
</script>
</transition>
<transition value="6">
<script>
MessageBar.show(" 下左 ");
fireCounter();
</script>
</transition>
<transition value="7">
<script>
MessageBar.show("上下左 ");
fireCounter();
</script>
</transition>
<transition value="8">
<script>
MessageBar.show(" 右");
initCounter();
</script>
</transition>
<transition value="9">
<script>
MessageBar.show("上 右");
fireCounter();
</script>
</transition>
<transition value="10">
<script>
MessageBar.show(" 下 右");
fireCounter();
</script>
</transition>
<transition value="11">
<script>
MessageBar.show("上下 右");
fireCounter();
</script>
</transition>
<transition value="12">
<script>
MessageBar.show(" 左右");
fireCounter();
</script>
</transition>
<transition value="13">
<script>
MessageBar.show("上 左右");
fireCounter();
</script>
</transition>
<transition value="14">
<script>
MessageBar.show(" 下左右");
fireCounter();
</script>
</transition>
<transition value="15">
<script>
MessageBar.show("上下左右");
fireCounter();
</script>
</transition>
</state>
</states>
</partition>
</ujml>
ソースコード:
コメント