[もどる]
一括表示
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

0472 確認しました
投稿者:たくみ 2006/05/27(土) 22:52

Deathworksさんどうもです。
すみません…確認したところ、YU-RISのバグです;
原因は、
「FONTINFO 命令の COLOR キーワードで、正しい色を取得できない」バグでした。
とり急ぎ直しましたので、明日のバージョンアップ版で直っていると思います。

今ちょっと忙しいため、ひとまずこのレスだけさせて頂いて、あとは後日レスします。すみません(汗

0473 有り難うございますと忘れ物
投稿者:Deathworks 2006/05/27(土) 23:36

今日は、Deathworksです。

忙しいのに早く確認してくれて有り難うございます。おかげでこちらのプログラミングも進めます。

あっ!いつも忘れてしまいましたものがあります:YU-RISのマニュアルでCGCOLOR[]という命令が左のメニューのFrameの中で存在しません。それがちょっと不便だと思います(CGCOLOR[]にたどり着く為に他のCG系命令を選ばないといけませんから)。それがもしかしたら間違いかも知りませんから、一応言っておきたいと思いました。

とにかく、皆さんの為に頑張ってくれて有り難うございます。

Deathworks

0480 ご報告どうもです
投稿者:たくみ 2006/05/31(水) 04:35

> あっ!いつも忘れてしまいましたものがあります:YU-RISのマニュアルでCGCOLOR[]という命令が左のメニューのFrameの中で存在しません。それがちょっと不便だと思います(CGCOLOR[]にたどり着く為に他のCG系命令を選ばないといけませんから)。それがもしかしたら間違いかも知りませんから、一応言っておきたいと思いました。

あ、本当だ(^^;
実は、CGCOLOR という命令は無くなり、その代わりに CGINFO 命令で取得するようになりました。
COLOR キーワードと、ONMOUSE キーワードが、それです。
ご報告有り難うございます(^^