|
|
2007/3/11(Sun) 23:23:29|NO.6215
文字のフェードインはどうやってするのですか?
過去ログを検索しましたが出てきませんでした。
フェードインってもともとHSPの機能ではないですよね?
|
|
2007/3/12(Mon) 03:00:29|NO.6218
>フェードインってもともとHSPの機能ではないですよね?
文字限定などのフェードイン機能はありませんが
半透明コピー等を使えば大抵の事は出来ます。
color:boxf :黒で塗りつぶし
font "MS 明朝",64,1+2
repeat 255
color cnt,cnt,cnt ;徐々に白にしていく
pos 80,200
mes "フェードイン "
wait 1
loop
buffer 1
picload dir_exe+"\\sample\\demo\\sky_bg.jpg"
gsel 0 ;操作先を screen 0 に
pos 0,0
repeat 100
redraw 0
gmode 3,,,cnt ;半透明設定
gcopy 1,0,0,640,480 ;buffer 1に読み込んだ画像を半透明コピーを繰り返して文字を消す
redraw 1
wait 1
loop
buffer 2
color:boxf
font "MS ゴシック",80,1+2
color 255,255,255
pos 50,150
mes "フェードイン " ;buffer 2に白い文字列を書き込み
gsel 0
pos 0,0
color
repeat 256,1
redraw 2
gmode 0
gcopy 1,0,0,640,480 ;buffer 1に読み込んだ画像をコピーして前回の映像に上書き
gmode 4,,,cnt ;指定色を透明色にして半透明設定
gcopy 2,0,0,640,480 ;buffer 2に書き込んだ文字をブレンド率を上げながらコピー
redraw 1
wait 1
loop
|
|
2007/3/12(Mon) 03:22:18|NO.6219
実行してみましたが下のようなエラーが出ました。
error 2 : 文法が間違っています (1行目)
どうしてでしょうか・・・?
|
|
2007/3/12(Mon) 03:25:22|NO.6220
おそらく、
color:boxf :黒で塗りつぶし
ではなく、
color:boxf ;黒で塗りつぶし
の間違いでは無いかと思いますよ。
|
|
2007/3/12(Mon) 03:28:13|NO.6221
ごめん(^^;
(コピペしてから追加したしたから気が付かなかった)
>color:boxf :黒で塗りつぶし
の :黒で塗りつぶし がコメントアウトになって無かった・・・
: を ; これに変えるか :黒で塗りつぶし を削除してください
|
|
2007/3/12(Mon) 05:17:41|NO.6222
のんびりと書いてたらもう解決っぽい・・・。
ちょっと長いけどせっかく書いたので一応置いときます。
でもやってる事は大体同じです。
//--文字の色でフェードする--//
//フェードイン
font "",72
repeat 255
pos 144,204 :color 255-cnt,255-cnt,255-cnt :mes "フェードイン"
await 1
loop
//画面を白色で塗りつぶす
color 255,255,255 :boxf
//フェードアウト
repeat 255
pos 115,204 :color cnt,cnt,cnt :mes "フェードアウト"
await 1
loop
//フェードイン&アウト
repeat 255*2
if cnt<=255 :cnt2=255-cnt :else :cnt2++
pos 33,204 :color cnt2,cnt2,255 :mes "フェードイン&アウト"
await 1
loop
//--文字を画像としてフェードする--//
//背景作成
buffer 1,640,480
repeat 20*20
x=cnt\20
y=cnt/20
color 255/20*y,255-255/20*x,255/20*x
if (x+y)&1 {boxf x*32,y*24,(x+1)*32,(y+1)*24}
loop
//文字画像を作成
buffer 2,600,72
font "",72 :color 255,0,255 :mes "フェードイン&アウト"
//背景をフェードイン
gsel 0
repeat 33
redraw 0
color 255,255,255 :boxf
gmode 3,,,cnt*8 :pos 0,0 :gcopy 1,0,0,640,480
redraw 1
wait 8
loop
//フェードイン&アウト
cnt2=2 :color 255,255,255
repeat 64*2
redraw 0
if cnt<64 :cnt2++ :else :cnt2--
gmode 0 :pos 0,0 :gcopy 1,0,0,640,480
gmode 4,,,cnt2*2 :pos 33,150+cnt :gcopy 2,0,0,575,72
redraw 1
wait 1
loop
//背景をフェードアウト
repeat 33
redraw 0
color 255,255,255 :boxf
gmode 3,,,256-cnt*8 :pos 0,0 :gcopy 1,0,0,640,480
redraw 1
wait 8
loop
color :pos 221,204 :mes "終わり"
| |
|
2007/3/12(Mon) 13:52:32|NO.6227
HSPは色々便利な命令が沢山用意されていますが、
それでも命令1つでやりたい事が出来る事はほとんどありません
大抵はいくつかの命令や関数を組みあわせて欲しい機能を実現しています。
そのかわり標準命令などを組み合わせ自分で命令を作る事は出来ます。
それで簡単な物ですが一応作って見ました。
#module
//mesfade txt,fade,type,fname,fsize,fstyle
//txt: 文表示字 , fade: フェードの速さ
//type: 0=IN 1=OUT 2=IN&OUT
//fname: 書体 , fsize: フォントサイズ , fstyle: フォントスタイル
#deffunc mesfade str txt,int fade,int type,str fname,int fsize,int fstyle
//各データをバックアップ
id=ginfo_sel
posx=ginfo(22)
posy=ginfo(23)
r=ginfo_r
g=ginfo_g
b=ginfo_b
mref bmscr,67
gx=bmscr(33)
gy=bmscr(34)
mode=bmscr(35)
rate=bmscr(65)
//文字の全体サイズを取得して文字画像作成
buffer 1,0,0
font fname,fsize,fstyle :mes txt :mesx=ginfo_mesx+fsize/2 :mesy=ginfo_mesy
buffer 1,mesx,mesy
font fname,fsize,fstyle :color r,g,b :mes txt
//コピー先画面取得
buffer 2,mesx,mesy :gcopy 0,posx,posy,mesx,mesy
//操作先画面を元に戻して、白を透明色に
gsel id
color 255,255,255
//フェードイン
if type=0|type=2 {
repeat fade,1
redraw 0
blend=256.0/fade*cnt
gmode 0 :pos posx,posy :gcopy 2,0,0,mesx,mesy
gmode 4,,,blend :pos posx,posy :gcopy 1,0,0,mesx,mesy
redraw 1
await 16
loop
}
//フェードアウト
if type=1|type=2 {
repeat fade,1
redraw 0
blend=255-256.0/fade*cnt
gmode 0 :pos posx,posy :gcopy 2,0,0,mesx,mesy
gmode 4,,,blend :pos posx,posy :gcopy 1,0,0,mesx,mesy
redraw 1
await 16
loop
}
//データを元に戻す
gmode mode,gx,gy,rate
color r,g,b
pos posx,posy+mesy
return
#global
//----ここからメイン----//
randomize
repeat 100
pos rnd(600),rnd(400)
color rnd(4)*64,rnd(4)*64,rnd(4)*64
mesfade ""+cnt,rnd(20)+20,2,"",rnd(30)+42,1<<rnd(3)
wait 4
loop
| |
|
2007/3/12(Mon) 18:22:41|NO.6231
皆様ありがとうございました。
迷惑かけてすいませんでした。
これからもお願いします。
|
|