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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0817
☀SUNSHINE画面のちらつき7解決


☀SUNSHINE

リンク

2012/8/17(Fri) 21:56:48|NO.48627

時計の背景に画像を表記したいのですが
時間が変わるたびに画像がちらつきます

redrawを入れてみたのですがそれでもちらつきます

*main1 picload "無題2.bmp" pos 0,0 ; 文字を出す座標 redraw 0 d1=gettime(0) ; 年を取得 d2=gettime(1) ; 月を取得 d3=gettime(3) ; 日を取得 t1=gettime(4) ; 時を取得 t2=gettime(5) ; 分を取得 t3=gettime(6) ; 秒を取得 font msgothic,30,1 ; 文字サイズを指定 color 255,0,255 ; 文字の色 mes ""+d1+"年"+d2+"月"+d3+"日" ; 年、月、日を表示 mes ""+t1+":"+t2+":"+t3+"" ; 時、分、秒を表示 redraw 1 wait 100 ; 1秒ウエイトする goto *main1 ; 無限ループ

ご指摘お願いします



この記事に返信する


大富豪A

リンク

2012/8/17(Fri) 22:26:02|NO.48628

redraw 0を最初にいれてみてください。



GENKI

リンク

2012/8/17(Fri) 23:09:21|NO.48631

> redraw 0を最初にいれてみてください。

不十分です。
picloadの画像ロードモードを1にしておく必要もあります。理由はためしてみると一目瞭然なので省略。

*main1 redraw 0 picload "無題2.bmp" , 1 ...

以上が必要最低限です。

さらに言えば…。
picloadは実行されるたびにハードディスクにファイルを読みに行くので、メインループ内で使用すると重くなる原因になります。
そのため普通はgcopyなどを併用したりするのですが…現状で支障なければ自分がわかりやすいやり方で進めた方がいいでしょう。
ということでこの説明は省略。



☀SUNSHINE

リンク

2012/8/18(Sat) 07:26:43|NO.48642


redraw 0 picload "無題2.bmp" , 1 pos 0,0 d1=gettime(0) d2=gettime(1) d3=gettime(3) t1=gettime(4) t2=gettime(5) t3=gettime(6) font msgothic,30,1 color 255,0,255 mes ""+d1+"年"+d2+"月"+d3+"日" mes ""+t1+":"+t2+":"+t3+"" redraw 1 wait 100 goto *main1

にしたのですが悪化しました^^;
画像モードを1にしたら用意した画像サイズは500,350なのですがその周りに余白ができました
。あと文字もかぶります。(boxfを使って解決できると思いますが)



大富豪A(代理人)

リンク

2012/8/18(Sat) 07:58:42|NO.48643

えーと、

buffer 1 picload "無題2" screen ,500.350 *main redraw 0 gcopy 1,0,0,500,350
にしてみてください。



大富豪A

リンク

2012/8/18(Sat) 08:25:05|NO.48644

連投失礼します。

gcopyの前にpos 0,0をしてください。



YSR

リンク

2012/8/18(Sat) 08:33:01|NO.48645

>☀SUNSHINEさん
NO.48642を実行してみたけど……ごめん、ボロクソ言うぜ?

・なんで画像の位置がいきなりズレるんだよ!  (mes命令を実行するとかれんとポジションが下にズレるって知らないの?) ・そもそもposとpicloadの位置逆だろJK…… ・「毎回picloadすると処理が重くなる」って、HSPの入門書に書いてなかった? ・font命令も、mesで表示するのが数字だけ(フォント設定が1種類のみ)なら一回呼べば十分 ・GENKIさんもなんでこのコードでpicload "",1推すんだよバカか!  (結局ID0の画面が元サイズの640x480のママじゃねーか) ・結論:ある程度は自分で考える癖を付けよう

以上を踏まえた上で全面的に書きなおすとこんな感じ。

;準備 ;バッファに画像を一旦読み込む buffer 1 :picload "test.bmp" ;ウィンドウを準備 screen 0,500,350 ;フォント設定 font msgothic,30,1 color 255,0,255 ;メインループ *main1 redraw 0 ;画面更新を待機 pos 0,0 :gcopy 1,0,0,500,350 ;バッファ画像を転送 ;日時を取得(変数名を分かりやすくした) year=gettime(0) :month=gettime(1) :day=gettime(3) hour=gettime(4) :minute=gettime(5) :second=gettime(6) ;日時を表示 mes ""+year+"年"+month+"月"+day+"日" mes ""+hour+":"+minute+":"+second redraw 1 ;画面更新 wait 100 goto *main1
ちなみにこれは、画像サイズが500x350前提のコードだからね?
画像サイズごとに自動リサイズしたい場合は、
>screen 0,500,350

>winx=ginfo(12) :winy=ginfo(13) :screen 0,winx,winy
に、
>pos 0,0 :gcopy 1,0,0,500,350

>pos 0,0 :gcopy 1,0,0,winx,winy
に書き換えること。なんでかって?
ginfo命令とgcopy命令についてのヘルプを見たら分かると思うよ!



☀SUNSHINE

リンク

2012/8/18(Sat) 08:54:29|NO.48646

>大富豪Aさん
ありがとうございます^^screenのところを0,500,350にしたら完ぺきでした^^

>YSR
ソースまで書いていただきありがとうございます^^
ですがGENKIさんは善意で回答してくださっているのに「バカ」とはあまりにも失礼すぎると
思いますのでやめてください。



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