【解決済み】スクリプトで画像を白く点滅させたいが、ウェイトが動作しない

論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

【解決済み】スクリプトで画像を白く点滅させたいが、ウェイトが動作しない

投稿記事by 論理イヌ » 2020年8月23日(日) 18:16

スクリプトで、画像を白く点滅させようとしています。
下記のコードを実行したところ、ウェイトせず一瞬でスクリプトが実行終了してしまいます。
なお、新規プロジェクトを作成し、プラグインを何も入れずに実行しています。

コード: 全て選択

$gameScreen.tintPicture(1, [0,0,0,0], 10);
this.wait(60);
console.log("waitTime");
$gameScreen.tintPicture(1, [100,100,100,100], 10);
this.wait(60);
console.log("waitTime");
$gameScreen.tintPicture(1, [0,0,0,0], 10);
this.wait(60);
console.log("waitTime");
$gameScreen.tintPicture(1, [100,100,100,100], 10);


色調のRGBをスクリプトで指定する必要があるため、どうしてもスクリプトを使用したいです。
(ピクチャの色調を変更させたあと白点滅させようと思っているので、
 今は0,0,0,0で設定しているところを、将来的に変数にする予定です。)
何か解決方法はないでしょうか?
最後に編集したユーザー 論理イヌ on 2020年8月23日(日) 20:27 [ 編集 1 回目 ]

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: スクリプトのウェイトが動作しない

投稿記事by WTR » 2020年8月23日(日) 20:03

私も同じ疑問を持って質問したことがあった気がしますが、1つのコマンドでは原理的に出来ないそうです。
コマンドを分離するしかない。分けて書けばウェイトします。

this.wait() はウェイトを実行する命令ではなく
イベントコマンドの終わりで実行するウェイトを予約するようなイメージ…と教えてもらったような。
1つのイベントコマンドの中で複数回書いても、予約が上書きされるだけで最後のヤツしか生き残らない。

正確かどうかは怪しいですが、大枠こんなところだと思います。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: スクリプトで画像を白く点滅させたいが、ウェイトが動作しない

投稿記事by 論理イヌ » 2020年8月23日(日) 20:27

回答ありがとうございます。
this.wait() はウェイトを実行する命令ではなく
イベントコマンドの終わりで実行するウェイトを予約するようなイメージ…

スクリプトを分けて書いたところ、ウェイトしてくれました。

ただ、下記のプラグインを使用しており、これをONにすると
スクリプトがつながってしまって(?)、分けてもウェイトしてくれませんでした……。
「MOTplugin - イベントのスクリプト拡張」
viewtopic.php?t=2163

一度に書くのは諦めて、RGBグレーを配列か何かで変数に入れて、
ウェイトをイベントコマンドにするなどして、分けて描こうと思います。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 【解決済み】スクリプトで画像を白く点滅させたいが、ウェイトが動作しない

投稿記事by WTR » 2020年8月23日(日) 20:34

MOTplugin - イベントのスクリプト拡張
連続で書いたスクリプトコマンドを1つのイベントコマンドとして実行する、なので
間に何かありさえすれば分離できますけどね。
適当に注釈でも挟んでおけばいいかもしれないです。
ウェイトも変数にしたい、とかあるのであればそういう手もある気がします。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
論理イヌ
記事: 186
登録日時: 2020年3月13日(金) 13:05

Re: 【解決済み】スクリプトで画像を白く点滅させたいが、ウェイトが動作しない

投稿記事by 論理イヌ » 2020年8月23日(日) 21:12

プラグインにより連続してしまう、というのは存じておりまして、
ただRGB(0,0,0)に入れる値を変数にしたいので、
続けて書けない場合は、変数に入れて取り出すしかなく……。

ウェイトの挙動について検索したところ、下記の記事が見つかりました。
なんとなく理解できたような気がします。

【解決済】イベントコマンドのスクリプト記述について
viewtopic.php?t=5152
イベントコマンドを分けるしかないです。
forの中で複数回waitは無理です。
waitの内部実装ですが、waitの数値が0より大きい場合、インタプリタを中断して他の並列で動いているイベントやゲームの更新に処理を移します。


SetWaitModeはその実、何をwaitしているのか?
https://qiita.com/EYN_kenzaki/items/f93 ... de0c046829
waitmodeはあくまでも「一つのイベントコマンドから次のイベントコマンドに進むのを止める」効果を発揮してます。

“MV:質問” へ戻る