• 締切済み

FlashLite3.0でキー操作のスクリプト

初めまして。 Flashlite3.0(携帯用)でキー操作で240×240のマップ上をキャラクターが移動するアクションスクリプトを知りたいのですが、ネット等で検索した所、PCでキャラクターが移動する方法しか見つかりませんでした。 4で←8で↑6で→2で↓というように移動させたいです。 また、240×240以上越えると当たり判定で先に進まないようにしたいのですが、わかる方、もしくは説明しているサイトを知っている方がいらっしゃれば、お教え下さい。 宜しくお願いします。

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

Flash Lite 3.0 だと, 書かれていらっしゃる内容のようなことはPC用でも携帯用でも, ほとんど違いがないと思いますよ。 違いがあるとすれば ActionScript 3.0 が使えるか使えないかくらいではないでしょうか。 あとは, キーの並びがPCの場合  7 8 9  4 5 6  1 2 3 で,携帯の場合  1 2 3  4 5 6  7 8 9 であるとか, キーコードがPCの場合  「2」=98  「4」=100  「6」=102  「8」=104 で,携帯の場合  「2」=50  「4」=52  「6」=54  「8」=56 であるくらいなもので, Flash Lite 1.0 とか 1.1 で作るように恐ろしく違うということは全くないと思います。 マップをムービークリップに変換して「map_mc」というインスタンス名を付け, キャラクター(ムービークリップ)に「man_mc」というインスタンス名を付けたとします。  _root   ├man_mc   └map_mc この場合,メインのタイムラインのフレームに次のように書くと, 一応ご質問されているような動きになると思います。 ----------------------------------------------- // map_mc の上下左右端座標を得るためのオブジェクトを作成 var bnd_obj:Object = map_mc.getBounds(this); // man_mc を動かすユーザ関数の定義(引数:x座標,y座標) function manMove(my_x:Number, my_y:Number):Void { // // 1フレーム進む時間毎に随時実行する関数を定義 man_mc.onEnterFrame = function():Void { // man_mc の x座標 を my_x ずつ移動 this._x += my_x; // man_mc の y座標 を my_y ずつ移動 this._y += my_y; // もし man_mc の x座標 が map_mc の左端以下になれば if (this._x<=bnd_obj.xMin) { // man_mc の x座標 を map_mc の左端にする this._x = bnd_obj.xMin; // man_mc.onEnterFrame を削除 delete this.onEnterFrame; // もし man_mc の x座標 が map_mc の右端以上になれば } else if (this._x>=bnd_obj.xMax) { // man_mc の x座標 を map_mc の右端にする this._x = bnd_obj.xMax; // man_mc.onEnterFrame を削除 delete this.onEnterFrame; // もし man_mc の y座標 が map_mc の上端以下になれば } else if (this._y<=bnd_obj.yMin) { // man_mc の y座標 を map_mc の上端にする this._y = bnd_obj.yMin; // man_mc.onEnterFrame を削除 delete this.onEnterFrame; // もし man_mc の y座標 が map_mc の下端以上になれば } else if (this._y>=bnd_obj.yMax) { // man_mc の y座標 を map_mc の下端にする this._y = bnd_obj.yMax; // man_mc.onEnterFrame を削除 delete this.onEnterFrame; } }; } // キーを監視するためのオブジェクトを作成 var key_obj:Object = new Object(); // 何かのキーが押されたときに実行する関数を定義 key_obj.onKeyDown = function():Void { // (---出力検証用---) trace(Key.getCode()); // キー「2」(↑)であれば if (Key.getCode() == 50) { // ユーザ関数manMoveを実行(引数:x座標,y座標) manMove(0, -2); // キー「4」(←)であれば } else if (Key.getCode() == 52) { // ユーザ関数manMoveを実行(引数:x座標,y座標) manMove(-2, 0); // キー「6」(→)であれば } else if (Key.getCode() == 54) { // ユーザ関数manMoveを実行(引数:x座標,y座標) manMove(2, 0); // キー「8」(↓)であれば } else if (Key.getCode() == 56) { // ユーザ関数manMoveを実行(引数:x座標,y座標) manMove(0, 2); } }; // 何かのキーが放されたときに実行する関数を定義 // (キーを放しても動き続けさせる場合はこのスクリプトを消す) key_obj.onKeyUp = function():Void { // man_mc.onEnterFrame を削除 delete man_mc.onEnterFrame; }; // Keyクラスのリスナーとして key_obj を登録 Key.addListener(key_obj); ----------------------------------------------- ※ Flash Lite 3.0(Flash Lite 2.0以上)   ActionScript2.0 でパブリッシュ >ネット等で検索した所、 >PCでキャラクターが移動する方法しか見つかりませんでした。 その検索された方法と,上記の方法が違っているとするなら(おそらく大きく違っていると推測できます), それは "作者が違う" ために違う意図や考え方でスクリプトを組んでいるからです。 決して "携帯用とPC用とが違う" から方法やスクリプトが違うのではないと思います。 "携帯用とPC用とが違う" から違う箇所は, キーの場所 と キーコード だけだと思います。

fuekick
質問者

補足

ご回答ありがとうございます。 キャラクターを動かす事はできたのですが、 初期位置で2キー(↑)を押すと上へ進んでしまい、マップからオーバーし、6キー(→)を押すと初期位置に戻ってしまいます。 また、6キー(→)でマップの端まで行くとマップ内で止まらずオーバーしてまいます。 8キー(↓)ではキャラクター1個分マップをオーバーしてしまいます。

関連するQ&A

  • flashlite1.1でスロットゲーム

    flashLiteに関する情報がなかなか見つけることができないので こちらで質問させていただきます。 現在flashLite1.1を使用した、簡単なスロットゲームを 作りたいなと考えています。 それぞれ携帯電話の1,2,3キーで各リールを止め、 5キーでゲーム再開というものです。 また、中央横1列の1リールのみのものとなっています。 現状ここまでは作ることができたのですが、 肝心な絵柄が揃った際にアクションを起こすことが 出来ず悩んでいます。 (同じ絵柄がそろうと『おめでとう』のような文字を表示する予定です) どのような構造でこちらが作っているかによっても 説明が変わってくるかとは思うのですが、 断片的でもかまいませんのでどのようなスクリプト等の記述を すれば絵柄が揃った際のアクションを実行することができるかを 教えていただけないでしょうか。 それを元に制作中のものに組み込んでみようかと思います。 分かりにくい説明かと思いますが お力を貸していただければと思います。 よろしくお願い致します。 <追記> FLASHのバージョンはCS3を使用しています。

    • ベストアンサー
    • Flash
  • flashcs4 アクションスクリプト

    flashcs4で作ったキャラクターをキー移動で動かしたいと思っています。 でも、一回キャラクターをムービークリップにしてからキャラクターをクリックして選択、右クリックでアクションを出してキー移動のアクションスクリプトを入力しようとしているのですが、ムービークリップを選択したままアクション画面を出すと、「現在の選択範囲にアクションを割り当てることはできません」 とでてしまいます。 どのサイトをみても、全部ムービークリップを選択してアクションを入力するとかいてあり、キー移動することができません。 何がダメか分かる方がいたらぜひ宜しくお願いします。 cs4ではやり方が違うのでしょうか? また、こういう場合は、どうやってキー移動をすればいいのでしょうか。

    • ベストアンサー
    • Mac
  • FlashLite1.1 の当たり判定

    こんにちは。はじめて書き込みさせていただいてます。 FlashLite1.1で回っている観覧車の12個あるゴンドラの1つを当たりの位置に止めるとイベントが発生するフラッシュを作りたいのですが、FlashLite1.1の当たり判定の仕方で四苦八苦しています。 プログラムは苦手で、いろいろなサイトや本を見ながら試行錯誤中です。 今、マップゲーの仕組みを応用できないかなと思ってやってみてますが、なかなか正解にたどり着きません。。。 mdの値が1の場所に当たりゴンドラを止めたらイベントが起きるようにしたいので、当たりゴンドラが止まった位置のmdの数値をうけとってif文で当たりかハズレかを分岐させたいと思うのですが、考え方は合ってますでしょうか? この方法が理解できたら、プログラムが苦手な私にもいろいろ応用の幅が広がりそうかなと思っていて、なんとか習得したいと思います。 ぼんやりとした質問ですみません。。よろしくお願いします! //マップの当たりデーター md = "0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000001100000000" add"0000001100000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000" add"0000000000000000";

  • おすすめのキー操作を教えてください。

     マウスを使わないでコンピューターを使った方が効率がよいと聞いて、いろいろ練習をしています。  タブを押して項目へ移動してスペースでAltキー+Fでファイルを開いたりする操作や、Shiftキーを押しながら矢印で文字列を選択したり、ctrlキー+Zやctrlキー+Vなどの操作はすでに使用しています。  他に"これは使える!!"という操作はありますか? ありましたら教えてください。お願いします。  あと、F1とか…この辺のキーの操作で何かつかえる機能があれば教えてください。上の方のボタンはあまり使用したことがありません。Ctrl+Vなどのキー操作の説明は検索するとWebサイトがでて来ますが、F1とかのキーは結局なんのためにあるのか、説明されていません。みなさんは何かに使用しているんですか?

  • Actionscriptのキー操作について

    お久しぶりです、tsukiです。今度はキー操作について悩みを抱えてしまいました。 使っているFlashはMX2004です。 問題はSPACEキーを押しつづけた際、横からキャプチャー表示が出てくるようにしたいのですが、押し続けているとキャプチャーバーが前に進んでいってしまう現象がおきています。 また、キーを離した際にキャプチャーバーが引っ込むようにしたいのですが、どのようなAction scriptを入力すればいいのでしょうか。 いい案を教えてください、お願いします。

  • Key操作について

    http://www.kaitopurin.com/ 上記のサイトの様にキャラクターをキー操作によって動かしたいのですが、わかりません。 var thirom:MovieClip; var back:MovieClip; var speed:Number = 4; thirom.onEnterFrame = test; function test():Void { if(Key.isDown(Key.LEFT)) this._x -= speed; if(Key.isDown(Key.RIGHT)) this._x += speed; if(Key.isDown(Key.UP)) this._y -= speed; if(Key.isDown(Key.DOWN)) this._y += speed; } 途中までスクリプトを書いてみたんですが、ここから先がわかりません。例えば動かす対象のムービークリップ内にジャンプやしゃがむ動作を取り入れて、ラベルなどで移動する方法が一般的なんでしょうか? どうかご教授お願いします。 環境はMac,flash8です。

    • ベストアンサー
    • Flash
  • FlashLiteでマスク処理

    いつもお世話になっております。 今回FlashLiteでマスク処理をしたのですが、うまくいきません。 内容ですが、 静止テキストをムービークリップに変換してそれにマスクを適用しました。動きとしては ムービークリップをフレームアクションで右から左に移動させてその一部だけを見せるという処理なのですが、ムービープレビューするとムービークリップは始めから消えたままで表示されません。 説明がわかりにくいかもしれませんが、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • suzukaのスクリプトで

    suzukaでFlashを制作しております。 プログラムはさっぱりなので検索して出てきたactionscriptを切り貼りして試している状況です。 その1.フレームアクションにおいて、キーを押したら特定のフレームまで移動するスクリプトを入れたいので20フレーム目に以下のスクリプトを入れたのですが、どちらも使えませんでした。具体的な解決策はありますでしょうか。 ●[parse error]とエラーが出る this.stop(); on(keyPress ("a")){ _root.gotoAndPlay(21); } ●キーを押しても何も起こらない this.stop(); if(Key.isDown(Key.RIGHT)){ _root.gotoAndPlay(21); } else if(Key.isDown(Key.LEFT)){ _root.gotoAndPlay(31); } その2.フレームアクションの10フレーム目に this.stop(); buttonA.onPress=function(){ _root.gotoAndPlay(11); }; とボタンのスクリプトを入れると、 どこのフレームまで移動しようが 同じボタンへの命令で上書きするまで このボタンへの効果が持続されてしまうのですが、 押した瞬間に後に命令を引き継がせないスクリプトの記述はありますか?

    • ベストアンサー
    • Flash
  • WinAPIのキー操作についての質問です。

    WinAPIのキー操作についての質問です。 たとえばメモ帳で'A'を押し続けると、まず1つだけ'a'と出て少し時間をおいてから2つめ、3つめの'a'が出ますよね。 自分はWinAPIでゲームを作っていて、キー操作でキャラクターが動くようにしたいのですが、どうやっても上の'a'のような1回止まる動きになってしまいます。どのようにすれば止まらない普通の動きになるのでしょうか。 説明がわかりにくいかもしれませんが、どなたかお願いします^^;

  • 画面をランダムに動き回るアクションスクリプト

    フラッシュのアクションスクリプト初心者です。 勉強するにあたってまずは下記のようなアクションを作ってみたいんですが どなたか説明していただける方いらっしゃいますでしょうか? PCの画面上を、なんでもいいんですが例えば●という物体がランダムに動き回るアクションスクリプトってどのように記述すればよいでしょうか? 端まで行ってぶつかったらまた違う方向に移動するというようなものです。 方向もランダムで移動するんですが。 宜しくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう