質問ページ / 149


質問ページ / 149

質問ページ/149

概要スプライトからメインに戻る方法
投稿者ライウ?
状態自力解決に挑む
カテゴリーParaFla!
投稿日2006-12-26 (火) 12:01:27
バージョン

質問内容

格闘ゲームを作ろうと思っているのですが、キーを話すとスプライトからメインに戻す方法ってありますか?(走るのから、通常の体制に戻すため) スプライトにこういうスクリプトを入れてそのグリップが消える様に下のですが、

onClipEvent (keyDown) {
if (Key.getcode() == key.Left) {
	this._x-= 5;
   }
}
-
onClipEvent (keyUp) {
if (Key.getcode() == key.Left) {
	this._visible=false;
   }
} 

ここからどうやってもとに戻すかです!

回答

  • 字に誤りがありました。修正します。×キーを話すと ○キーを離すと かな? -- ライウ? 2006-12-26 (火) 12:04:09
  • 「スプライトからメインに戻す」の意味がよく分からないけど、AS使えば出来ると思うよ。press とか、release とか。 -- 2006-12-26 (火) 17:49:01
  • 走るシーンを作るのにスプライトを使ったんです。←を押すとそのスプライトに飛ぶのですが、「←を離したら元のイベントに戻る」って言うのを作りたいんです -- ライウ? 2006-12-26 (火) 18:57:39
  • キーを押した場合の処理は、onClipEvent?(keyDown) で処理されているのでしょうか?それとも、スプライトの中にボタンを置いてその画像をクリックした場合に処理しているのでしょうか?前者ならonClipEvent?(keyUp) でキーがアップしたときの処理を書けます。後者ならボタンに on(release) の処理を追加すれば書けます。余計なことかも知れませんが、二つのハンドラをおなじムービークリップ(スプライト)もしくはボタンに書くときは 二つの処理の間に"-"(ハイフォン)を入れる必要があります。 -- Felix? 2007-01-01 (月) 23:15:21
  • onClipEvent? で書かれていたんですね。余計なことまで書いて失礼しました。keydown の方はおそらく問題ないということですね。keyUpの際には、走っているムービークリップを消したいという意味かもしれませんが、removeMovieClip? は、dupulicateMovieClip? でコピーしたようなものしか消せないはずなので、はじめから配置していたものは消せません。もしかしたら、それが原因かもしれません。単純に
    this._visible=false
    ではだめでしょうか?-- Felix? 2007-01-06 (土) 23:08:34
  • 後一歩です。消えた後、どうやって普通のやつに戻るかです! -- ライウ? 2007-01-07 (日) 16:21:47
  • 全く違うアプローチですが、こういうのはどうでしょう?学習帳さんにファイルUPらせてもらいます。http://parafla776.jog.buttobi.net/pkbrd/pkbrd.cgi のNO.2445です。 簡単に説明すると、移動だけのスプライトに静止画も一緒に用意しておいて、ラベル移動させる、というものです。-- 2007-01-08 (月) 01:30:18
  • 補足。flgには現在押されているキーを逐次保存し、flgに変化があった場合のみ画像ラベル移動とキーの保存(save_flg)がされます。各AAをアニメーションするスプライトに置き換えればそれなりに動くようにみえるかと。 -- 2007-01-08 (月) 01:41:13
  • 複数のムービークリップを切り替える方法はいくつかありますので、お役に立てるかどうか分かりませんが、お話から推測すると、通常の状態と、走っている状態のムービークリップを同じ深度に置いていて、フレームの移動か何かで切り替えているではと推測しています。私なら、全ての状態のムービーを全て深度を変えて配置し、一旦全部読み込むと同時に(最後にアクション追加・スクリプト記述で)、一旦初期状態以外の「可視」(._visible)をfalse にします。その後に、以下の様なアクションをどこかのムービークリップ(もしくは、動作をまとめた親ムービークリップ)に記載します。

onClipEvent?(keyDown){

 if(対象の操作キー){
  //動作ムービークリップの座標初期化

  表示したいMC(ムービークリップ)._x=kijun_ten; //kijun_tenは位置の基準となる変数(移動後に再設定)

  //表示したいムービークリップのみ表示
  消しておきたいMC(ムービークリップ)1._visible=false;
  消しておきたいMC(ムービークリップ)2._visible=false;
  消しておきたいMC(ムービークリップ)3._visible=false;

           ・            ・

  表示したいMC(ムービークリップ)._visible=true;

  //その後の処理・・・左へ移動など

}

}

  • onClipEvent?(keyUP){
     if(対象の操作キー){
      //基準点の更新
      kijun_ten=表示したいMC(ムービークリップ)._x    //上記で選択した表示したいMCの移動後の座標へ更新
  //キー操作終了時に表示したいムービークリップのみ表示
  消しておきたいMC(ムービークリップ)1._visible=false;
  消しておきたいMC(ムービークリップ)2._visible=false;
  消しておきたいMC(ムービークリップ)3._visible=false;

           ・            ・

  表示したいMC(ムービークリップ)._visible=true;
}

}

テストして書いているわけではないので、上手くいくかどうか不明ですが、参考になれば幸いです。表示したいムービークリップの部分は、単純な処理をあちこちに書くことになると思いますので、表示したいムービークリップを引数にしてfunction設定(全てを一旦不可視にして、引数で設定したMCのみを表示する関数を設定)する方が、間違いも無く、楽に書けると思います。-- Felix? 2007-01-08 (月) 09:54:08

  • attachSoun -- 2007-02-13 (火) 21:33:20
  • 学習帳を見ていたら、ヒントが見つかりました。後は自分でどうにかします。レスしてくれた皆さん。ありがとうございました。 -- ライウ? 2007-03-01 (木) 18:38:13
  • 「状態」w -- 2009-01-22 (木) 19:13:21