HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0818
気まぐれな猫redraw命令について4解決


気まぐれな猫

リンク

2008/8/18(Mon) 17:15:13|NO.18404

redraw命令についてのことです。

HSP命令をまとめたガイドを見てみたのですが・・・説明を読んでもよく分かりません。

私に分かるような説明をしてくれるとありがたいと思います。

また、こういうときに使うものだと例として示してくれると嬉しいです。

返事をお待ちにしております。



この記事に返信する


inovia

リンク

2008/8/18(Mon) 17:31:20|NO.18406

2つのスクリプトを実行していただくと分かるかと思います。

redraw 0 repeat 1000 line rnd(640),rnd(480) loop redraw 1


repeat 1000 line rnd(640),rnd(480) loop

redrawを0にすると実際の画面には書き込まれず、redrawを1にすると画面が更新されます。
これをうまく使うことによって高速に描写することが可能になり、
画面のちらつきを防止することが出来ます。
また、HSPウィンドウが描画先となるようなAPIを使った時も
redraw1を使って画面を更新する必要があります。

つまり、redraw0の時は実際の画面には書き込まれず、
見えない仮想画面に書かれていると思ってください。
redraw1になったときに仮想画面から実画面にコピーされるものと考えるのが一番簡単かと。



かっぺい

リンク

2008/8/18(Mon) 18:47:14|NO.18408

次のサンプルはどうでしょうか
repeat
color 255,255,255
boxf
pos x,y
color 0,0,0
mes"●"
stick key,15
if key&1 : x-1
if key&2 : y-1
if key&4 : x+1
if key&8 : y+1
wait 1
loop

repeat
redraw 0
color 255,255,255
boxf
pos x,y
color 0,0,0
mes"●"
stick key,15
if key&1 : x-1
if key&2 : y-1
if key&4 : x+1
if key&8 : y+1
wait 1
redraw 1
loop
上のサンプルだとちらつきますが、下のサンプルだとちらつきません。
redraw命令により、書いて消すというステップを見せないようにしているのです。
あと、画面上のものを消すときはboxfやclrobj命令を使わないと
ちらつきます。



Quiet

リンク

2008/8/18(Mon) 19:25:41|NO.18409

多分使わないと思いますが、まとめることも出来ます。

*main color 255,255,255:boxf color 0,0,0:circle 0,0,300,300 redraw 1:await 1:redraw 0 goto *main

redrawを普通にかけたのと同じです。



気まぐれな猫

リンク

2008/8/18(Mon) 23:38:18|NO.18418

inovia様、かっぺい様、Quiet様、私の質問に答えてくださってありがとうございます

分かりやすく例えを出して説明して頂いて、よく分かりました。

ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.