ステート変数のクリアについて †UJMLではステート変数のクリアに、ビルトイン関数として _clear_state() という関数を持っています。 同様の動作をこの関数を使わずに実現する方法としては、あるステート変数に対して、transitionタグで記述されていないステートの値をセットするという方法があります。SDKと一緒に提供されているサンプルUJMLコードでは、どちらの方法も確認することが出来ます。 デバッグ時にステート変数の変化を明示的に確認したい時などは、_clear_state()を使わずにステートの値を明示的にセットする方法でUJMLアプリケーションの実装を行う方がよいでしょう。
<?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 STATE_NONE "0">
<!ENTITY STATE_VAL1 "1">
<!ENTITY STATE_VAL2 "2">
]>
<ujml>
<application>
<state-variables>
<state-var name="sYourState" type="int" />
</state-variables>
<functions>
<function name="clearStateSample1" type="void">
<script>
_clear_state();
sYourState = &STATE_VAL1;;
</script>
</function>
<function name="clearStateSample2" type="void">
<script>
sYourState = &STATE_NONE;;
sYourState = &STATE_VAL1;;
</script>
</function>
<functions>
<script>
/* These 2 functions works exactly same way */
clearStateSample1();
clearStateSample2();
</script>
<states>
<state var="sYourState">
<transition value="&STATE_VAL1;">
<scripit>
_trace("state is changed to STATE_VAL1");
</scripit>
</transition>
<transition value="&STATE_VAL2;">
<scripit>
_trace("state is changed to STATE_VAL2");
</scripit>
</transition>
<!-- Please be aware that NO STATE_NONE value in this section. -->
</state>
<states>
</application>
</ujml>
|