Spaceキーで1点加算する
キーIDにはKeyboardEvent.codeを使います:KeyA、
Digit1、ArrowLeft、Space、Enterなどです。
TurboWarp拡張機能 · 利用者ガイド
Async Inputは、キー操作、スプライトのタップ、累積ポーズをTemporary Variablesの ランタイム変数につなぎます。どのスクリプトからでも最新値を読み取れ、値の更新と 同時にメッセージを送ることもできます。
紙芝居DSL 4.0集約ランタイム
Async Inputの見出し直下にあるドキュメントボタンを使います。 集約されたブロックも、ここで説明するキー入力、スプライトのタップ、ポーズ、ランタイム変数、 broadcast、所有権、自動解放の動作を保ち、名前空間とアイコンで由来を識別できます。
クイックスタート
プロジェクト開始時にリスナーを登録します。登録ブロックは入力を待たず、 ランタイム変数も初期化しないため、初期値は明示的に設定してください。
先にTemporary Variablesを追加します。次にAsync Inputをカスタム拡張機能として、 サンドボックス化せずに実行を有効にして読み込みます。
Temporary Variablesでinputやscoreなどのランタイム変数を作ります。
算術更新を使う場合は0などの数値を設定します。
Async Inputの「listen」ブロックを緑の旗が押されたときの下に置きます。 実行したスプライト、クローン、ステージが登録の所有者になります。
一致する入力でランタイム変数がすぐに更新されます。「and broadcast」付きの ブロックは、更新後にScratchのメッセージを送ります。
メッセージを送る場合も、必ず先にランタイム変数が更新されます。
レビュー済みのバージョン固定ビルドを使用してください:
@kubohiroya/turbowarp-async-input@0.4.0
使用例
配布ビルドにはキーとタッチのブロックが含まれます。累積ポーズのブロックは任意機能で、
poseInputフィーチャーフラグを有効にしたビルドでのみ表示されます。
キーIDにはKeyboardEvent.codeを使います:KeyA、
Digit1、ArrowLeft、Space、Enterなどです。
ポインター位置で最前面に描画されているスプライトだけが一致します。透明部分と クローンの判定はTurboWarpレンダラーの動作に従います。
累積ポーズのスコアリングと変更イベントを有効にしたTMPoseが必要です。有効な累積 ポーズ名が登録名に変わったときに実行されます。
アプリケーション統合
バージョン0.3.0では、ポーズ、物理キー、最前面actorのタッチ候補を待機する 副作用のないComposition APIを追加しました。
@kubohiroya/turbowarp-async-input/compositionをimportし、利用する
pose、key、actor-touchのイベント元だけを渡します。import時にScratch、DOM、
TurboWarp VMへアクセスしません。
3種類の待機は1つの所有権を共有します。有効な待機を始めると前の待機を中止し、
中止、完了、失敗、releaseAll()で直ちに購読を解除します。
ターゲットごとの所有
同じターゲットから同じ入力を再登録すると、そのターゲットの登録だけが置き換わります。 別のスプライトやクローンは、同じキーやポーズをそれぞれ独立してlistenできます。
KeyAを1回押すと、一致するターゲット所有の登録がすべて更新されます。
値の扱い
値が+、-、*、/で始まる場合は
複合算術更新になります。それ以外は入力した文字列がそのまま代入されます。
score8score10| VALUE | 動作 | 必要な初期値 |
|---|---|---|
+2 | 2を足す | 有限の数値 |
-1 | 1を引く | 有限の数値 |
*3 | 3を掛ける | 有限の数値 |
/2 | 2で割る | 有限の数値、0でない除数 |
pressed | 文字列をそのまま代入 | なし |
無効または有限でない算術計算では現在値を変えず、その登録のメッセージ送信も行いません。
ブロック一覧
「listen」ブロックは動作を登録または置換してすぐに処理を返します。「stop」ブロックは、 実行したターゲットが所有する登録だけに作用します。
トラブルシューティング
項目を開くと、よくある原因と最短の解決方法を確認できます。
TurboWarpのTemporary Variables拡張機能をAsync Inputより先に読み込み、プロジェクトを 再開してください。Async Inputはその拡張機能のランタイム変数APIを利用します。
入力文字ではなく物理キーコードを使います。aではなくKeyA、
1ではなくDigit1です。キーリピート、IME変換中、編集可能な
コントロール内でのキー入力は意図的に無視されます。
listenが必要なスプライトまたはクローンごとに登録ブロックを実行します。レンダラーが 最前面として選んだスプライトだけが一致し、ステージは「このスプライト」のタッチ登録には使えません。
ポーズ入力は独立して切り戻せるposeInputフィーチャーフラグの背後にあり、
配布ビルドではOFFです。ポーズ対応ビルドには、累積スコアリングと変更イベントを有効にしたTMPoseも必要です。
ランタイム変数を有限の数値で初期化します。未作成の値、数値でない文字列、0除算、 オーバーフロー、有限でないオペランドは、現在値を変えずに拒否されます。
プロジェクトの開始と停止では、設計上すべての登録が消去されます。listenブロックを 緑の旗が押されたときの下に置き、実行ごとに必要な登録を作り直してください。