|
|
2012/7/6(Fri) 14:26:41|NO.47522
またまた教えていただきたいことがあり、質問させていただきます。
よろしくお願いします。
#module mess px, py, mx, my, ward, color_R, color_G, color_B, window_ID
//px, py は吹き出しの表示位置 = 整数
//mx, my は吹き出し内の文字の位置
//ward は吹き出し内の文字 = 文字列
//color_R, color_G, color_B は文字の色
//window_ID はウィンドウID
#deffunc mess_load
newmod new_var, mess
return
#modinit
px = 10
py = 300
mx = 15
my = 310
ward = "ああ"
color_R = 255
color_G = 255
color_B = 255
window_ID = 0
return
#modfunc _messput
buffer 99
picload "吹き出し.gif"
screen window_ID
pos px, py
gcopy 99,,,439,142
pos mx, my : color color_R, color_G, color_B
mes ward
return
#deffunc messput
_messput new_var
return
#global
mess_load
messput//ここで、pxの値などを指定して、反映(表示位置などの変更、文字の変更)をさせたいです。
上のスクリプトなのですが、
変数の値の変更をしたいのですが、どのようにすればよいのかわかりません。
例えば、
messput を使うと吹き出しが、座標(10,300)のところに描画されると思うのですが、
messput 50, 500
とすることで吹き出しが、座標(50,500)のところに描画されるようにしたいのです。
方法を教えていただけないでしょうか。
どうぞよろしくお願いします。
|
|
2012/7/6(Fri) 14:31:18|NO.47523
|
|
2012/7/6(Fri) 16:50:13|NO.47524
/*目的が判らないけどこう言う事?*/
#module mess px, py, mx, my, ward, color_R, color_G, color_B, window_ID
#deffunc mess_load int p1,int p2,int p3,int p4,str p5,int p6,int p7,int p8,int p9
newmod new_var,mess,p1,p2,p3,p4,p5,p6,p7,p8,p9
return
#modinit int p1,int p2,int p3,int p4,str p5,int p6,int p7,int p8,int p9
px = p1 :py = p2
mx = p3 :my = p4
ward = p5
color_R = p6 :color_G = p7 :color_B = p8
window_ID = p9
return
#modfunc _messput
buffer 99
boxf 0,0,100,100 ;picload "吹き出し.gif"
screen window_ID
pos px, py :gcopy 99,,,439,142
pos mx, my :color color_R, color_G, color_B :mes ward
return
/*
#modfunc messput
_messput new_var
*/
return
#global
mess_load 10, 10, 30, 30,"ABC",255,0,0,0
mess_load 100, 10,130, 30,"DEF",255,0,0,1
mess_load 100,130,130,150,"GHI",255,0,0,2
_messput new_var@mess(0)
_messput new_var@mess(1)
_messput new_var@mess(2)
mes length(new_var@mess)
|
|
2012/7/6(Fri) 16:51:57|NO.47525
とりあえず、以前から思ったこと。
なぜ、#mod 系にこだわるのかがさっぱりわからん。
とりあえず、#mod 系を使わないサンプルだけ。
#module
#deffunc mess_load
buffer 99
picload "吹き出し.gif"
color_R = 255
color_G = 255
color_B = 255
return
#deffunc messput int _p1,int _p2,str _p3
gsel ginfo(2)
pos _p1, _p2
gcopy 99,,,439,142
pos _p1+9, _p2+9 : color color_R, color_G, color_B
mes _p3
return
#global
mess_load
messput 50,250,"これはサンプルです。"
|
|
2012/7/6(Fri) 19:20:33|NO.47533
邪推かもしれないですが、
#deffunc, #modfunc の命令で引数を受け取る方法を
分かっていないようにみえます。
#module
#deffunc test int parameter
mes parameter
return
#global
test 12 //← parameter = 12 として test 命令を行う
# 詳しくは F1 ヘルプなどご参照。
変数の値を変更するには、もちろん代入を行います。
#modfunc messpos int _px, int _py
px = _px
py = _py
return
必要なら _messput の中に。
それと、Aさんのやり方ではモジュール変数を使用するメリットが
全く無くなってしまっています (結局 new_var(0) しか参照されないため)
また、#deffunc からいちいち転送するのも冗長だと思うのですが。。。
|
|
2012/7/6(Fri) 20:17:34|NO.47534
>>fortunehillさん
mess_load 100, 10, 100, 30,"ABC",255,0,0,0
そんな感じなんですが、
引数を省略しても大丈夫なようにしたいです。
>>MillkeyWelerさん
私が、#mod を使っていることに深い理由はありません。昔にみたスクリプトを参考にしながら作っていると、このようなスタイルになりました。
#mod を使っていますが、#mod と他のものの違いがよくわからないです。
>>レノスさん
・もともと数値を決めておいて(x = 10 と初めに定義して)から、代入する(のちに、x = _p2 とする)場合にエラーがでます。
[モジュール変数の指定が無効です]
#module mess px, py, ward
#deffunc mess_load
newmod new_var, mess
return
#modinit
px = 10
py = 300
ward = "ああ"
return
#modfunc _messput
buffer 99
picload "吹き出し.gif"
gsel ginfo(2)
pos px, py
gcopy 99,,,439,142
mes ward
return
#deffunc messput int _p1,int _p2,str _p3
_messput new_var
px = _p2
py = _p2
ward = _p3
return
#global
screen 0,460,450
mess_load
messput 10,10,"a"
↑こんな時です。
・モジュールの記述の仕方を覚えているだけなので、モジュール変数のメリットとかよくわからないです。
(マスターはしていません)
|
|
2012/7/6(Fri) 23:38:04|NO.47538
/*引数省略だけならマクロ噛ませるとか?上の方にあるけどモジュール変数に貯める意味が?*/
#define _mess_load(%1=10,%2=10,%3=30,%4=30,%5="ABC",%6=255,%7=0,%8=0,%9=0) \
mess_load %1,%2,%3,%4,%5,%6,%7,%8,%9
_mess_load
_messput new_var@mess(0)
|
|
2012/7/7(Sat) 02:28:20|NO.47539
>#mod を使っていますが、#mod と他のものの違いがよくわからないです。
よく分からないのなら使わないほうがいいんじゃないか。
正直俺はモジュール機能の#deffuncと#defcfunc以外は使ってないし。
#mod系のプリプロセッサで擬似クラスが作成できるみたいなんだが、
クラスの概念がよく分かっていないのなら使用はお勧めできないな。
|
|
2012/7/7(Sat) 19:23:38|NO.47543
>[モジュール変数の指定が無効です]
#modfunc で割り当てられた命令内じゃないとモジュール変数は扱えないと書いたはずだが・・・
> _messput new_var
ここで_p1等を渡して#modfunc側で代入させる必要がある
モジュール変数を扱う練習してるんじゃなければ
無理に使う必要は無いと思う
#module mess
//px, py は吹き出しの表示位置 = 整数
//mx, my は吹き出し内の文字の位置
//ward は吹き出し内の文字 = 文字列
//color_R, color_G, color_B は文字の色
//window_ID はウィンドウID
#deffunc mess_load
winid_bak=ginfo(3)
px = 10
py = 300
mx = 5 //pxに加算して文字表示位置にする
my = 10
ward = "ああ"
color_R = 255
color_G = 255
color_B = 255
window_ID = 0
buffer 99
picload "FUKIDASHI.gif"
gsel winid_bak
return
#deffunc messpos int _mx, int _my
mx = _mx
my = _my
return
#deffunc messstr str _ward
ward = _ward
return
#deffunc messcol int _color_R, int _color_G, int _color_B
color_R = _color_R
color_G = _color_G
color_B = _color_B
return
#define global messput(%1=px@mess,%2=py@mess,%3=ward@mess) _messput %1,%2,%3
#deffunc _messput int _px,int _py,str _ward
px = _px
py = _py
ward = _ward
gsel window_ID
pos px, py
gcopy 99,,,439,142
pos px+mx, py+my : color color_R, color_G, color_B
mes ward
return
#global
mess_load
messput
messput 50, 10,"aa"
messcol 255
messpos 20,20
messstr "あいうえお"
messput , 155
messputのパラメータ(px,py,ward)を省略すると事前に設定されたデータが使われる

| |
|