超Flash Lite入門 ActionScript編 その9 ボタン入力のコード統一
Flash Liteでの仕様では上下ボタンの取得ができるのですが、DoCoMo、au、Softbankのキャリアの仕様ではタブと同様の扱いとなる為、ボタンを3つ配置してフォーカスを取得する方法が一般的です。しかし、このようにするとコードが冗長になってしまい。メンテナンスが困難になってしまいます。callで別のムービークリップに飛ばしたいところですが、getURLもこのボタンの中で処理しないと動作しない為非常にやっかいです。試行錯誤した結果以下のようにしてまとめる形にしてみました。
rollOverの設定のみ、それぞれbtn1:-1,btn2:-2,btn3:-3としそれ以外はすべて共通とする。
btn1
on(keyPress "0"){_arg= 0;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "1"){_arg= 1;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "2"){_arg= 2;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "3"){_arg= 3;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "4"){_arg= 4;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "5"){_arg= 5;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "6"){_arg= 6;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "7"){_arg= 7;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "8"){_arg= 8;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "9"){_arg= 9;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "*"){_arg=10;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "#"){_arg=11;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "<ENTER>"){_arg=12;call('/as:event');if(_ret){getURL(_url);}} on(rollOver) {_arg=-1;call('/as:event');}
btn2
on(keyPress "0"){_arg= 0;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "1"){_arg= 1;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "2"){_arg= 2;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "3"){_arg= 3;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "4"){_arg= 4;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "5"){_arg= 5;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "6"){_arg= 6;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "7"){_arg= 7;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "8"){_arg= 8;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "9"){_arg= 9;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "*"){_arg=10;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "#"){_arg=11;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "<ENTER>"){_arg=12;call('/as:event');if(_ret){getURL(_url);}} on(rollOver) {_arg=-2;call('/as:event');}
btn3
on(keyPress "0"){_arg= 0;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "1"){_arg= 1;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "2"){_arg= 2;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "3"){_arg= 3;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "4"){_arg= 4;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "5"){_arg= 5;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "6"){_arg= 6;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "7"){_arg= 7;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "8"){_arg= 8;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "9"){_arg= 9;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "*"){_arg=10;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "#"){_arg=11;call('/as:event');if(_ret){getURL(_url);}} on(keyPress "<ENTER>"){_arg=12;call('/as:event');if(_ret){getURL(_url);}} on(rollOver) {_arg=-3;call('/as:event');}
as:event
// キーイベント処理 // -1 btn1 -2 btn2 -3 btn3 // 10 * 11 # 12 <ENTER> 13 ↑ 14 ↓ if(/:_arg<0){bid=-/:_arg-1;/:_arg=13+(nbid-bid+2)%3;nbid=bid;} /:_ret=0; switch(/:_arg){ // メイン画面 case 1: case 2: case 3: case 4: case 6: case 7: case 8: case 9: case 13: case 14:{ if(/:_arg==13)/:_arg=1; if(/:_arg==14)/:_arg=9; call('/as:move');break;} case 5: case 12:{/:_ret=1;/:_url="http://www.example.com/move.do";break;} case 0:{ /:_ret=1;/:_url="http://www.example.com/ret.do"; break;} }