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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     MovieClipを任意のフレームでstopさせるには?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
とんび
Åê¹ÆNo.38750
投稿日時: 2008-5-10 3:56
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: オーサリングで配置したTextFieldにアクセスしようとするとコンパイルエラー
1. ムービークリップを作って、ステージに配置
2. そのムービークリップ内にTextFieldを配置し(オーサリングで配置、といってたのはコレ。ActionScriptで実行時にaddChildすることとの対比で)、インスタンス名を付ける(例:_txt)
3. ムービークリップのプロパティ(リンケージ)でクラスを指定

4. 指定したクラスの外部asファイルでクラスを定義
5. そのクラスの中から_txtを呼ぶ(例:_txt.text)

とういことをやるとエラーが出るのです。

 [パブリッシュ設定]-[Flash]タブのActionScript 3.0[設定...]-[ステージのインスタンスを自動宣言]はOFFです。
 ぜんぜん気にしたことありませんでしたが、なんじゃこりゃ?ヘルプにも何するオプションかは書いてないようですが。

 ONにすると「1046:型が見つからないか、コンパイル時定数ではありません:TextField」ってエラーが出ます。


----------------
鳶嶋工房

野中文雄
Åê¹ÆNo.38751
投稿日時: 2008-5-10 4:51
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: オーサリングで配置したTextFieldにアクセスしようとするとコンパイルエラー
やはり、エラーは出ないですね。以下のクラスTestを、MovieClipシンボルの[クラス]に設定しました。シンボル内には、TextFieldインスタンス_txtを予め配置してあります。MovieClipインスタンスはタイムラインに予め置いても、コンストラクタを呼出してDisplayObjectContainer.addChild()メソッドで動的に配置しても結果は変わりません。
package {
	import flash.display.MovieClip;
	import flash.text.TextField;
	public class Test extends MovieClip {
		public var _txt:TextField;
		public function Test() {
			_txt.text = this.toString();
		}
	}
}

引用:
とんびさんは書きました:
1. ムービークリップを作って、ステージに配置
2. そのムービークリップ内にTextFieldを配置し(オーサリングで配置、といってたのはコレ。ActionScriptで実行時にAddChildすることとの対比で)、インスタンス名を付ける(例:_txt)
3. ムービークリップのプロパティ(リンケージ)でクラスを指定

4. 指定したクラスの外部asファイルでクラスを定義
5. そのクラスの中から_txtを呼ぶ(例:_txt.text)

[ステージのインスタンスを自動宣言]は、外しておく必要があります。

ActionScript 3.0では、インスタンス名はDisplayObject.nameプロパティの値となる文字列としての意味しかなくなりました。しかし、従来のターゲットパスの考え方と互換性を持たせるため、タイムラインに配置したインスタンスは、Flashが内部的にその名前と同名の変数を宣言して、そこに参照を設定してくれます。

もっとも、これをMovieClipシンボルに設定するクラスでやられてしまうと、シンボル内に配置したインスタンスをプロパティとして宣言できなくなります。そこで、余計なおせっかいを止めさせるのが、このオプションの役目です。

参考: F-site「 MovieClipインスタンスとインスタンス名
引用:
 [パブリッシュ設定]-[Flash]タブのActionScript 3.0[設定...]-[ステージのインスタンスを自動宣言]はOFFです。
 ぜんぜん気にしたことありませんでしたが、なんじゃこりゃ?ヘルプにも何するオプションかは書いてないようですが。


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

とんび
Åê¹ÆNo.38752
投稿日時: 2008-5-10 14:26
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: オーサリングで配置したTextFieldにアクセスしようとするとコンパイルエラー
 なるほどなるほどー。おかげさまで、この辺りの良く判ってなかった部分が、だいぶ分かってきました。

[ステージのインスタンスを自動宣言]をOFFにして、クラス定義ファイルの方で、TextFieldをimportして変数として_txtを宣言するわけですね。

[ステージのインスタンスを自動宣言]って、フレームスクリプトに以下のコードを書いている、と思っていいのかな…多分。
public var _txt:TextField;

 ただ、[ステージのインスタンスを自動宣言]をOFFにしちゃうと、フレームスクリプトから参照する従来のやりかたは使えなくなっちゃう。
 その場合、フレームスクリプトの方で上記の(手動)宣言をすると使えますね。

 これらの変数とステージ上に配置したインスタンスとの結びつけ(代入)がスクリプト上はされてないのに使えるのが、なんだか気持ち悪いですけど。以下のスクリプトみたいな感じの。
_txt = (インスタンスへの参照);


----------------
鳶嶋工房

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

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