2007年4月10日火曜日

FlashLite with KDDI

端末毎にメニュー位置の記憶方法が異なり、非常に難儀したので、チラシの裏保存。

// 変数参照用のprefix
str=String(_root._submenuid) add "_" add String(_root._cursor);
// メニュー位置保存コード(00とか25とか)
cursor=String(_root._submenuid) add String(_root._cursor);

switch(_root._tC){
case "W51T":
case "W52T":
// T系は3byteしか保存出来ないので注意
fscommand2("Set","Mainmenu","Position",cursor);
fscommand("launch",eval("/:_ezmenuLaunch" add str));
break;
case "W51H":
case "W51CA":
FSCommand2("Set","Mainmenu","Position",cursor);
fscommand("launch",eval("/:_ezmenuLaunch" add str));
break;
case "MEDIASKIN":
case "W51K":
case "W52K":
FSCommand2("Set","Mainmenu","Position",cursor);
fscommand("launch",eval("/:_ezmenuLaunch" add str));
break;
case "W51S":
FSCommand2("Set","EZMenu","Position",cursor);
fscommand("launch",eval("/:_ezmenuLaunch" add str));
break;
case "W51SA":
case "W43SA":
// 一応呼び出し機能名に変換し保存
cursor=eval("/:_ezmenuLaunch" add str);
FSCommand2("Set","MainMenu","Position",cursor);
// 仕様上ではLaunchした時の文字列が保存されるらしいが…
fscommand("Launch",eval("/:_ezmenuLaunch" add str));
break;
case "W51SH":
FSCommand2("Set","Mainmenu","Position",cursor);
fscommand("Launch",eval("/:_ezmenuLaunch" add str));
break;
}

上記以外にW41SHは非常に癌で、実行中のフレームを記憶し、その時のフレームに戻される。

FRAME1の初期処理:
if(_root._tC eq "W41SH"){
_root._submenuid=0;
_root._luanchflg=false;
// 復元開始
stat = fscommand2("RetrieveFocus");
if(stat==-1){
trace("Use default cursor=" add _root._defezcursor);
_root._cursor=_root._defezcursor;
}
}else{
// 他機種向け復元処理
}

各FRAME:
if(_root._launchflg==true){
// カレントフレームを保存
FSCommand2("SaveFocus");
str="0_" add String(_root._cursor);
// 機能呼び出し
fscommand("launch",eval("/:_ezmenuLaunch" add str));
}else{
// メニュー位置を算出
_root._cursor=_currentframe-2;
_root._launchflg=true;
}

0 件のコメント: