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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0708
はんげつ!(´・ω・`)チカチカ。早めに回答お願いします!!7解決


はんげつ!

リンク

2017/7/8(Sat) 20:21:31|NO.80541

(´・ω・`)をマウスでうごかすスクリプトです。
チカチカするのが気になります。
どうにかできませんか?

ソース

x = 300
y = 0
repeat ;ループ開始
c_x = mousex
c_y = mousey
if mousex = 0 and mousey = 0 {
pos x,y
}else{
x = c_x
y = c_y
pos mousex,mousey

}
if 140 > x {pos 140,y}
if x > 440 {pos 440,y}
mes"(´・ω・`)"
cls
await 10
loop


へたくそなのでわかりづらいです。
ごめんなさい。



この記事に返信する


tds12

リンク

2017/7/8(Sat) 20:42:07|NO.80542

clsやめて表示部分をこうする。

redraw 0 color 255,255,255 boxf color 0,0,0 mes"(´・ω・`)" redraw 1
clsはそのスクリーンを全部リセットしたい時だけ使いましょう。
オブジェクトを消したいときはclrobj、
絵を消したいときはcolor 背景色:boxf:color 前景色、
このときカレントポジションなどは初期化されないので必要ならpos 位置、
あと描画命令はredraw 0〜redraw 1で囲むとちらつかない。



暇人

リンク

2017/7/8(Sat) 20:42:15|NO.80543

clsはグラフィックのクリア以外も色々初期化してしまうので
ウィンドウ製作時に戻す以外の時にはあまり使わない

boxfとかgradfやgcopy等使って上書きする
で、上書き中が見えてしまうとまたちらつきが起きるので

redraw 0
↑と↓の間に描画命令を書くと上書中が見えなくなる

redraw 1

こんな感じ

x = 300 y = 0 repeat ;ループ開始 redraw 0 gradf 0,0,640,480,1,$8888,$666666 c_x = mousex c_y = mousey if mousex = 0 and mousey = 0 { pos x,y }else{ x = c_x y = c_y pos mousex,mousey } if 140 > x {pos 140,y} if x > 440 {pos 440,y} mes"(´・ω・`)" redraw 1 await 10 loop



チャーくん

リンク

2017/7/8(Sat) 20:45:55|NO.80544

スクリプトを載せるときは、<pre>と</pre>(小文字、<と>は半角)
で囲むと青くなって見やすくなります。
ループ中は、clsを使うよりも

repeat ;ループ開始 redraw 0 ;次にredraw 1(redrawのみでも可)が来るまで画面に反映させない color 255, 255, 255 ;色は好きな色で boxf ;画面全体を塗りつぶす //ここからやりたいことを c_x = mousex c_y = mousey if c_x != 0 and c_y != 0 { ;!= は=の逆(c_xが0でない みたいな) x = c_x y = c_y } pos x, y if 140 > x : pos 140, y if x > 440 : pos 440, y color 0, 0, 0 ;色を指定しておかないと背景と同じ色になる mes"(´・ω・`)" //ここまで redraw ;画面を書き換える await 10 ;待ち時間を(1/1000秒)で これも好きな値で loop
(勝手に中身を書き換えてしまったので見ずらいかもしれませんが)
cls はボタンや入力ボックスなどの「オブジェクト」を一斉削除するときなどに使います。
こんな感じでredraw0 ~ redrawを使うとチカチカしなくなります。



Cronus

リンク

2017/7/8(Sat) 21:00:00|NO.80545

参考っていうかキーワード(?)
https://www.bing.com/search?q=hsp+%E7%94%BB%E9%9D%A2%E3%81%8C%E3%81%A1%E3%82%89%E3%81%A4%E3%81%8F&qs=n&form=QBRE&sp=-1&pq=hsp+%E7%94%BB%E9%9D%A2%E3%81%8C%E3%81%A1%E3%82%89%E3%81%A4%E3%81%8F&sc=0-11&sk=&cvid=2E17712C3E874FC198EC8BB3F5BF7A3D
clsでゲームを作るのはおすすめしません。
redrawとboxf命令を利用して下さい。

はんげつ!さんのスクリプトを修正しました。

//======================= // 変数宣言 //======================= x = 300 y = 0 //======================= // メインループ //======================= repeat //======================= // 描画の範囲開始 // ======================= redraw 0 //======================= // 背景色設定 //======================= color 255, 255, 255 boxf ;boxfと背景の色を指定しないとちらつく //======================= // 自機の座標設定 //======================= c_x = mousex c_y = mousey if mousex = 0 and mousey = 0 { pos x,y }else{ x = c_x y = c_y pos mousex,mousey } if 140 > x { pos 140,y } if x > 440 { pos 440,y } //======================= // 自機を描画 //======================= color 0, 0, 0 mes"(´・ω・`)" //======================= // 描画の範囲終了 //======================= redraw 1 //時間待ち await 10 //ループ loop



Cronus

リンク

2017/7/8(Sat) 21:01:19|NO.80546

スレ書いている間に3人って...早っ!!(笑)



GENKI

リンク

2017/7/9(Sun) 01:46:18|NO.80547

みなさんがすでに説明されているとおりclsやめてredrawとboxf使えば解決です。
ということで解説はこちら。
https://wiki.hsp.moe/HSP%E8%AC%9B%E5%BA%A7%EF%BC%8F%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3.html



あらも

リンク

2017/7/9(Sun) 20:40:14|NO.80549

自分たしか別サイトで同質問を回答したはずなんですが……



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