<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>etoys変数を使って速さを変化させる</title><revhistory><revision><revnumber>13</revnumber><date>2012-06-12 12:57:50</date><authorinitials>masahiko</authorinitials><revremark>名前を'etoys変数を使った動き'から変更。</revremark></revision><revision><revnumber>12</revnumber><date>2012-06-12 12:57:29</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2011-07-07 03:10:37</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2010-06-25 00:26:44</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2010-06-24 13:11:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2010-06-24 13:08:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2010-06-24 13:03:12</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2010-06-24 12:50:53</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2010-06-24 12:44:03</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2010-06-24 12:38:24</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2010-06-24 12:28:31</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2010-06-24 02:53:10</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2010-06-24 02:50:58</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>変数を使って速さを変化させる</title><para>速くなったり、遅くなったり、止まったりと変化のある動きをつける方法を考えます。 </para><para>「進める」を使ったスクリプトの場合 </para><itemizedlist><listitem override="none"><para>こうすると一定速度５で動きます。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou02.png"/></imageobject><textobject><phrase>idouryou02.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>数値部分を増やすと一度に動く量が増えて、速い動きになります。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou04.png"/></imageobject><textobject><phrase>idouryou04.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>進める量を０にすると、チクタクにしても止まっています。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou05.png"/></imageobject><textobject><phrase>idouryou05.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>これらを条件(テストタイル)の中に記述することで、速さを変化させることができます。 </para></listitem></itemizedlist><para>座標に値を加える方法でも同様です。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou03.png"/></imageobject><textobject><phrase>idouryou03.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou06.png"/></imageobject><textobject><phrase>idouryou06.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou07.png"/></imageobject><textobject><phrase>idouryou07.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>移動量を変数で表す</title><para>上の例では移動量をスクリプトタイル内の数値で指定していましたが、 移動量を変数の値で指定することもできます。 </para><para>変数を利用すると複雑な処理が簡単に書けます。 </para><itemizedlist><listitem override="none"><para>動かすオブジェクトのビューアを開き、変数を作成します。 </para></listitem><listitem override="none"><para>変数の名前は「移動量」としました。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou01.png"/></imageobject><textobject><phrase>idouryou01.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>スクリプト内で移動量を数値で指定していた部分を、変数名で置き換えます。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou08.png"/></imageobject><textobject><phrase>idouryou08.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>座標に値を加える方法でも同様です。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou09.png"/></imageobject><textobject><phrase>idouryou09.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>これで動作させてみると、 変数の値を変えることで動きの速さを変えることができるのが分かります。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>移動量を変化させる</title><para>移動量を表す変数の値をスクリプト内で変えるには、 テストタイルの中で変数の値を指定します。 </para><itemizedlist><listitem override="none"><para>ある条件が成り立ったとき、移動量を５にする例です。 </para></listitem><listitem override="none"><para>赤で示した部分には条件を記述すること </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou10.png"/></imageobject><textobject><phrase>idouryou10.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>移動量を０にすると止まります。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou11.png"/></imageobject><textobject><phrase>idouryou11.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>移動量を少しずつ変える</title><para>だんだん速くするには移動量に１を加えます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou12.png"/></imageobject><textobject><phrase>idouryou12.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>この場合、移動量が増えすぎないように次のようなテストタイルを加える必要があります。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/etoys%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E9%80%9F%E3%81%95%E3%82%92%E5%A4%89%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B?action=AttachFile&amp;do=get&amp;target=idouryou13.png"/></imageobject><textobject><phrase>idouryou13.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>だんだん遅くするには１を加える代わりに１を引けばよい。 この場合も、移動量が小さくなりすぎないようにテストタイルで記述します。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>移動量を０にした時の注意</title><para>このようにして動きの速さを変化させることができますが、 移動量が０になって動きが止まってしまい、 画面上で変化がなくなることが考えられます。 </para><para>動かなくなった状態から、動き始めるための処理を考えましょう。 </para><para>例えば次のような方法があります。 </para><para><emphasis role="strong">方法１</emphasis> </para><itemizedlist><listitem override="none"><para>あるオブジェクトの動きが止まっても、他のオブジェクトが動くことで画面上で変化があるようにする。 </para></listitem></itemizedlist><para><emphasis role="strong">方法２</emphasis> </para><itemizedlist><listitem override="none"><para>カウンタを用いて、止まっている時間を指定する。 </para></listitem></itemizedlist></section></section></article>