愛想尽かされてしまいそうなのですが
質問をさせて頂きます。
どうも、フレーム上に書くスプリクトと
クリップイベントの動作制限がイマイチ分かりません。
ある、ムービークリップがステージに配置されており
onClipEvent (enterFrame)で移動制御しています。
(this._x-=5てな具合です)
そのムービークリップは30フレームほどで形成されており
しょっぱなのフレームでstop();をかけ、ムービークリップが自動的にアニメしないように停止させています。
で、on (press) にてそのムービークリップが
マウスで押されたときにthis.gotoAndPlay("ラベル名");と、
その停止されていたムービークリップがマウスダウンをきっかけに動くといったものです。
※ ここまでは思惑通りに進行できたのですが・・・・
マウスが押されるとか押されないとかは別に
例えば時間的に又はムービークリップがある一定の場所に到達したときに
停止させてたアニメを動作させたいのです。
私なりに考え、
onClipEvent (enterFrame)の命令の中で
IF文にて座標を調べ特定の場所に着たので
this.gotoAndPlay("ラベル名");にて動作させようとしたら
ダメでした。
画像は変化しているので、ジャンプはしているようなのですが
何故か1コマで停止しているようです。
onClipEvent (enterFrame)内で
this.gotoAndPlayは無効なのでしょうか?
手引書にはそれぞれの機能説明はありますが
使用制限が記載されていないので
どういう間違いを犯しているのかわかりません。
上記、宜しくお願い致します。
尚、本件は別欄でご質問させて頂いてます物とは
別扱いとなります。
(質問ばかりでスミマセン。何かお勧めの手引書でもあれば教えて下さい)
No.3ベストアンサー
- 回答日時:
#1の者ですぅ。
Flash4の件は無視しておいてください。ぜんぜん参考になりませんから。
『_parent』は
MX2004の「ActionScript リファレンスガイド」(ヘルプ)
にもちゃんとあります。
------------------------------------
_parent
Player
Flash Player 5。
シンタックス
_parent.property
_parent._parent.property
説明
識別子; 現在のムービークリップまたはオブジェクトを含むムービークリップまたはオブジェクトへの参照を指定するか、返します。現在のオブジェクトとは、_parent を参照する ActionScript コードがあるオブジェクトです。現在のムービークリップまたはオブジェクトの上位のムービークリップまたはオブジェクトへの相対パスを指定するには、_parent を使用します。
-----------------------------------
また,「ActionScript ユーザーガイド」(※PDFです。重いです。)
http://download.macromedia.com/pub/documentation …
P.29「ドットシンタックス」 P.96「_root の不使用」 あたりにもあります。
要は相対パスです。
Flash4だと ../ になります。
私は ../ の方がなんとなくわかりやすいです。HTMLの相対パスに近いですから。
ファイルと言うよりフォルダに近いので,HTMLのパスとは少し意味合いが違いますけどね。
_root とか _parent とかいう書き方はFlash5から使用されているものです。
---例-----------------------
メインアニメーション
┗親MC(インスタンス名:oya)
┣子1MC(インスタンス名:ko1)
┗子2MC(インスタンス名:ko2)
---------------------------
「子1MC」のパスをメインアニメーションからの絶対パスで書くと,
_root.oya.ko1 となります。
「子1MC」のパスを「子2MC」から見たときの相対パスで書くと,
this._parent.ko1 または _parent.ko1 となります。
「子1MC」のパスを「親MC」から見たときの相対パスで書くと,
this.ko1 または単に ko1 となります。
「子1MC」のパスを「子1MC」(自分自身)から見たときの相対パスで書くと,
this. または,無記入 となります。
「親MC」のパスを「子1MC」から見たときの相対パスで書くと,
_root.oya となります。
「親MC」のパスを「子1MC」から見たときの相対パスで書くと,
this._parent. または _parent. となります。
注意する点は,ko1 などMCからの相対パスは,
ko1 内のフレームに書いても,MC自体に直接書いても,パスは同じになると言う点です。
なんとなく,MCに直接書くとMCの外側の皮に書いた気になりますが(私だけ?),実はMCの中に書かれているのです。
ですから,MCに直接書く場合も,MCの中のフレームから見たときのパスをイメージすると間違いにくいです。
パスの始まりは,「_root」と「_parent」と「this」の3つです。簡単に覚えられますね。
日本語で言うと,
「_根」と「_親」と「_これ」です。スクリプトのままの方がわかりやすい気がしますが…。
この3つ以外のパスの部分は具体的なオブジェクトのインスタンス名になります。
絶対パスで書くと,_root.oya.gotoAndPlay(**); みたいになり,子から見た親を言うだけでも,必ず親MCのインスタンス名が必要になります。
親MCのインスタンス名は,ご質問の回答では不用ですから _parent にしました。
また,任意にたくさんこのようなMCを作った場合,
_root.oya1 _root.oya2 _root.oya3 ……
のように作った数だけ,スクリプトのパスを変えなければなりません。
これが面倒な場合,または不可能な場合は,_parent を使用した方が良いです。
私の頭の中のイメージと,ここ↓の図のイメージは上下が反対なので,イマイチわかりにくいですが。
http://f-site.org/articles/2002/01/26153958.html
>> 手引書を紹介していただくことは可能でしょうか?
>> (この掲示板では固有名詞を発するのは禁止?)
書籍などの固有名詞を発するのは大丈夫ですよ,
サイト名やリンクがOKなのですから。
ただ自分個人の固有名詞やサイト名はダメでしょう(^_^)。
しかし,手引書と言われても私の意見など聞いても参考になりませんよ。
昔はけっこう本を持っていましたが今は(今のバージョンは)持ってないに等しいです。
情報源は ネット:ヘルプ=2:3 くらいです。
ヘルプですけど…
MXのヘルプは,ヘルプ(フレーム使用のHTMLの集合体)だけ,切り離して,いつでも使えるようにMOなどに持っています。
またデスクトップにヘルプのショートカットを用意しています。
そうしているとソフト本体を起動することなくヘルプを見ることができます。
でもMX2004はそう簡単に切り離せません。
というか切り離すのは簡単ですが,お互いのページ(HTML)どうしにリンクがかかっていませんから,
HTMLの集合体を持っていても使いようがありません。
それで,CHM(HTMLヘルプ)ファイルに自分でコンパイルして,CHMを持ち歩いています。
Flash5のヘルプも持っています。Flash4は当然。 (って何のために…?)
Flash3のヘルプがほし~ぃ。(ヘルプマニアか!?)
Flash2・1は英語しかないと思うからいらん。(どーでもエエって!)
Flashのヘルプはハッキリ言ってスカッと役立つヘルプではありません。
でも使い慣れた人が何度も読み返しているとだんだん意味がわかってくるようにはなっています(意味ないじゃん)。
という感じですね。
全てにおいて納得しました!
(けど、作成の工程で頭の中がこんがらがってきました)
紙に書きながら頑張ります!
ありがとうございました。
No.2
- 回答日時:
#1です。
以下,#1の補足ではなく#1の蛇足です。
ちょっとした懐古心から…
「ムービークリップにスクリプトが書けなくたって…
entarFrameなんてなくたって…
同様なことは昔からできたんだ~い。」
てなわけで,Flash4で#1と同様のことを再現。
実際,Flash4まではムービークリップ自体にはスクリプトが書けず,
entarFrameとかいうハイカラなスクリプトもなかったです。
でも,同様のことはできました。
ボタン以外にはフレームにスクリプトを書くしかなかったのでムービークリップが大活躍します。
動く,親MCの中に2つ子MCを作る必要があります。
まず1つ目は親MCを動かす用のMCです。
このMCの中を2フレームにします。そして
1フレームのフレームスクリプトには
---------------------------------------
Set Variable:"pos" =GetProperty ( "../", _x )
Set Property ("../", X Position) =pos - 5
---------------------------------------
2フレームのフレームスクリプトには
---------------------------------------
Go to and Play (1)
---------------------------------------
これで,このMCは
1フレームと2フレームを行ったり来たりするので,
1フレームに戻るたびに,
GetPropertyで,親(../)のxポジションを求め,
Set Propertyで,親のxポジションを今より-5移動させるMCが完成します。
次に,親MCのxポジションが200以下になったら,親MCを"label1"フレームにgotoさせるMC。
このMCも中を2フレームにします。そして
1フレームのフレームスクリプトには
---------------------------------------
Set Variable:"pos" =GetProperty ( "../", _x )
If (pos<= 200)
Begin Tell Target ("../")
Go to and Play ("label1")
End Tell Target
End If
---------------------------------------
2フレームのフレームスクリプトには
---------------------------------------
Go to and Play (1)
---------------------------------------
これで,このMCは
1フレームと2フレームを行ったり来たりするので,
1フレームに戻るたびに,
GetPropertyで,親(../)のxポジションを求め,
もしそのポジションが,200以下になったら,
Tell Target で親に
"label1" に行け! って命令するMCが完成します。
(↑全てのスクリプトコピペ不可能。)
『もし"label1"に行ってもこの2つ目のMCがいたら,
親MCは"label1"に行き続けるので,いつまでたってもPlayしません。』
だから,このMCは1フレームにだけ存在させるMCになるのです。
両方のMCとも2フレームしかなく,その2フレーム間を行ったり来たりさせて,再計算させています。
これが,今でいう entarFrame です。
entarFrameと,それが無効になったように見えるイメージはわかりました?
って,よけいわかりにくくなりましたか…。
No.1
- 回答日時:
どもです。
最近多忙につき,ちょっとしか考える時間がありません。
衝突判定は専門外なのでよくわかりません。(ココで言い訳。)
>> onClipEvent (enterFrame)内で
>> this.gotoAndPlayは無効なのでしょうか?
無効なのではなくて,
理論的に考えると「何故か1コマで停止しているようです。」
となるのは当たり前ですよ。
enterFrame = 1フレーム進む時間ごとに毎回{ }内を実行
なのですから,毎フレーム時間(1/12秒)に1回,"ラベル名"のフレームに行き続けます。
せっかく前に進もうにも,また"ラベル名"のフレームに戻されてしまいます。
だから止まっているように見えるのです。実際は行こうか戻ろうか,困っている状態だと思います。
だから動くMC(以降「親MC」とします)自体には,
---------------------------
onClipEvent (enterFrame) {
this._x -= 5;
}
---------------------------
みたいなのでそれ自体の座標を動かしておいて,
その親MCの中の1フレームには
---------
stop();
---------
と書いておいて止めておいて,
1フレームだけに存在する子MCを親MCの中につくって
その,子MCに
-----------------------
onClipEvent (enterFrame) {
if (_parent._x<=200) {
_parent.gotoAndPlay("label1");
}
}
----------------------
のようなことを書くのが簡単な回避策だと思います。
「子MC」は「親MC」の1フレームだけにしか存在しない,
つまり,2フレーム以降は存在しないので,
このenterFrameは2フレーム以降,消えます。
sasakunさん、本当に毎回スミマセン。
しかもご多忙なようで、こんなつまんない質問に
時間を取らせ申し訳なく思います。
FLASH4での作成方法は理解するに時間がかかりそうです。
今日はめずらしく朝からお客さんのとこにいかなくては
ならないので後でじっくり検証したいと思います。
ところで、enterFrameの理屈はなんとなくですが
分かりました。
FLASHに無茶な注文をしていたようです。
(納得できない矛盾もあるような気がしますが
FLASHも精一杯頑張ってくれてるんだなと納得)
回避策のスプリクトを参考に後で頑張ろうと思います。
しかし、parentという命令が何者なのかが分かりません。
手引書の索引にも記載されていませんでしたし
ヘルプを見ても出てきません
(ヘルプの使い方がイマイチなのですが。。。)
お手数ですが、parentについて簡略で結構なので
どういったものなのかお時間あるときでも
教えて頂ければ幸いです。
あと、それら優れもののスプリクトが説明されている
手引書を紹介していただくことは可能でしょうか?
(この掲示板では固有名詞を発するのは禁止?)
色々お手数ばかりかけて申し訳ございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 消費者問題・詐欺 お金を取り返すことは可能でしょうか? 4 2023/01/07 13:17
- 運転免許・教習所 駐停車禁止場所ではない場所に路駐してトラブルになりお巡りも来たのですが、何か問題なんですかね? 16 2023/04/25 11:04
- エアコン・クーラー・冷暖房機 富士通のエアコンですが、作業員に見て貰っても、以後冷房運転が時々止まり困ってます。 6 2022/07/18 19:22
- その他(アニメ・マンガ・特撮) ドラえもんはタイムロックを解除できる? 1 2023/06/04 14:32
- 電子レンジ・オーブン・トースター 電子レンジの非科学的(カルト的)動作の原因について考えられる理由を知りたい 8 2022/11/29 14:47
- 運転免許・教習所 一旦停止取締まり対策で5カウント停車・・「取り締まり側」はどう感じているでしょう?仕事と割り切る? 7 2023/08/07 11:15
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
- 運転免許・教習所 FF車で雪に嵌った時に前進とバックを繰り返して脱出を試みるのは間違いなんですか 15 2023/05/07 13:33
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
おもしろフラッシュのサイト名...
-
この曲はなんでしょう?
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
Flashコンテンツを使ったWebサイト
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
VBAのコンボボックスの年月表示...
-
uwscでExcelに自動記入
-
パソコンのリカバリーについて
-
iPhoneです。 Adobeフラッシュ...
-
ロック画面に天気を表示したい
-
サイト構築の方法を教えてください
-
URLの/以降だけを入力したいです。
-
Adobe(マクロメディア)のFLAS...
-
adobe flash playerは無料です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
ドロップフレームの計算をエク...
-
Access2010でサブフォームのフ...
-
フレーム内のオプションボタン...
-
VB6のスクロールバー付きフレー...
-
VBで動的に作成したパネルの上...
-
cisco catalystのトラブルシュ...
-
車の運転時のメガネ 縁なし(...
-
URLを隠す、または別アドレスな...
-
2Dゲーム作成する際、アニメー...
-
シーケンス番号の初期値
-
【C++】IDirect3DSurfaceのディ...
-
フレームでページ分かれていて...
-
フレームでのResponse.Redirect
-
キーフレームとはなんですか?
-
エクセルVBA フレーム内のイベ...
-
ソーラーパネルのアルミフレー...
-
B2ポスターフレームの自作
-
VBSでHTMLソースの取得方法で
-
HTMLのフレームとテーブル...
おすすめ情報