
現在AS3.0を勉強中です。
基本中の基本だと思いますがパスが上手く通っていないようなので
ご教授願いたく。
1.ステージ上にテキストボックス(ダイナミックテキスト)を配置しインスタンス名を「hako」としています。
2.rootに以下のスクリプトを記述
-------------------------------------------------
addEventListener(Event.ENTER_FRAME,syori);
function syori(eventObject:Event):void {
hako.text=String(stage.mouseX);
}
-------------------------------------------------
ここまでは問題なく動作しています。
2をrootでは無く任意のムービークリップから処理させるべく・・・
3.「abc」というインスタンス名のムービークリックを作成しステージに配置。この1フレーム目に以下のスクリプトを記述
-------------------------------------------------
addEventListener(Event.ENTER_FRAME,syori);
function syori(eventObject:Event):void {
parent.hako.text=String(stage.mouseX);
}
-------------------------------------------------
※この際、2でrootに記述したスクリプトは消しています。
これで動くと思ったのですがエラーがでます。(ToT;)
「parent.hako.text」の部分を「root.hako.text」としてもエラーがでます。「_parent」も「_root」も駄目です。(「_」付はAS2.0までですよね?)
今回はダイナミックテキストは使った例ですが、
単純にムービークリップをステージに配置して、その座標を指定するような処理でも、
他のムービークリップから別のムービークリップを参照する方法が解りません(汗)
どうすればよいでしょうか?
AS2.0までは上記のような形でパスが通ったと思うのですが・・・
No.1ベストアンサー
- 回答日時:
まず最初に、AS3ではムービークリップごとにそれぞれのフレームに記述する方法はお勧めできません。
どうしても使用したい場合も、addEventListenerなどを使用して、parentなどの他のムービークリップにアクセスするような記述は極力避けるように書かなければAS3で書くメリットはあまりないです。それを前提とした上で、parentへは以下のようにアクセスします。
-------------------------------------------------
function syori(eventObject:Event):void {
//parentを一旦変数に入れる。
var p = parent;
p.hako.text=String(stage.mouseX);
}
-------------------------------------------------
あるいは下記のようにしてもOKです。
-------------------------------------------------
function syori(eventObject:Event):void {
var m = this;
m.parent.hako.text=String(stage.mouseX);
}
-------------------------------------------------
とはいえ、AS3ではフレームごとに記述する方法はデメリットが多いので、卒業された方が良いと思います。本格的に勉強されるということでしたら、できればクラスを使った記述方法を身につけましょう。熟練した人はほとんど他のMCへ干渉する記述やparentなどの記述は書きません。それがAS3(というより一般的なオブジェクト指向のプログラム言語)の一般的な記述方式であり、身につけておかなければならない知識だと考えてください。
>csplさん
ご回答、そしてアドバイスありがとうございます。
おっしゃる通り、parentへのアクセスは
AS3によって記述方法がちょっと変わっただけで
今までAS2/1でやってた事と変わってないなと感じていました。
>AS3ではムービークリップごとにそれぞれのフレームに記述する方法はお勧めできません
これも薄々と感じていました。orz
とすれば、スクリプトを記述する場所というのは基本的にメインのタイムライン(フレーム)上のみという事になるのでしょうか?
また、それぞれのMCが独立して、それ単独で処理が完結するような場合も
ムービークリップごとにそれぞれのフレームに記述するのはよくないと考えるべきでしょうか?
例:MC1=アナログ時計、MC2=マウスポインタ座標表示
MC1,MC2共にそれぞれのムービークリップ内の第一フレームにスクリプトを記述しており単独で全て完結。
新規で作ったflaファイル等(例えばnew.fla)に
MC1,MC2を配置するだけでそれぞれの機能を果たす。
ここで言いたいのは、new.flaのメインのタイムライン上に
MC1とMC2の処理を記述した方が良いのか?という事です。
今までの自分なら、マウスポインタの座標がx=500になったら
アナログ時計を一旦12時にリセットする等といった処理を
MC2の中に書いていました。まさにparentを参照する書き方ですね。(涙)
No.2
- 回答日時:
>とすれば、スクリプトを記述する場所というのは基本的にメインのタイム
>ライン(フレーム)上のみという事になるのでしょうか?
あくまでケースバイケースですが、申し上げたのはクラスを使用して書く場合によるルールです。できればメインタイムラインにひとまとめできれば好ましいですが、それでは冗長になる場合がありますよね。
>また、それぞれのMCが独立して、それ単独で処理が完結するような場合も
>ムービークリップごとにそれぞれのフレームに記述するのはよくないと考
>えるべきでしょうか?
一般的に言うのであれば、フレーム自体に書くことが好ましいと言えないです。
この「単独で処理が完結する」ムービークリップごとのフレーム上に書く、ということ自体はムービークリップにつきそれぞれクラスを用意して結びつけることと、考え方はほとんど変わりありません。
ですが、AS3を使用した実際の仕事ではほとんどの人はクラスを使用します。クラスを使用すればそれだけ享受できるメリットがあるからです。
具体的な記述方法についてはここでは言及しませんが、もしこの先も「自分一人で作るのだから動けばいい」というスタンスでやるのであれば、AS2でもAS3でもタイムラインに記述する方法でまったく構いません。が、もしも将来的なことを見据えて勉強されているのであれば、クラスを使用した記述やオブジェクト指向の書き方も覚えておかなければならないということです。
タイムラインに書くのに慣れた方にとっては覚えることが多くて大変ですが、そもそもAS3を勉強するというのは、他の人が書いたものを理解できるようになる、ということが前提ですので、がんばってみてください。
>csplさん
ご回答ありがとうございます。
AS3に対する考え方など非常に勉強になります。
Flash4末期の頃からコンテンツ制作に携わっており
業務でも、それなりの数作ってきましたが全て独学でなんとかやってきたので、常に「これでいいのか?」的な疑問がまとまわりついている状態です。
長年この業界にいるのですが自分の周りで自分よりFlash(あるいはAS)に詳しい人物に会った事が無いので、
解らないことや疑問点などが頻繁に出てくるのに対して
「これはこうだ!」と明確に答えてくれる人、あるいは
私はこういう考え方に基づいてこういうやり方をしている。
等、はっきりした回答をしてくれる人が周りにいなくていつもwebでの質問頼りで困り果てています。
でもcsplさんの回答を読んで、また少しやる気が出ました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて!goo でいただいた回答を...
-
ホームページを作ろうと思いま...
-
ホームページを作りたいのです...
-
ホームページの画面文字を濃く...
-
メールフォーム設置の文字化け...
-
ホームページビルダー11で作...
-
XREA使用で作成したHTMLファイ...
-
マウスオーバーすると色が変わ...
-
ホームページ
-
ビフォアーアフターのページは...
-
FC2ホームページの変更に仕方
-
新規サイトをGoogle検索に出る...
-
友達にドッキリをしたくて、ホ...
-
会社のホームページは「ホーム...
-
パソコン初心者です! 自営業で...
-
HP更新がうまくいきません(FTP...
-
FFFTPでサーバに新規フォルダが...
-
プログラミング の技術があれば...
-
【ホームページ作製】HPのWebペ...
-
無料のホームページを作成でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flashで一部レイヤーだけループ...
-
flashのローディング率とトゥイ...
-
Flash8 チェックボックスのラベ...
-
Flash Lite1.1ではonClipEvent(...
-
FlashMXでのボタンアクション作...
-
Flash AS3.0 初歩的な質問
-
Flash ActionScript■移動するMC...
-
パソコンのオープンフレームっ...
-
段ボールみたいな材質でできて...
-
フレーム内に移動したい
-
フレーム内のオプションボタン...
-
phpで音を鳴らす
-
フレームでのResponse.Redirect
-
Access2010でサブフォームのフ...
-
Media Playerコントロールを貼...
-
cisco catalystのトラブルシュ...
-
VBで動的に作成したパネルの上...
-
ドロップフレームの計算をエク...
-
オプションボタンを矢印キーで...
-
先日赤札堂で眼鏡を購入し、今...
おすすめ情報