スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
公開: --年--月--日, カテゴリ: スポンサー広告

オプションメニュー等で利用されるMList要素と項目表示数について

概要と結論

MList要素の固有属性であるunknownInt16属性によりメニューリストアイテムの表示数を変更する事ができる

以下に記述例を示す。

<!-- RcoFile name="undefined" version="undefined" rcomageVer="1.1.1" -->
<MList name="menu_list_sample" unknownInt16="0x3" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="0" scaleHeight="0" elementScale="1" iconOffset="0x1" onLoad="event:native:/OnInitOptionList" unknown17="0x0" unknownInt18="0xffffffff" unknownFloat19="0" unknownFloat20="0" unknownRef21="nothing" unknownEvent23="event:native:/OnPushOptionList" unknownRef25="nothing" unknownRef27="nothing" unknownRef29="nothing" unknownEvent31="nothing" unknownRef33="nothing" unknownRef35="nothing" unknownRef37="nothing" unknownEvent39="event:native:/OnScrollInOptionList" unknownRef41="nothing">
    <MItem name="menu_item_sample_01" text="text:msg_sample_01" altText="nothing" unknownRef4="nothing"></MItem>
    <MItem name="menu_item_sample_02" text="text:msg_sample_02" altText="nothing" unknownRef4="nothing"></MItem>
    <MItem name="menu_item_sample_03" text="text:msg_sample_03" altText="nothing" unknownRef4="nothing"></MItem>
</MList>

上記では見やすくするため属性の記述順序を入れ替えている(ルール上は問題無い)。MList要素中のunknownInt16="0x3"の部分が表示されるリスト項目の数を示している。具体的には、

unknownInt16="0xリスト表示数"

のようになり、この値を0x1にすればリストアイテムは一つしか表示されなくなる。では0x0にすれば何も表示されなくなるのかといえばそうではなく、上記の例ならば0x0で表示されるリストアイテムは三つである。つまり0x0とは、MItem要素を全て表示させることができるわけだ。

また、値の表記は16進数で行なうこと。例えばsysconf_plugin.rcoファイルの『UMD™音声言語』設定では以下に示すように、

<!-- RcoFile name="sysconf_plugin" version="6.35" rcomageVer="1.1.1" -->
<MList name="mlist_video_config_voice_lang" unknownInt16="0xd" posX="-182" posY="-7" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="event:native:/OnInitMlistVideoConfig" unknown17="0x0" unknownInt18="0x6" unknownFloat19="0" unknownFloat20="0" unknownRef21="nothing" unknownEvent23="event:native:/OnPushMlistVideoConfig" unknownRef25="nothing" unknownRef27="nothing" unknownRef29="nothing" unknownEvent31="event:native:/OnCancelVideoConfig" unknownRef33="nothing" unknownRef35="nothing" unknownRef37="nothing" unknownEvent39="event:native:/OnScrollInMlistVideoConfig" unknownRef41="nothing">
    <!-- 表記省略。子要素として、17種類のMItem要素が存在する。 -->
</MList>

unknownInt16="0xd"のように表記されている。これはリストアイテムの表示数が13であることを示している。

MList[unknownInt16="0x0"]に設定した場合の注意点

リストアイテム数がオーバーフローした際にスクロールしなくなる。この問題について分かりやすい例を出すとsysconf_plugin.rcoファイルがそうだ。このRCOでは国・地域ごとの設定項目として多数のMItem要素を子に持つMList要素が多数存在している。これらのデフォルトの値はMList[unknownInt16="0xd"]に設定されている。これはフォントサイズがデフォルトにおいて丁度画面内に収まる最大数に設定されている。これを0x0に設定すると画面の表示領域を無視して全て表示された状態となり本来スクロールするはずのリストアイテムはそのまま固定され、カーソルは画面下あるいは画面上を突っ切りはるか彼方へ行ってしまう。嫌がらせが目的ではないのならこういう箇所で0x0に設定しないことだ。『タイムゾーン設定』でこれをやるともうわけがわからなくなってしまったよ。それはさておき。

子要素にMItem要素を持たないMList要素の場合

例えばgame_plugin.rcoファイルのオプションメニューのMList要素を以下に示す。

<!-- RcoFile name="game_plugin" version="6.35" rcomageVer="1.1.1" -->
<Plane name="plane_ms_all_view_option_base_3" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x1" onLoad="nothing" image="image:tex_bar_side_1" unknownInt18="0x0">
    <MList name="mlist_ms_all_view_option_cascade" unknownInt16="0x0" posX="5" posY="118" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x11" onLoad="event:native:/OnInitOptionListCascade" unknown17="0x0" unknownInt18="0xffffffff" unknownFloat19="0" unknownFloat20="0" unknownRef21="nothing" unknownEvent23="event:native:/OnPushOptionListCascade" unknownRef25="nothing" unknownRef27="nothing" unknownRef29="nothing" unknownEvent31="nothing" unknownRef33="nothing" unknownRef35="nothing" unknownRef37="nothing" unknownEvent39="event:native:/OnScrollInOptionListCascade" unknownRef41="nothing"></MList>
</Plane>

このように、MList要素のみで子要素を持たない。このときリストアイテム表示数はunknownInt16="0x0"となっており全数表示されるように設定されている。このことから、子要素にMItem要素が存在する・しないに関わらず表示数を変更できることが分かる。

さて。オプションメニューをカスタマイズする際にこのことを理解しておけば更に自分好みに作り変える事ができるかもしれないので知っておいて損は無いだろう。それはそうと、このunknownInt16属性は海外のフォーラムではnumVisibleElements属性に改名されているらしい。まあiniファイルで自由に変更できるのだから私は拘らないけど。

公開: 2011年04月18日, カテゴリ: 雑談・小ネタ・資料集