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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0702
ユナンHSPで同時に違う処理をさせたい5解決


ユナン

リンク

2008/7/2(Wed) 19:50:54|NO.17124

たとえば、画像をロード、スクリーンを作成などしている間に
ひとつのスクリーンにロード中というアニメーションを表示させたい

このようなことをマルチタスクというんですか?

いまいちよくわからないんですが、こういうことはHSPでは可能でしょうか?
可能でしたらやり方を教えてください。



この記事に返信する


Quiet

リンク

2008/7/2(Wed) 20:17:19|NO.17126

dialog "*bmp",16,""
fname=refstr buffer 3 buffer 2 buffer 1:picload ""+fname+"",1 screen 0,500,500 oo=500 dim x,oo:dim y,oo repeat oo x.cnt=h h+ loop ten="" font "",50 title "ロード中" gsel 3 pos 0,0:gmode 0,500,500:gcopy 1 *main repeat oo gsel 3 pget x.cnt,y.cnt r=ginfo_r:g=ginfo_g:b=ginfo_b gsel 2 color r,g,b pset x.cnt,y.cnt y.cnt+ loop if y>500:goto *owari gsel 0 pos 0,0:gmode 0,500,500:gcopy 2 pos 150,230:mes "ロード中"+ten+"" ten+=".":if ten="....":ten="" redraw 0:await 0:redraw 1 goto *main *owari screen 0,500,500 pos 0,0:gmode 0,500,500:gcopy 2 title "完了しました。"
汚くてすいません。

画像の色を一つづつ取得し、それを1ドットづつ表示しているだけですが
(かなり無駄なことですが一応ロード中ということで)
こういうことでしょうか?



774

リンク

2008/7/2(Wed) 20:22:32|NO.17127


redraw 0 color 0,0,0:boxf color 255,255,255:pos 10,10:mes "Now Loading..." redraw 1 noteload "" redraw 0 color 0,0,0:boxf color 255,255,255:pos 10,10:mes "O.K." redraw 1 stop
ロード中がどれくらい終わったか、などを表示するには
1ファイル読み込む度に画面を書き換えればOKです。



ユナン

リンク

2008/7/2(Wed) 20:43:45|NO.17128

>>Quietさん
おー、なんか激しいですが・・・。
でも面白そうなものなのでどこかで使わせてもらいます^^
ありがとうございます。

>>774さん

ロードしている途中に入れるというやり方ですね^^
了解です。ありがとうございます。



As

リンク

2008/7/2(Wed) 20:47:47|NO.17129

HSPでは、マルチスレッドを関数として扱うことができないため、そのようなことを行うためには、
なんらかのファイルを読み込む際に、ファイルを分割して読み込みを行い、その分割の工程の
間々で、アニメーション表示を行う方法がとられます。
一応、WM_TIMERをつかった方法もあります。



#define WM_TIMER $00000113 #uselib "user32.dll" #func SetTimer "SetTimer" int,int,int,int #func KillTimer "KillTimer" int,int #undef bload #define bload(%1, %2, %3,%4) title ""+%1+"をロード中 ロードされるサイズ:"+%3+" オフセット:"+%4 screen 0,ginfo_dispx,20,4,0,ginfo_winx>>1 FileSize=12000 //ファイルサイズ partition=50 //分割数 gaugeValue=double(ginfo_winx)/double(FileSize/partition) //ゲージの増加量 repeat double(FileSize)/double(partition) bload "Dummy.txt",data, partition, cnt*partition //ファイルの分割読み込みのつもり boxf 0,0,gaugeValue*cnt,ginfo_winy wait 1 loop title "ロード完了!" color 255,255,255 sysfont 17 pos ginfo_winx-100>>1, ginfo_winy-21>>1 : mes "ロードが完了しました" wait 200 cls oncmd gosub *ON_WM_TIMER, WM_TIMER SetTimer hwnd, 1,30 bload "Dummy.txt",data, FileSize, 0 //ファイル一括読み込みのつもり repeat 1000 //読み込みに時間がかかっているつもり wait 1 loop KillTimer hwnd, 1 title "ロード完了!" stop *ON_WM_TIMER color 255,255,255 boxf count-20,0,count,20 color boxf count,0,count+20,20 if count>=ginfo_winx:count=0 count+10 return



mm

リンク

2008/7/3(Thu) 08:39:01|NO.17132

もし、ロード中というアニメ表示が目的なら、アニメーションgifを使う手もあるかと。
それでしたらkpanさんの「MCIによるGIFファイル表示サンプルソース」が参考になります。
もちろんアニメgifは別途作成してください。



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