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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ターゲットパスが分からない
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.6356
投稿日時: 2004-4-16 21:06
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ターゲットパスが分からない
Buttonのthisは、ちょっとやっかいです。イベントハンドラメソッドに定義した関数内では、thisはButtonインスタンス自身を参照します。
引用:
rin-koさんは書きました:
ボタンにとってthisは配置されたタイムラインを指すという点が問題になっているのではないかと思われますが、違いますでしょうか?

movieClip1._level0は、_level0と同値です。つまり、Buttonシンボル内に配置した変数のパスは、正しく認識されません(後述引用参照)。
引用:
askaaskaさんは書きました:
movieClip1._level0.label1 = inputText;
movieClip1._level0.label2 = inputText;
movieClip1._level0.label3 = inputText;

とするとちゃんと値がコピーされることが
なんとか分かりました。

引用:
拙著『オブジェクト指向で考えるActionScript』p.114?115より:
ボタンシンボルの内部は、基本的にスクリプトで制御することができません。第1 に、フレームアクションは記述できません。第2 に、シンボル内に配置されたインスタンス[*8]の名前は失われます。第3 に、ボタンシンボルのなかのMovieClip インスタンスにMovieClip アクションを設定しても、無視されます。
[中略]
注[*8]
 Flash MXからはTextFieldオブジェクトが実装され、[ダイナミックテキスト]または[テキスト入力]フィールド(TextFieldインスタンス)にもインスタンス名が付けられるようになりました。ボタンシンボル内に配置すると、MovieClip だけでなくTextField インスタンスも名前が認識されません。
 たとえば、Buttonインスタンスmy_btnのシンボル内に、MovieClipとTextFieldそれぞれのインスタンスmy_mcおよびmy_txtを配置して、[ムービープレビュー]で確認してみます。[デバッグ]メニューから[変数のリストアップ]を実行すると、以下のような表示が確認できます。なお、テキストフィールドには、インスタンス名とは別に変数名としてmyVar を設定しました(テキストフィールドの内容は"Text")。

○[変数のリストアップ]の一部抜粋
変数_level0.myVar = "Text"
ボタン: ターゲット="_level0.my_btn" <- ボタンシンボル内のテキストフィールドの変
数が配置されたタイムラインで認識

ムービークリップ: ターゲット="_level0.my_btn.instance1" <- MovieClipインスタンス名消失
テキスト編集: ターゲット="_level0.my_btn.instance2" <- TextFieldインスタンス名消失
variable = "myVar", <- テキストフィールドに設定した変数名
text = "Text",

 「ムービークリップ: ターゲット」と「テキスト編集: ターゲット」の部分が、それぞれMovieClipとTextFieldインスタンスのパス情報です。設定しておいたインスタンス名が失われ、instance1、instance2という未設定の場合の名前が表示されています。また、テキストフィールドに変数名myVarを設定したところ、Buttonインスタンスを配置した'_level0' つまりメインのタイムライン('_root')にあるものと誤認されています。
 なお、ボタンシンボル内に別のButtonインスタンスを配置すると、大もとのボタンシンボルのアニメーション自体正しく行われません。


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

askaaska
Åê¹ÆNo.6353
投稿日時: 2004-4-16 18:09
新米
居住地:
投稿: 12
使用環境:
Flash暦:2004年3月15日開始
環境:Windows2000Professional、Flash Player7
   Macromedia Flash MX Professional 2004
私の持つ技術:HTML、JavaScript、Perl、Javaは良く分かります。

土日夜はつなげません。
Re: ターゲットパスが分からない
引用:
ボタンにとってthisは配置されたタイムラインを指す

現在のところ
movieClip1._level0.label1 = inputText;
movieClip1._level0.label2 = inputText;
movieClip1._level0.label3 = inputText;
とするとちゃんと値がコピーされることが
なんとか分かりました。

・・・が、MovieClip1をもう一つmovieClip2を同じステージ上に置き
movieClip1._level0.label1 = inputText;
とするとmovieClip2のlabel1、つまり
movieClip2._level0.label1
にも同じ値が入ることがわかりました。

同じ値になってしまうんですね。
びっくり
rin-ko
Åê¹ÆNo.6352
投稿日時: 2004-4-16 17:09
職人
居住地: 東京
投稿: 397
使用環境:
MacOSX10.5/10.4
WinXP SP3
MX2004Pro/CS3
Re: ターゲットパスが分からない
たぶん、そんなことをしなくても、最初に書かれていたご希望の動作なら今の方法でいけると思いますよー(試したのはFlash5ですけど)。
ボタンにとってthisは配置されたタイムラインを指すという点が問題になっているのではないかと思われますが、違いますでしょうか?
引用:
となるとMovieClip1はボタンではなくムービークリップにして
それとは別に透明なボタンを用意して
2つを重ね合わせる、という形を取るのが理想なのかな(・・;
askaaska
Åê¹ÆNo.6348
投稿日時: 2004-4-16 16:40
新米
居住地:
投稿: 12
使用環境:
Flash暦:2004年3月15日開始
環境:Windows2000Professional、Flash Player7
   Macromedia Flash MX Professional 2004
私の持つ技術:HTML、JavaScript、Perl、Javaは良く分かります。

土日夜はつなげません。
Re: ターゲットパスが分からない
引用:
ボタンの中身ってactionscriptから制御できましたっけ

で、できないんですか?
となるとMovieClip1はボタンではなくムービークリップにして
それとは別に透明なボタンを用意して
2つを重ね合わせる、という形を取るのが理想なのかな(・・;
もうちょっといろいろ試してみます。
かずぃ
Åê¹ÆNo.6346
投稿日時: 2004-4-16 16:20
半人前
居住地:
投稿: 49
使用環境:
98SE 10.3 MX
Re: ターゲットパスが分からない
引用:

askaaskaさんは書きました:
引用:
「ターゲットパスの挿入」

残念ながらこれだと
MovieClip、ボタン内のパスまで分からないのです

MC内もインスタンスに名前をつけてあげれば全部見えますよ。
さすがにボタンはわからないですけど。その前にボタンの中身ってactionscriptから制御できましたっけ?

で、僕はすごい勘違いをしてまして、今回はTextFieldにすべて変数名でアクセスしてるんですよね。これだと「ターゲットパスの挿入」には全然出てきません。すいません。
インスタンスに名前をつけてあげれば全部確認できるよってことなんです。混乱させてしまってすいません。
rin-ko
Åê¹ÆNo.6345
投稿日時: 2004-4-16 16:17
職人
居住地: 東京
投稿: 397
使用環境:
MacOSX10.5/10.4
WinXP SP3
MX2004Pro/CS3
Re: ターゲットパスが分からない
引用:
残念ながらこれだと
MovieClip、ボタン内のパスまで分からないのです

インスタンス名がつけてあればわかると思いますが…私がなにか勘違いしているのかな。

ところで、ちょっと気になったのですが、movieClip1ってムービークリップではなくて、ボタンインスタンスなのですよね?
なんとなくそれが混乱のもとになっているような…。
外していたらごめんなさい。
askaaska
Åê¹ÆNo.6341
投稿日時: 2004-4-16 15:20
新米
居住地:
投稿: 12
使用環境:
Flash暦:2004年3月15日開始
環境:Windows2000Professional、Flash Player7
   Macromedia Flash MX Professional 2004
私の持つ技術:HTML、JavaScript、Perl、Javaは良く分かります。

土日夜はつなげません。
Re: ターゲットパスが分からない
引用:
「ターゲットパスの挿入」

残念ながらこれだと
MovieClip、ボタン内のパスまで分からないのです

でもステージ上のオブジェクトのパスが
分からなくなったときに便利ですね。
情報ありがとうございます。
かずぃ
Åê¹ÆNo.6340
投稿日時: 2004-4-16 15:11
半人前
居住地:
投稿: 49
使用環境:
98SE 10.3 MX
Re: ターゲットパスが分からない
引用:
askaaskaさんは書きました:
movieClip1.label1という指定が間違っているらしい
ことは分かっているのですが
どうやって指定してよいのかが分かっておりません。


僕の場合、ステージに配置してあるインスタンスならアクションパネルを表示させて、並んでいるアイコンの真ん中辺りにある「ターゲットパスの挿入」をクリックしています。
パスがよくわからないうちは結構便利だと思いますよ。
askaaska
Åê¹ÆNo.6336
投稿日時: 2004-4-16 14:16
新米
居住地:
投稿: 12
使用環境:
Flash暦:2004年3月15日開始
環境:Windows2000Professional、Flash Player7
   Macromedia Flash MX Professional 2004
私の持つ技術:HTML、JavaScript、Perl、Javaは良く分かります。

土日夜はつなげません。
Re: ターゲットパスが分からない
お返事ありがとうございます。

<タイムラン
_rootのようです。
申し訳ないです。


_root.button1.onRelease = function() {
	trace([this, movieClip1, inputText]);
	movieClip1.label1 = inputText;
	movieClip1.label2 = inputText;
	movieClip1.label3 = inputText;
}

をinputTextに「test」と入力して実行したところ
_level0.button1,_level0.movieClip1,test
というトレースを得ました。
野中文雄
Åê¹ÆNo.6335
投稿日時: 2004-4-16 14:06
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ターゲットパスが分からない
まだ、ひとつご質問にお答えいただいていないようです。
引用:
野中文雄さんは書きました:
どのタイムラインに記述していますか(_rootあるいは_root.movieClip1)?

引用:
askaaskaさんは書きました:
情報が不鮮明でしたか。

ただ、スクリプトからは、_rootのフレームアクションと「推理」されます。それでしたら、trace()ステートメントに、もう1項目追加してみましょう。
引用:
引用:
button1.onRelease = function() {
trace([this, movieClip1, inputText]);
movieClip1.label1 = inputText;
movieClip1.label2 = inputText;
movieClip1.label3 = inputText;
}[/code]
...
なお、トレースの結果は
_level0.button1,_level0.movieClip1
と出力されました。


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

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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