YU-RIS サポート掲示板

0467 助けて下さい!FONTINFO[]での失敗
投稿者:Deathworks 2006/05/27(土) 19:01

こんにちは、Deathworksです。

他のレスに答える前にただいま出た問題について質問を出したいと思います。運がよければ、今日でも解決してもらえるようにと思います。他のレスの答えはこの後で書きますから、この無礼さを見逃して下さい。

さ〜て、問題はFONTの色です。メニュールーチンでちゃんとFONTINFOを使ってグローバルの変数に助けて、メニューの終わりでFONTを使って戻すつもりでしたけど、結果的に正体不明のオレンジーぽいの色になってしまいます。もしかしたら、ルーチンでどこかに間違いがあるかも知りませんから、ルーチンの全体をここに書き込みます(ルーチンが自分だけのファイルの中にありますから、グローバルと自分のローカルの変数だけを使えます)。問題の変数は@DW_Menu_Color_Storedです。

LABEL[#="DW_Menu01"]
//
// 基本的のメニューのあつかい
//
//
INT[@I=0]
INT[@DW_Menu_Max_Value=@DW_Menu_Size-1]
STR[$DW_Local_Dummy=""]
FONTINFO[LET=@DW_Menu_Color_Stored COLOR=1]
LOOP[SET=@DW_Menu_Size]
TEXT[NO=@DW_Menu_Layer_Number(@I)]
\[p]_[$DW_Local_Dummy]
CG[NO=@DW_Menu_Layer_Number(@I) X=@DW_Menu_Layer_X(@I) Y=@DW_Menu_Layer_Y(@I) E=1]
@I+=1
LOOPEND[]


LABEL[#="DW_Menu01_Loop02"]
@I=0
LOOP[SET=@DW_Menu_Size]
TEXT[NO=@DW_Menu_Layer_Number(@I)]
IF[@DW_Menu_Selection == @I]
FONT[COLOR=@DW_Menu_Color_Selection]
ELSE[]
FONT[COLOR=@DW_Menu_Color_Normal]
IFEND[]
\[p]_[$DW_Menu_Entries(@I)]
@I+=1
LOOPEND[]
IF[(@DW_DOWN == 0) && ((@_PAD_DOWN(@DW_Pad_Number) > 0) || (@_KEY_DOWN > 0))]
@DW_DOWN=1
IF[@DW_Menu_Selection < @DW_Menu_Max_Value]
@DW_Menu_Selection+=1
IFEND[]
ELSE[(@DW_UP == 0) && ((@_PAD_UP(@DW_Pad_Number) > 0) || (@_KEY_UP > 0))]
@DW_UP=1
IF[@DW_Menu_Selection > 0]
@DW_Menu_Selection-=1
IFEND[]
ELSE[(@DW_MARU == 0)&&((\[Button_Maru] > 0)||(\[Key_Maru] > 0))]
@DW_MARU = 1
TEXT[NO=250]//このラインは後で消えるはずです。
GOSUB[#="DW_Menu_01_Owarikata"]
RETURN[]
ELSE[(@DW_BATU == 0)&&((\[Button_Batu] > 0)||(\[Key_Batu] > 0))]
@DW_BATU = 1
@DW_Menu_Selection = -1
TEXT[NO=250]//このラインは後で消えるはずです。
GOSUB[#="DW_Menu_01_Owarikata"]
RETURN[]
IFEND[]
IF[(@DW_LEFT != 0) && ((@_PAD_LEFT(@DW_Pad_Number) < 0)&&(@_KEY_LEFT < 0))]
@DW_LEFT=0
IFEND[]
IF[(@DW_RIGHT != 0) && ((@_PAD_RIGHT(@DW_Pad_Number) < 0)&&(@_KEY_RIGHT < 0))]
@DW_RIGHT=0
IFEND[]
IF[(@DW_DOWN != 0) && ((@_PAD_DOWN(@DW_Pad_Number) < 0)&&(@_KEY_DOWN < 0))]
@DW_DOWN=0
IFEND[]
IF[(@DW_UP != 0) && ((@_PAD_UP(@DW_Pad_Number) < 0)&&(@_KEY_UP < 0))]
@DW_UP=0
IFEND[]
IF[(@DW_MARU != 0) && ((\[Button_Maru] < 0)&&(\[Key_Maru] < 0))]
@DW_MARU=0
IFEND[]
IF[(@DW_BATU != 0) && ((\[Button_Batu] < 0)&&(\[Key_Batu] < 0))]
@DW_BATU=0
IFEND[]
GO[#="DW_Menu01_Loop02"]

LABEL[#="DW_Menu_01_Owarikata"]

INT[@DW_Finish=0]
@DW_Finish=0
LOOP[SET=@DW_Menu_Size]
CG[NO=@DW_Menu_Layer_Number(@DW_Finish) E=0]
@DW_Menu_Layer_X(@DW_Finish)=@DW_Finish*\[Menu_Layer_X_Variation]+\[Menu_Layer_X_Start]
@DW_Menu_Layer_Y(@DW_Finish)=@DW_Finish*\[Menu_Layer_Y_Variation]+\[Menu_Layer_Y_Start]
@DW_Finish+=1
LOOPEND[]
@DW_Menu_Color_Selection=\[Menu_Color_Selection]
@DW_Menu_Color_Normal=\[Menu_Color_Normal]
FONT[COLOR=@DW_Menu_Color_Stored]
RETURN[]

もしかしたらテストしたいと思ったら、以下の情報が便利かも知りません:
使っているMAKRO:
MACRO[NAME="Button_Maru" STR="@_PAD_BUTTON2(@DW_Pad_Number)"]
MACRO[NAME="Key_Maru" STR="@_KEY_ENTER"]
MACRO[NAME="Button_Batu" STR="@_PAD_BUTTON1(@DW_Pad_Number)"]
MACRO[NAME="Key_Batu" STR="@_KEY_TAB"]
//
//
//
MACRO[NAME="Maximum_Size_of_Menu" STR="10"]
MACRO[NAME="Menu_Layer_NO_Start" STR="100"]
MACRO[NAME="Menu_Layer_Z_Start" STR="600"]
MACRO[NAME="Menu_Layer_X_Start" STR="160"]
MACRO[NAME="Menu_Layer_Y_Start" STR="100"]
MACRO[NAME="Menu_Layer_X_Variation" STR="0"]
MACRO[NAME="Menu_Layer_Y_Variation" STR="50"]
MACRO[NAME="Menu_Layer_Width" STR="600"]
MACRO[NAME="Menu_Layer_Height" STR="40"]
MACRO[NAME="Menu_Color_Selection" STR="0x00ff00"]
MACRO[NAME="Menu_Color_Normal" STR="0xff0000"]

使っているGlobal:
G_INT[@DW_DOWN=0]
G_INT[@DW_UP=0]
G_INT[@DW_LEFT=0]
G_INT[@DW_RIGHT=0]
G_INT[@DW_MARU=0]
G_INT[@DW_BATU=0]
G_INT[@DW_Pad_Number=0]

G_STR[$DW_Menu_Entries(\[Maximum_Size_of_Menu])]
G_INT[@DW_Menu_Size=0]
G_INT[@DW_Menu_Selection=0]
G_INT[@DW_Menu_Layer_Number(\[Maximum_Size_of_Menu])]
G_INT[@DW_Menu_Layer_X(\[Maximum_Size_of_Menu])]
G_INT[@DW_Menu_Layer_Y(\[Maximum_Size_of_Menu])]
G_INT[@DW_Menu_Color_Selection=\[Menu_Color_Selection]]
G_INT[@DW_Menu_Color_Normal=\[Menu_Color_Normal]]
G_INT[@DW_Menu_Color_Stored=0xffffff]

そして、プローグラムのはじめでの準備:
INT[@I=0]
FONT[COLOR=0xffffff]
LOOP[SET=\[Maximum_Size_of_Menu]]
@DW_Menu_Layer_Number(@I)=@I+\[Menu_Layer_NO_Start]
CG[NO=@DW_Menu_Layer_Number(@I) FILE=""]
@DW_Menu_Layer_X(@I)=@I*\[Menu_Layer_X_Variation]+\[Menu_Layer_X_Start]
@DW_Menu_Layer_Y(@I)=@I*\[Menu_Layer_Y_Variation]+\[Menu_Layer_Y_Start]
CGACT[NO=@DW_Menu_Layer_Number(@I) SIZE=1 SX=\[Menu_Layer_Width] SY=\[Menu_Layer_Height]]
CG[NO=@DW_Menu_Layer_Number(@I) X=@DW_Menu_Layer_X(@I) Y=@DW_Menu_Layer_Y(@I) Z=@I+\[Menu_Layer_Z_Start] E=0]
@I+=1
LOOPEND[]

そして、AUTOCLICKがOFFになりますね。
ルーチンを呼び出す所がこうなります:
FONT[COLOR=0xffffff]
\[p]
$DW_Menu_Entries(0)="アイテム管理"
$DW_Menu_Entries(1)="動きテスト"
$DW_Menu_Entries(2)="完了"
@DW_Menu_Size=3
@DW_Menu_Selection=0
GOSUB[#="DW_Menu01"]

私が問題を全然見えませんから、ここに書き込みました。もしかしたら、私の単純のYU-RISの文法での間違いですから、誰かが問題を見れば、教えて下さい。出来れば、たくみさんに余計な迷惑をかけたくないと思います。

ここまで読んでくれて、有り難うございます。

Deathworks


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)