今回は、以前投稿した「クラウド変数を使ってランキングゲームを作ってみよう」の記事に関する補足的な内容になります。
以下のリンクから、記事に目を通して頂くことで、より理解が深まると思います。
変数の処理の落とし穴
「クラウド変数を使ってランキングゲームを作ってみよう」の記事 では、5つのクラウド変数を使用し、トラブルに備えてリセットボタンを作成しました。
2位~5位の変数が「0」になってしまう問題を解決するために追加したコードでしたが、実際にクラウド変数のデータを見ると、別の問題が見えてきました。
画像のように、2位~4位が0(黄色の枠)になっていたり、3位~5位が0(緑の枠)になっていたり、1位と5位しか表示されていない(オレンジの枠)状態で、正常に動作していない気配がします。
なお、クラウド変数のデータを見たい場合は、作品の画面で「クラウド変数(データを見る)」をクリックすることで表示されます。
ただし、作成してすぐは何も表示されないので、データが反映されるまで数分から数時間程度待ってから確認するようにしてください。
変数を確認してみよう
ここでは「通常の変数」と「クラウド変数」の動作の違いを見てみようと思います。
上記のコードは「緑の旗を押すと変数を0にする」「左向き矢印=通常の変数の値を変える」「右向き矢印=クラウド変数の値を変える」というものです。
実行して、右と左の矢印を押すと見た目は変数に値が入っています。
しかし、クラウド変数をチェックすると、クラウドテスト2~4が表示されません。
「1秒待つ」を正しく使う
まず、原因についてですが、スクラッチの画面内では変数に数値を代入しているだけなので、簡単な処理としてすぐに実行されます。
しかし、そのデータをクラウドに送るとなると処理が一瞬過ぎて、途中に処理漏れが発生してしまっているのです。
この現象について、詳しく解説をすると長くなってしまうので、簡単に以下のように覚えてしまいましょう。
- 通常の変数:自分のパソコンの中(スクラッチの画面)だけの処理→すぐに完了
- クラウド変数:スクラッチの運営元にデータを送信して保存してもらう→時間が掛かる
この現象はクラウド変数を1つだけ使用している場合は問題になりませんが、今回のように5つものデータを送信する際に問題となります。
処理をスムーズに正確に実行出来るようにコードを以下のように変更してみましょう。
処理と処理の間に「1秒待つ」を追加します。
実際にクラウド変数のデータを見ると、テスト1~5まで正確に反映されていることが確認出来ます。
「1秒待つ」のが長すぎると感じる場合は「0.5秒」などにして、データが反映されるかを確認しながら慎重に変更してみて下さい。
まとめ
少し難しい内容になってしまいましたが、今回記事にした内容は、パッと見では気づきにくいトラブルです。
スクラッチのクラウド変数については、ネット上の情報も多くないため、この記事を参考にトラブルを解決してみて下さい。
また、「1秒待つ」のブロックは、クラウド変数以外にも使う場面が多くあります。
作品を作っていて、挙動がおかしいと感じた場合、処理が一瞬で行われていることが原因であることが多いです。
そんな時は、この内容を思い出しながら、必要な箇所にブロックを追加してみて下さい(*^-^*)
コメント