ユーザー入力
マウスやキーボードによる入力が必要になることがあります。そのとき、 "Mouse Down," "Mouse Up," "Mouse Click," "Mouse Drag," "Key Typed"を使います。 (
プログラムコードの入力参照)。これらは、イベントが起こるとそれに対応します。イベントに対応して入力データを読むために2つの演算子があります。
マウスとキーボード
マウスの位置: mouse()
説明: マウスボタンが押されたとき、マウスの位置を表すベクトルを返します。ベクトルは同次座標です。(無限遠点も考慮します) もし、2次元のユークリッド座標が必要であれば、
mouse().xy
によって座標が得られます。
キー入力: key()
説明: キーボードで打たれた文字列を返します。
あるキーが押されたか: iskeydown(<int>)
説明: この関数は、ある特定のキーが押されたならばブール値 true を返します。そのキーは整数の引数で与えます。たとえば、
shift キーが押されたかどうかを決定できます。キーの番号は、たとえば 65, 66, 66, .... が 'A', 'B', 'C',... に対応します。 'shift', 'crtl' と 'alt' は 16, 17, 18 です。
押されたキーのリスト: keydownlist()
説明: この関数は、押されたキーのリストを返します。MIDI関数の節に、興味深い例を示しました。
キーボードピアノ です。
重力センサにおける AMS データ
ユーザー入力にアクセスするもう一つの興味深い方法があります。CindyScript はノートパソコンに実装されている重力センサ(加速度センサ)にアクセスできます。重力センサは3次元のセンサです。
AMS データの取得: amsdata()
説明: この関数は AMS センサの生のデータを取得します。
調整された AMS データの取得: calibratedamsdata()
説明: この関数は、 AMS センサの調整されたデータを取得します。調整されたデータは、空間におけるパソコンの位置をベクトルデータとしたものです。
描画面に独自のツールボタンを作る。
シンデレラはHTMLページに図形を書きだすことができます。それに 、点や直線、園を描くツールのセットをつけておくとよいことがよくあります。
CindyScript の次の関数を用いて、カスタムツールバーをつけたり取り除いたりすることができます。
ツールバーは、特にインタラクティブな練習問題を作るときに重要です。その例は
インタラクティブな練習問題にあります。
カスタムツールバーを作る: createtool(<string>,<int>,<int>)
カスタムツールバーを作る: createtool(<list>,<int>,<int>)
説明: シンデレラの描画面にツールボタンを作ります。第1の引数は、1個のツールバーを表す文字列か複数個からなるリストです。あとの2つの引数は画面の角からの相対的な位置をピクセル数で表したものです。通常、このコードは、スクリプトエディタの Initializationスロットに入れます。
次の文字列を使います。
- 一般操作:
"Move"
, "Delete"
- 点を打つ:
"Point"
, "Intersection"
, "Mid"
, "Center"
- 線を引く:
"Line"
, "Segment"
, "Line Through"
, "Parallel"
, "Orthogonal"
, "Angle Bisector"
- 円を描く:
"Circle"
, "Circle by Radius"
, "Compass"
, "Circle by 3"
, "Arc"
- 2次曲線を描く:
"Conic by 5"
, "Ellipse"
, "Hyperbola"
, "Parabola"
- 特別メニュー:
"Polar Point"
, "Polar Line"
, "Polygon"
, "Reflection"
, "Locus"
- 計測をする:
"Distance"
, "Angle"
, "Area"
CindyLab のツールも使えます:
- 部品:
"Mass"
, "Velocity"
, "Rubberband"
, "Spring"
, "Coulomb"
- 環境:
"Gravity"
, "Sun"
, "Floor"
, "Bouncer"
, "Magnet"
ツールの表示位置は固定されています。初期位置は右上隅です。修飾子
reference
を用いれば他の隅を指定できます。その修飾子は、
"UL", "UR", "LL", "LR"
です。初めの文字は、
upper/lower すなわち上下で、2番目の文字は
left/rightすなわち左右を表します。
例:簡単な使い方を示しましょう。次のコードで、「動かすモード」のツールボタンができます。
複数のツールは次のようにして作ることができます。
createtool(["Move","Point","Line","Circle"],2,2);
createtool(["Move","Point","Line","Circle"],2,2,flipped->true);
createtool(
[
["Move","Point","Line","Circle"],
["Parallel","Orthogonal","Circle by Radius","Compass"],
["Distance","Angle","Area","Polygon"],
]
,2,2,flipped->false);
createtool(
...same as example above...
,reference->"LR");
Modifiers: 次のような修飾子があります:
Modifier | Parameter | Effect
|
reference | <文字列> | 参照位置
|
flipped | <ブール値> | flipped→true 行と列を入替え
|
space | <整数> | ツールボタンの間隔。ピクセル数で
|
ツールの削除: removetool(<string>)
説明:カスタムツールバーからツールを削除する。
すべてのツールの削除: removetools()
説明:カスタムツールバーからすべてのツールを削除する。