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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0118
のーす映画のスタッフロールのような4未解決


のーす

リンク

2012/1/18(Wed) 23:03:33|NO.44393

かなり初心者です。
映画のスタッフロールのように、メモ帳から読み込んだ文字を
下から上に流したいのですが、どうしたら良いでしょう?
文字を読み込んで、ただ表示するだけならできます。
説明が不十分だったらすみません。



この記事に返信する


あり

リンク

2012/1/19(Thu) 15:42:21|NO.44401

gcopyを使った例

screen 1, 640, 480 : cls 4 : title "コピー元" ; コピー元バッファを作成 color 255, 255, 255 : font MSGOTHIC, 24 pos 230, 0 mes "別のバッファに\n\n文字を書いておき\n" mes "表示する分だけ\n\nコピーしてくる\n" mes "という方法が\n\n一番楽な気が\n\nします\n\n\n" mes "とりあえず\n\nこんな感じで" gsel 0, 1 repeat 960 ; スクロール量分だけ繰り返す redraw 0 color 0, 0, 0 : boxf ; 画面を黒で塗りつぶす gmode 2, 640, 480 ; コピーモード・コピーサイズを指定 c_y = cnt - 480 ; コピー元のY座標を求める pos 0, 0 : gcopy 1, 0, c_y ; コピー元から表示分だけコピー redraw 1 title "コピー元Y座標=" + c_y await 16 loop



cats

リンク

2012/1/19(Thu) 23:08:46|NO.44410

これで呼び出したテキストを流します。
流し終わったらダイアログを出して終了します。

screen 0,300,300,4 title "スタッフロール" y=350 ;画面サイズより少し小さめ notesel buf noteload "TEXT.txt" ;TEXT.txtをロード sdim data, 256 ;256バイト分のバッファを確保 repeat redraw 0 color 255,255,255 :boxf :color 0,0,0 pos 10,y ;描画位置を10,Yに決める y=y-1 ;Yから1を引く(-1が大きいほど速くなる) mes buf ;ここで文字を表示 if y<noteinfo(0)-noteinfo(0)*20 :break ;流し終わったらループを抜ける await 1 ;ここの数が大きいほど遅くなる redraw 1 ;描画開始 loop dialog "全て流れました。",0,"実験" end ;終了



いなえ

リンク

2012/1/20(Fri) 10:48:45|NO.44420

質問者が自ら初心者だと書いているのについ凝ったものを作ってしまった…

とりあえず質問に対する答えとしては、
下の例の「scroll--」のように描画位置Y座標を変数に保持しておいて、
フレーム毎にその値を小さくすればOKです。


#const FONT_SIZE 10 #const MAIN_SCREEN_SX 640 #const MAIN_SCREEN_SY 480 screen 0,MAIN_SCREEN_SX,MAIN_SCREEN_SY notesel note noteload dir_exe+"\\doclib\\history.txt" maxLength=0 sdim lineText,10000 repeat notemax noteget lineText,cnt if maxLength<strlen(lineText):maxLength=strlen(lineText) loop buffer 1,FONT_SIZE*maxLength/2,FONT_SIZE font msgothic,FONT_SIZE scroll=MAIN_SCREEN_SY *main gsel redraw 0 color:boxf scroll-- repeat notemax if scroll+FONT_SIZE*cnt>=-FONT_SIZE && scroll+FONT_SIZE*cnt<MAIN_SCREEN_SY{ noteget lineText,cnt lineText=strtrim(lineText,3,'\t') gsel 1:color:boxf hsvcolor ,,limit(cos(M_PI/2*(scroll+FONT_SIZE*cnt-MAIN_SCREEN_SY/2)/(MAIN_SCREEN_SY/2+FONT_SIZE))*255,0,255) pos ,0 mes lineText gsel zoom=cos(0.01*(scroll+FONT_SIZE*cnt-MAIN_SCREEN_SY/2))*strlen(lineText)*FONT_SIZE/2 pos MAIN_SCREEN_SX/2-zoom/2,scroll+FONT_SIZE*cnt gzoom zoom,FONT_SIZE,1,0,0,strlen(lineText)*FONT_SIZE/2,FONT_SIZE,1 } loop gsel redraw await 20 goto *main



のーす

リンク

2012/1/22(Sun) 00:12:45|NO.44482

解決しました!
ありがとうございました。



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