トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     attchMovie とイベントハンドラメソッドについて。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hokusai
Åê¹ÆNo.3448
投稿日時: 2004-2-2 15:07
新米
居住地: 東京
投稿: 10
使用環境:
xp-pro 7.0.1
attchMovie とイベントハンドラメソッドについて。
お世話になります。

attchMovieとイベントハンドラメソッドについて質問です。

_rootへいきなりattchMovieで生成したムービークリップはイベントハンドラメソッドが使えますが、イベントハンドラ経由でムービークリップを生成したものについてはイベントハンドラメソッドが使えません。
これは、出来なくて当然なのでしょうか?
それとも、やり方が間違っているのでしょうか?
どなたか教えてください。

ステージにはボタンが一個あるだけです。以下、スクリプト。

// ムービークリップ "mc1" をいきなり生成します。
_root.attachMovie ("mc","mc1",100);
trace(_root.mc1); // ⇒ _level0.mc1

// ボタン button が押されたらムービークリップ "mc2" を生成します。
_root.button.onRelease = function () {
_root.attachMovie ("mc","mc2",101);
_root.mc2._x = 100;
_root.mc2._y = 100;
trace(_root.mc2); // ⇒ _level0.mc2
}

// ムービークリップ mc1 をドラッグします。・・・!出来ます。
_root.mc1.onPress = function () {
this.startDrag("");
}
_root.mc1.onRelease = function () {
this.stopDrag();
}

// ムービークリップ mc2 をドラッグします。・・・?出来ません。
_root.mc2.onPress = function () {
this.startDrag("");
}
_root.mc2.onRelease = function () {
this.stopDrag();
}
//
以上、よろしくお願いします。
森 なおき
Åê¹ÆNo.3450
投稿日時: 2004-2-2 15:41
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: attchMovie とイベントハンドラメソッドについて。
なおきです。
mc2が生成されていない段階では、当然ですが
イベントハンドラメソッドの設定は出来ません。
その問題じゃないでしょうか?

解決策としては元のムービークリップに記述しておくか、
生成を確認後に設定するようにすればよいと思います。


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

野中文雄
Åê¹ÆNo.3451
投稿日時: 2004-2-2 15:43
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: attchMovie とイベントハンドラメソッドについて。
以下のスクリプトは、どのタイムラインに設定したフレームアクションですか? すべて同じスクリプト内に記述しているのでしょうか? だとしたら、動作しないと思います。
引用:
hokusaiさんは書きました:
ステージにはボタンが一個あるだけです。以下、スクリプト。

Buttonインスンタンス_root.buttonがクリックされないかぎり、_root.mc2は生成されません
//  ボタン button が押されたらムービークリップ  "mc2"  を生成します。
_root.button.onRelease = function () {
     _root.attachMovie ("mc","mc2",101);
    // [後略]

以下に追加したtrace()アクションで、_root.mc2のパスが出力されますか? されなければ(おそらくundefined)インスタンスが生成されていませんので、イベントハンドラメソッドも設定できません。
trace(_root.mc2);  //【追加】
//  ムービークリップ  mc2 をドラッグします。・・・?出来ません。
_root.mc2.onPress = function () {
     this.startDrag("");
}
_root.mc2.onRelease = function () {
     this.stopDrag();
}

ちなみに、Buttonはクラス名として使用されています。MX 2004では大文字小文字が区別されるものの、あえて意図してどうしても使わなければならないのっぴきならない事情がないかぎり、buttonという紛らわしいインスタンス名の使用は避けた方がよいでしょう。


----------------
 

hokusai
Åê¹ÆNo.3453
投稿日時: 2004-2-2 16:07
新米
居住地: 東京
投稿: 10
使用環境:
xp-pro 7.0.1
Re: attchMovie とイベントハンドラメソッドについて。
なおき様、野中様 ありがとうございます。

インスタンスが生成されないと、イベントハンドラメソッドは設定できないわけですね。

なおき様がおっしゃった解決策:
引用:
決策としては元のムービークリップに記述しておくか、生成を確認後に設定するようにすればよいと思います。

の中で『元のムービークリップに記述しておく』方法はうまくいきました。
ところで、『生成を確認後に設定する』というのはどういうことなのでしょうか。
すみませんがよろしくお願いします。

野中文雄
Åê¹ÆNo.3457
投稿日時: 2004-2-2 16:22
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: attchMovie とイベントハンドラメソッドについて。
イベントハンドラメソッドの設定をボタンのスクリプトと分離したい場合には、1フレーム待てばよいと思います。
引用:
hokusaiさんは書きました:
ところで、『生成を確認後に設定する』というのはどういうことなのでしょうか。

ただ簡単なのは、ボタンに設定したButton.onReleaseイベントハンドラメソッドのコールバック関数内で、MovieClip.attachMovie()メソッドの呼出しに続けて処理することでしょう。


----------------
 

hokusai
Åê¹ÆNo.3462
投稿日時: 2004-2-2 17:28
新米
居住地: 東京
投稿: 10
使用環境:
xp-pro 7.0.1
Re: attchMovie とイベントハンドラメソッドについて。
野中様、ありがとうございました。

引用:
ただ簡単なのは、ボタンに設定したButton.onReleaseイベントハンドラメソッドのコールバック関数内で、MovieClip.attachMovie()メソッドの呼出しに続けて処理することでしょう。

動きました。ありがとうございます。

引用:
イベントハンドラメソッドの設定をボタンのスクリプトと分離したい場合には、1フレーム待てばよいと思います。

これは初めよく分からなかったんですが、ムービークリップをドラッグするイベントハンドラメソッドだけを2フレーム目に持っていったら動きました。でも単純にループしているだけだから本当の意味は違うんだろうとは思いますが・・・。
とにかくイベントハンドラメソッドの[設定]ということの意味が少し分かってきたような気がします、ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops