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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0530
T.K画像のよい消し方13解決


T.K

リンク

2007/5/30(Wed) 23:51:09|NO.8644

画像を画像の上で消すにはどうしたらいいんですか?[cls]などを使うとちかちかしますし、
背景(画像)で消してもちかちかします。ちかちかしないで消す方法は無いのでしょうか。
教えてください。
ちなみに↓が問題のやつです。
   
    x=280 : y=200 picload "背景.gmp",1 repeat     cls pos x,y picload "カーソル(↑).gif",1 getkey ue, 38 getkey st, 40 getkey mg, 39 getkey hdr, 37 if (ue == 1) : y=y-2 if (st == 1) : y=y+2 if (mg == 1) : x=x+2 if (hdr == 1) : x=x-2 wait 1 : loop



この記事に返信する


eller

リンク

2007/5/31(Thu) 00:12:54|NO.8648

redrawを使ってください。
しかし、googleや過去ログで「ちかちか」を検索してみましたか?T.Kさん自身が過去に同じような質問をしていますよ。
質問する前にまずご自分で考えて、調べてみてくださいね。それが上達の近道でもあります。

http://hsp.tv/play/pforum.php?mode=all&num=7703



GENKI

リンク

2007/5/31(Thu) 01:18:23|NO.8650

とりあえず、まとめたものがあるので参考にどうぞ。
http://hspwiki.tm.land.to/?HSP%B9%D6%BA%C2%2F%B4%F0%CB%DC%C5%AA%A4%CA%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%A5%D1%A5%BF%A1%BC%A5%F3

せめてググろう。出来れば過去ログあさろう。よければHSPには付属のサンプルもあるからそっちも参考に。

追伸:
 メインループ内でpicload使うと遅いのであんまりよくないですよ。
画像はbufferに読み込んで、gcopyでコピーしてきたほうがいいです。
詳細はHSP3付属のサンプルとネットで検索。あと掲示板の過去ログにもあると思います。



T.K

リンク

2007/5/31(Thu) 22:10:16|NO.8656

一部分だけ消去する方法がいまいちよく分かりません。



eller

リンク

2007/5/31(Thu) 23:05:01|NO.8660

boxf命令は第1〜第4パラメータを渡すことで画面の一部分だけを塗りつぶすことが可能です。
背景に画像などを使用している場合はpos命令とgcopy命令を用いることになるでしょう。



GENKI

リンク

2007/6/1(Fri) 19:25:46|NO.8688

> 一部分だけ消去する方法がいまいちよく分かりません。

 「消去」ではなく、消したい画像の上から背景の色で塗りつぶす。
と考えてください。
壁の落書きを上からペンキを塗って消す(塗りつぶして見えなくする)ようなイメージです。


> 一部分だけ消去

 おそらくカーソル画像を描画した部分だけを消したいのだと思います。
(背景画像を残したいのかな?一部消去が出来たとしても残像残ってしまっていい結果にはなりませんが。)
「基本的なスクリプトのパターン」のアニメーションの解説の「画面初期化」の項目を参照してみてください。
http://hspwiki.tm.land.to/?HSP%B9%D6%BA%C2%2F%B4%F0%CB%DC%C5%AA%A4%CA%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%A5%D1%A5%BF%A1%BC%A5%F3#m9d5f1f5

 提示されているスクリプトは、背景に画像を使用しているので、リンク先で
紹介されていない方法を使用する必要があります。上記の回答およびリンク先
ではちょっと情報不足だったようです。すみません。
 今回のように背景に画像を使用している場合は、ウィンドウ内をboxfで塗り
つぶすのではなく背景画像でウィンドウ内を塗りつぶしてください。
やり方は前のレスでも書きましたが、bufferとgcopyを使用する方法です。



T.K

リンク

2007/6/15(Fri) 21:27:07|NO.8950

遅くなってすみませんが、やっぱしちかちかします。



f

リンク

2007/6/15(Fri) 21:55:46|NO.8954

ちょっと、

「対策をした(であろう)けれどもちかちかするスクリプト」

に興味があるんだが、見せてもらえまいか。



GENKI

リンク

2007/6/15(Fri) 23:25:47|NO.8961

 何か説明足りなかったのかな…。私もスクリプトみたいです。
ループ内にpicloadが入ってたりしませんか?



T.K

リンク

2007/6/16(Sat) 00:18:39|NO.8963

buffer 1
screen 0
repeat
getkey u, 38
getkey s, 40
getkey m, 39
getkey h, 37
if u==1:y=y-3
if s==1:y=y+3
if m==1:x=x+3
if h==1:x=x-3
pos x, y
picload "picutya//jiki.gif",1
buffer 1
picload "picutya//haikei.bmp",1
screen 0
gcopy 1, 0, 0, 640, 480
await 1 : loop



GENKI

リンク

2007/6/16(Sat) 00:52:14|NO.8964

 あー!全く参考にされてないー!_| ̄|○ 説明悪かったかな…。
スクリプト提示ありがとうございます。

 しかし…、そういうことですか。スクリプト、納得しました。
「画面の初期化」を「ウィンドウの初期化」と勘違いしたわけですね。
「画面の初期化」というのは、要するに見た目の話で、ウィンドウ内を単一色で塗りつぶして絵や文字を消してしまうことです。
ループ内でscreen命令で「ウィンドウを初期化」することではありません。
画面のちらつきはループ内で何度もウィンドウを初期化していることが原因です。
 やっぱり画像ファイルを使った場合の解説もHSP開発Wikiに加えないといけないですね。後日やっときます。

 それと、T.Kさんはbuffer(仮想画面)の概念が理解できていないようですね。
これも説明加えとこう…。
今回はとりあえずサンプル書いたので、これをいじりつつ、このスレッドのレスを参考にしつつ、意味をよーく考えてみてください。


;ウィンドウID 1 ;buffer 1 ;「screen 1」をコメントにして、この行のコメントを外すと余計なウィンドウは見えません。 screen 1 ;buffer命令の代わりにscreen命令に置き換えると理解しやすいです。 picload "picutya//haikei.bmp",1 ;ウィンドウID 0 screen 0 ;メインループ repeat redraw 0 ;画面の初期化(背景画像で初期化) pos 0,0 gcopy 1, 0, 0, 640, 480 ;自機の操作 getkey u, 38 getkey s, 40 getkey m, 39 getkey h, 37 if u==1:y=y-3 if s==1:y=y+3 if m==1:x=x+3 if h==1:x=x-3 ;自機の描画 pos x, y mes "aa" redraw 1 await 1 loop


 このスレッドはHSP開発Wikiの記事改善におおいに役立ちそうです。
T.Kさんに感謝。



T.K

リンク

2007/6/16(Sat) 18:53:25|NO.8972

ありがとうございます。さっそくやってみます。



T.K

リンク

2007/6/21(Thu) 02:27:58|NO.9046

おくれおくれすみません。ちかちかが無くなりました。



T.K

リンク

2007/6/26(Tue) 00:15:39|NO.9134

チェックするの忘れてまして。すみません。



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