- ベストアンサー
ドラッグしたときの当たり判定
- ParaFlaを使ってFlashを制作していますaというスプライトをドラッグしbというスプライトにぶつかったらラベルCに飛ぶというものを作りたいのですがうまくいきません
- aに記述しているアクションスクリプトはドラッグができますがbとぶつかっても何も起こりません。バージョンはSWF8です
- どこを変更すればよいかわかる方に助言を求めます
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ParaFla! は操ったことがあまりありませんし, 実際の動作検証もしていませんが。 onClipEvent (enterFrame) { if(this.hitTest(_root.b) == true) { this.gotoAndPlay("c"); } これでは, これを書いたムービークリップ内のタイムラインが, ラベルc に進んで再生されますよ。 > bというスプライトにぶつかったらラベルCに飛ぶ そもそも c と C が入り乱れていますが, とにかく, どのタイムラインの ラベルc(またはラベルC) に進ませたいのでしょうか? _root の ラベルc(またはラベルC) でしたら this._parent.gotoAndPlay("c"); (または this._parent.gotoAndPlay("C");) や _root.gotoAndPlay("c"); (または _root.gotoAndPlay("C");) のようにすべきでしょう。 --- --- --- しかし,さらに, onClipEvent (enterFrame) {} はどういう意味かご存じでしょうか? 毎フレーム毎フレーム {} 内が実行されますよ。 そのスクリプトを書いたスプライトが b と接触している限り, 毎フレーム毎フレーム ずっと _root.gotoAndPlay("c"); などが実行されます。 つまり ラベルc(またはラベルC) のフレームに行き続けます。 ラベルc(またはラベルC) のフレームに行き続けるということは, その先のフレームに進めないということです。 _root などに フラグ となる変数などを用意して, その フラグ となる変数 の値を 例えば false にしておいて, フラグ となる変数 の値が 例えば false の時に限って そのスクリプトを書いたスプライトが b と接触した瞬間に _root.gotoAndPlay("c"); などを実行させ, 即, フラグ となる変数 の値を 例えば true にするなどの工夫が必要です。
お礼
cとCが入り乱れているなど紛らわしい書き方してしまい 申し訳ありません 同じタイムライン上だったのでthisと記入していましたが _rootにしてもthis._parentにしてもやはり飛びませんでした onClipEvent (enterFrame) のこともよく知らずに使っていたので 変数を用意して一度飛んだらtrueにするようにもしてみたのですが どうしてもcには飛んでくれませんでした 教えていただいたことを踏まえてもう少し色々やってみます 回答ありがとうございました