なんだか絵に描いたような「よくある質問と回答」なスレですね。(^_^;;
せっかくなのできちんと回答してみることにします。
> 画面を全部消すのにpicloadで画像を読み込んで消していますが、その時一瞬白く
> チラつきます。
> それをredrawで直せるらしいのですがうまく使えてないのか直りません。
> redrawの使い方か、画像を全部消す方法を教えてください。お願いします
メインループ内でpicloadを難度も繰り返し使わないようにしましょう。速度低下の原因にもなります。
さて、ちらつくのは描画をしている途中作業がウィンドウに表示されているのが原因です。
この途中作業を見えないようにするにはredraw命令を使います。今回はそれが上手くつかえていないという話ですね。
使い方は簡単。ループの一番初めに「redraw 0」、ループの最後から2番目に「redraw 1」とするだけです。
「await」はループの一番最後に入れます。このような感じになります。
*main
redraw 0
;この間にスクリプトを書いて絵を作る
redraw 1
await 33
goto *main
これでちらつきはなくなるはずです。
さて、ループ内でpicloadは使わないようにと書きましたが、普通は背景を画像で塗りつぶしたい場合はこんな風にします。
画像ファイル用意してないんで適当な背景を書いて画像のかわりとしました。
screen 0
title "メインウィンドウ ID = 0"
; 作業用ウィンドウ作成
screen 1 ;普通はbuffer命令を使います。今回は見えるようにscreen命令を使用。
title "背景画像呼び出し用ウィンドウ ID = 1"
;このウィンドウにpicloadで画像読み込みます。
;今回は画像ファイル用意するの面倒なので適当な文字で埋めておきました。
;画像を使いたいときはここでpicload命令を使ってください。
color 255,0,0
repeat 30
mes "BACK GROUND BACK GROUND BACK GROUND BACK GROUND BACK GROUND BACK GROUND BACK GROUND "
loop
gsel 0,1 ;メインウィンドウに作業対象を戻す
; メインループ
*main
redraw 0 ;描いてる途中を見えなくする。
color 255,255,255 : boxf : color ;前回のループでの画像を全部きれいに消す。
pos 0,0 : gcopy 1, 0,0, ginfo_winx, ginfo_winy ;背景画像などの画像を描く
;何か表示する
pos px, ginfo_winy/2
mes " /■\"
mes "(´∀`)"
px++
redraw 1 ;描きあがった画面を見えるように表示する。
await 33
goto *main