スポンサーサイト

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

Re: gamebootをスキップできるopening_plugin.rco

PSP Customize Forum • トピック - gamebootをスキップできるopening_plugin.rcoによると、

Page[name="page_movie"]>
Button[name="gamebootskip" onInit="object2:gamebootskip" onPush="event:native:/anim_gameboot_movie_finished"]

のようにButton要素を追加して関連するアニメーション要素

からLock[unknownInt0="0xffffffff"]の記述を削除することで、gameboot.pmf再生中に○ボタンを押すことで再生を中止させることができるようになるというもので、この記事ではこれの仕組みについて纏めておく。

まず何故○ボタンでgameboot.pmfの再生が中止されるのか。これは追加したButton要素の持つonPush属性の値であるevent:native:/anim_gameboot_movie_finishedの働きによるもので、通常はPMFファイルの再生時間経過後に実行されるそれをonPushイベントでも実行させているという仕組み。onPushイベントは○ボタンを押すことで発動する。

しかしこれだけでは○ボタンを押しても何も変化は無い。そこでgameboot.pmfの再生に関連するアニメーションのコードからLock[unknownInt0="0xffffffff"]の記述を削除する。gameboot.pmfの再生が開始されるとまずこの要素によりユーザーによるボタン入力を受け付けなくなる。そのためonPushイベントも起こらないのでevent:native:/anim_gameboot_movie_finishedも実行されないというわけだ。

普通なら以上で問題なくonPushイベントが起こるはずなのだが、何故かopening_plugin.rcoではこれだけだと動作しないので、更にobject2キーワードで追加した要素自身を参照させなければならない。それがButton[name="gamebootskip" onInit="object2:gamebootskip"]の部分になる。object2キーワードで参照されるのはオブジェクト要素のname属性値で、参照されたname属性値を持つ要素はアクティブ(有効)な状態にされる。つまりこれがonInitイベントで実行されるというのは、読み込まれたタイミングでButton[name="gamebootskip"]が有効化(ボタン入力を受け付ける)状態にされるということを意味する。

その他

Button要素は様々なイベント属性を持っているので、onPush属性以外からevent:native:/anim_gameboot_movie_finishedを実行させることもできる。例えばonContextMenu属性であれば△ボタンで発動させられるし、onFocus(Up|Down|Left|Right)であれば十字キーから発動させることもできる。どれか一つに記述してもいいし、これら全ての属性値に記述しても問題は無い。

また、リンク先の記事ではPage[name="page_movie"]にButton要素を追加するよう書かれているが、Page[name="page_psp_logo"]でも同様の効果を得られた。

Button要素を追加しない方法

Page要素もボタン入力のイベント属性を持っているのでそれを利用する。

ここでもobject2キーワードによる自身の参照は必要。なお、アニメーションコードからLock[unknownInt0="0xffffffff"]も削除しておくこと。また、先に書いたとおりPage[name="page_psp_logo"]でも構わない。

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