クリックすると1から100まで数字がカチャカチャ増えていくラベルを作る。
ラベルAとはラベル
そのクリックした時は~
100回
ラベルAのテキストは回数
0.05秒待つ
100になるまで5秒かかる。
じゃあ5秒以内にまたクリックしたらどうなる?
つまり「クリックした時」のイベントでループが動いているときに
「クリックした時」が発生するとどうなるか。
実験!
実験用のプログラムは以下。
ラベル1個だとよくわからないので、5個にしてテスト。
rを1から5まで繰り返す
bbb[r]をラベルとして作成
bbb[r]→テキストは「0」
bbb[r]→タグ=r
bbb[r]→クリックした時は~
ループ様子(イベント部品→タグ)
●ループ様子(n)
100回
bbb[n]→テキストは回数
0.05秒待つ
[プログラムの内容]
・ラベルを5つ作る(bbb[1]~bbb[5])
・ラベルをクリックすると、ラベルのテキストが1→100まで変化(0.05秒おき)
このラベルbbb[1]をクリックし、テキストが50くらいの時にラベルbbb[2]をクリックするとどうなるか。
実行してラベルをぺちぺち!
[実験結果]
・1度目のクリックでラベルの数値が1.2.3...と増える
・別のラベルクリックした時、1つ目のラベルは「45」で停止
・2つ目のラベルは数値が1.2.3…100と変化
・2つ目が100になったあと、1つ目のラベルが46.47.48…100と変化
[結論]
イベント中にイベントが発生すると、最初のは一時停止、2個目が実行される。
2個目が終了すると最初やつの続きからになる。
スタックに積んで新しいイベントを先に消化するようだ。
リストのクリックでフォルダを選んで中の画像をパラパラアニメにして表示するプログラム、クリック時は~で無限ループ使っていた。
めっちゃポチポチするとスタックオーバーフローすることが予想される。
どうせ公開していないので、自分だけ気を付ける。