忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【捨丸&KID】blt 指令介紹

 

*  bit動畫
 在novel game的戰鬥場景中應該有見過類似刀劍揮舞軌跡的動畫。
 那其實是每格只有畫面數分之一大小的圖像並排在一起,將每格放大之後依序連續表示而使其變成動畫的處理。每一格其實只有實際圖像的數分之一。

*  進行bit處理時的流程
 首先必須將動畫用的圖像利用btndef命令將之讀入至記憶體中。
 然後將記憶體中的圖像切割成複數個之後在利用blt命令來連續表示。

 btndef “9x.bmp”
 blt 0,0,640,480,0,0,320,240

*  讀入動畫用圖像
 首先利用btndef命令讀入圖像。

 程式碼
 btndef 叫出圖像的文字列
 範例
 btndef “9x.bmp”

 這裡用到btn命令中也被使用到,讀取button原本圖像的btndef命令。將動畫用的圖像讀入到記憶體之中。(請參考2-7 button命令)

*  表示出圖像的一部分
 利用bit命令將圖像的一部分擴大表示。
 
 程式碼
 blt 表示於畫面時左上角的x座標,表示於畫面時左上角的y座標,表示於畫面時的寬,表示於畫面時的高,元圖像上開始讀入的x座標, 元圖像上開始讀入的y座標,元圖像讀入時的寬度,元圖像讀入時的高度
 範例
 blt 0,0,640,480,0,0,320,240

 接著使用blt命令來表示圖像。
 和SP不一樣,blt命令自己就包括了設定和表示的功能。

 blt 0,0,640,480,0,0,320,240
 0,0為動畫表示時於畫面上左上角的x,y座標。

 blt 0,0,640,480,0,0,320,240
 640,480為動畫表示時於畫面上的寬與高。

 blt 0,0,640,480,0,0,320,240
 0,0為元圖像上開始讀入的x,y座標。

 blt 0,0,640,480,0,0,320,240
 320,240為元圖像上被讀入的寬與高。

 雖然有些複雜,但是請用下面原則記住:前半的0,0,640,480為實際表示在畫面上時的相關數值,後半的0,0,320,240為讀入的原圖像的相關數值。
 上述範例中元圖像的320x240畫素會被擴大成640x480表示。
 會使用擴大表示的原因是因為當圖像會動的時候,即使畫質較低落也不會讓玩家太在意。

*  當要進行動畫表示時?
 剛剛所用的blt命令只能夠將所讀取圖像中的一部分以一張圖像表示在畫面上,這樣並不能說是動畫,因此必須要將必要格數的圖像利用blt命令不斷地更新畫面。

*  在使用過blt命令後
 由於blt命令是直接在畫面上進行繪圖,因此在結束之後圖像常常會出現一些錯亂的狀況。
 因此利用ofscpy命令將輸入blt命令更新過後的畫面圖像送至off screen buffer,先將畫面安定之後在進行叫出背景圖的動作。
程式碼範例:


btndef clear
btndef "pic\final.jpg"
csp -1
bg black,1

for %1=0 to 150 step 5

blt 0,100,600,220,670+%1,540,600,220

strsp 51,"隨便要打什麼字",800-%1*2,400,10,2,23,23,0,0,1,0,#FFFFFF
print 1

wait 50
next

ofscpy

wait 200
csp -1
bg black,9

wait 400

strsph 52,"天線寶寶~",150,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"天線寶寶~~",300,350,13,2,23,23,0,0,1,0,#FFFFFF

vsp 52,1
print 19

wait 400

vsp 53,1
print 19

wait 500

click

csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5

blt 170,0,250,450,450,500+%1,250,450

strsp 51,"海綿寶寶",600,600-%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1

wait 50
next

ofscpy

wait 200
csp -1
bg black,9

strsph 52,"派大星",400,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"章魚哥",450,350,13,2,23,23,0,0,1,0,#FFFFFF

vsp 52,1
print 19

wait 400

vsp 53,1
print 19

wait 500

click

csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5

blt 450,150,250,450,1050,1000-%1,250,450

strsp 51,"我是丁丁",80,0+%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1

wait 50
next

ofscpy

wait 200
csp -1
bg black,9

strsph 52,"也可以丟點有氣氛的",80,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"寫教學也算是一種複習",200,350,13,2,23,23,0,0,1,0,#FFFFFF

vsp 52,1
print 19

wait 400

vsp 53,1
print 19

wait 500

click

csp -1
bg black,9

strsph 52,"其實沒必要貼這麼多",304,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"但我懶得修了~~",281,350,13,2,23,23,0,0,1,0,#FFFFFF

vsp 52,1
print 19

wait 400

vsp 53,1
print 19

 

 

拍手[0回]

PR

【捨丸&KID】exbtn 擴張按鈕

 

 

 
這禮拜要來介紹exbtn這個指令的應用,exbtn為複合按鈕指令,關於如何製作按鈕請參考之前的教學,exbtn可以將多個SP圖像組合成一個按鈕群組,例如現在有SP1,SP2,SP3三個圖像,就可以利用”exbtn_d”” exbtn 1,1”” exbtn 2,2” exbtn 3,3” 製作出比較華麗的效果,祥細使用方式如下:

exbtn_d命令

 「exbtn_d」設定當滑鼠游標沒有指在任何一個button定義領域時(也就是任何一個SP圖像範圍,總之就是滑鼠沒點到按鈕的情況)的畫面表示。藉由輸入的控制文字列來對所指定的SP進行控制。
 

 程式碼
 exbtn_d 控制文字列

 範例

 exbtn_d “P1P2P3C4C5C6P7,0”
 

exbtn_d為命令本體。
為EXtraBuTtoN_Default的縮寫。
當滑鼠游標沒有放在任何一個button上時,會如控制文字列(“P1P2P3C4C5C6P7,0”)所輸入來表示圖像。
 

複合button的控制文字列
複合button的控制文字列中使用到半形英數的「C」、「P」、「M」和SP號碼。
其各自的功能如下所列。
 

C數字(SP號碼)
所指定SP號碼的圖像狀態為不顯示。C為Clear的縮寫。
 
 P數字(SP號碼)
 所指定SP號碼的圖像為顯示。P為Print的縮寫。
 P數字1(SP號碼),數字2(cell號碼)
 

 顯示號碼為數字1的SP圖像的cell2。
 
 
 
 

像這張圖就有3個cell,注意號碼是從0開始,所以cell2是最後一個分格
 S數字,(叫出音效檔案的名稱)
 發出音效。數字為channel編號。
 M數字1(SP號碼),數字2(顯示座標X) ,數字3(顯示座標Y)
 這是用來表示SP動畫,表示方式在設定SP圖像時就已經設定好了

 控制文字列的長度沒有限制。
(例文)
 “P1P2P3C4C5C6P7,0S1(SE\Chaim.wav)”
 SP1,2,3號為表示模式。SP4,5,6號為非表示模式。SP7號表示cell 0號。並且於channel 1播放Chiam.wav。
 

 請注意英文字母和阿拉伯數字之間並沒有空白,雖然因此而很不好閱讀但是請有耐心地依序閱讀。
 當想要指定所表示的cell時,並需像P7,0這樣輸入「,」。
 在出現長串文字列的地方插入「,」的話,視覺上很容易就會把它當成文字上的區隔點因此會造成閱讀的困難。但是在閱讀控制文字列的時候請記得要把「P」、「C」、「S」當成間隔點來閱讀。
 

exbtn命令
 利用「exbtn命令」所指定的button在滑鼠游標進入圖像範圍的時候,會依據控制文字列所指定SP控制狀態來執行,並且在點擊button時會取得button號碼作為回歸值。
 

 程式碼
 exbtn SP號碼,button號碼,控制文字列

 範例
 

 exbtn 1,1,”C1P2P3P4C5C6P7,1S1(SE\bell.wav)”
 

 將SP 1號設定為button 1號。
 當滑鼠游標進入button的領域時會如同控制文字列所設定來表示SP群組圖

 SP 1號非表示、SP 2號表示、SP 3號表示、SP 4號表示、SP 5號非表示、SP 6號非表示、SP 7號表示cell 1號,並且於channel 1號播放放於SE資料夾中的bell.wav。

—控制文字列的內容意義如上。
 能夠藉由控制文字列一次進行許多的指令。

Point:如果真的很難閱讀控制文字列的話
 由於控制文字列的ON、OFF很難一眼就看出來,我們在作業中可以利用Excel做出表格來管理。
 於Excel中的每個格子裡輸入P1或P7,0這樣指定一個SP的文字,然後於設定完成後在拷貝到txt檔裡。

 雖然有點像是秘技,但是ex button在控制文字列裡即使只有輸入有變化的號碼也能夠正常動作。

 exbtn_d “P1P2P3C4C5C6P7,0”
 bexbtn 1,1,“C1P2P3P4C5C6P7,1S1(SE\bell.wav)”

 button 1有產生變化的只有SP 1號、SP 4號、SP 7號以及音效

 簡略輸入
 exbtn 1,1,””C1P4P7,1S1(SE\bell.wav)

 由於只輸入有產生變化的SP號碼,因此會比較好閱讀。

 在button處理命令之後為btnwait2命令,而在這之後的流程和其他的button處理相同。利用button的回歸值代入變數之中後,以if命令來評估狀態進行條件分歧。
程式碼範例:
 


*still_afterbgm
bg black,1


lsp 51,":c;sys\logo\stillbox_1.jpg",0,370
;這邊預先載入要顯示的SP圖像
lsph 32,":a/2,0,3;sys\logo\Liao.bmp",10,20
lsph 33,":a/2,0,3;sys\logo\Sean3.jpg",10,20
lsph 31,":a/2,0,3;sys\logo\sutemaru.jpg",10,20
lsph 34,":a/2,0,3;sys\logo\kid.JPG",10,20

lsph 41,":a/2,0,3;sys\logo\sutemarutext.jpg",340,0
lsph 42,":a/2,0,3;sys\logo\liaotext.jpg",340,0
lsph 43,":a/2,0,3;sys\logo\seantext.jpg",340,0
lsph 44,":a/2,0,3;sys\logo\kidtext.jpg",340,0


lsph 21,":l/3,300,2;sys\vx_chara02_d\cat1.bmp",550,320 ;注意這是SP動畫
lsph 11,":l/2,0,3;sys\vx_chara02_d\cat3.bmp",550,320
lsph 22,":l/3,300,2;sys\vx_chara02_d\sailor1.bmp",450,320 ;注意這是SP動畫
lsph 12,":l/2,0,3;sys\vx_chara02_d\sailor3.bmp",450,320
lsph 23,":l/3,300,2;sys\vx_chara02_d\captain1.bmp",350,320 ;注意這是SP動畫
lsph 13,":l/2,0,3;sys\vx_chara02_d\captain3.bmp",350,320
lsph 24,":l/3,300,2;sys\vx_chara02_d\kid1.bmp",250,320 ;注意這是SP動畫
lsph 14,":l/2,0,3;sys\vx_chara02_d\kid3.bmp",250,320

;動畫是會一直顯示的,所以一開始不需要顯示時可以將動畫移至畫面範圍外
exbtn_d "P11P12P13P14P31,1P32,1P33,1P34,1P41,1P42,1P43,1P44,1M21,800,800M22,800,800M23,800,800M24,800,800"
;注意這邊都沒有斷行 移到SP11範圍後 將SP21動畫移置畫面內並顯示SP11圖像的cell1,可以用alpha模式制作為透明,看起來就會像消失一樣如後面例圖
exbtn 11,11,"P11,1P12P13P14P31P32,1P33,1P34,1P41P42,1P43,1P44,1M21,550,320M22,800,800M23,800,800M24,800,800"
exbtn 12,12,"P11P12,1P13P14P31,1P32P33,1P34,1P41,1P42P43,1P44,1M21,800,800M22,450,320M23,800,800M24,800,800"
exbtn 13,13,"P11P12P13,1P14P31,1P32,1P33P34,1P41,1P42,1P43P44,1M21,800,800M22,800,800M23,350,320M24,800,800"
exbtn 14,14,"P11P12P13P14,1P31,1P32,1P33,1P34P41,1P42,1P43,1P44M21,800,800M22,800,800M23,800,800M24,250,320"

btnwait2 %0


if %0=-1 btndef clear:csp -1:goto *still_exit
if %0=-10 btndef clear:csp -1:goto *still_exit

goto *still_afterbgm
 

例圖:
 
 

 

 

 

 

拍手[0回]