ここから本文です

hspの画像についての質問です。

アバター

ID非公開さん

2011/4/3010:54:34

hspの画像についての質問です。

hspで画像をマウスについてくるようにしたくて
作ってみたのがこれです。

buffer 2
picload "hontai.bmp"
repeat
redraw 2
gsel 0
cls
screen 0,500,400
x=mousex
y=mousey
pos x,y
gcopy 2,0,0,100,100
wait 1
redraw 1
loop

これを実行してみると
マウスにはついてくるんですが
ウィンドウが高速で消えて、出てきて、消えて、出てきて・・・
と、なるんです。タスクバー(?)を見るとわかります。
picloadやgcopyで画像を出すたびに
ウィンドウが消えて、出てきてから画像が表示されます。
画像を出してもウィンドウが消えないようにするには
どうしたらいいんでしょうか?

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
264
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

pan********さん

2011/4/3012:42:58

ループ毎にscreen命令とcls命令で、ウィンドウを初期化しているのが原因です。
screen命令やcls命令はウィンドウを一度掃除して綺麗にしてから出します。
掃除する時は画面上にウィンドウを映してくれないため、チカチカしてしまいます。
この場合は、screen命令はスクリプトの最初に書いてください。

ループするときは、このような画面を初期化する命令は使いません。
ただ、それだと前に表示したものが消えてくれないので、
clsの変わりに画面を白く塗りつぶしてしまいます。

color 255,255,255
boxf

これだけです。
もし背景に画像などを使う場合は、

pos 0,0
gcopy 1,0,0,100,100

(バッファ1にpicloadで画像を読み込んである場合)
とすればOKです。
ただ、このままだと表示途中の状況が見えてしまいますので、redraw 0 と redraw 1で囲んで隠します。
redraw 2よりredraw 1の方がいいでしょう。

あと、ループ毎にpicloadで画像を呼び出すときも注意が必要です。
picload "画像の場所"
のままループの中に入れると、いちいちpicloadが画像のサイズに合わせてscreenをしてくれます。
つまり、screen命令をしてるのと同じになってしまいます。
なので、ループの中にpicloadを呼び出す場合は、
picload "画像の場所",1
としてください。
といっても、ループ毎にpicloadを呼び出すのは負担がかかるのでやってはいけませんが。

アバター

質問した人からのコメント

2011/4/30 13:17:01

降参 おおおおおおおおおおお!
チカチカしなくなりました!
有難うございます!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる