1

ムービークリップ内のメインステージから変数にアクセスしようとしているので、単純なフラッシュファイルを取得しました。Google から見つけたすべてのものは、MovieClip(root) を指しています。しかし、それは私にとってはうまくいきません。

メインのタイムライン:

var MyName:String;
MyName = "kenny";

次に、MyBox と呼ばれるムービークリップとそのコードがあります。

trace(MovieClip(root).MyName);

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::Stage@2d2df089 to flash.display.MovieClip. MyBox/sendpmtext()で

また、MovieClip(parent)、MovieClip(parent.parent)、MovieClip(stage)、MovieClip(this.stage) を試しましたが、うまくいきませんでした。何か助けてください。

4

2 に答える 2

3

あなたはただすることができます

parent["MyName"];

または、メイン タイムラインの適切なキャスト (コンテキストでは、親は MainTimeline 型です):

MainTimeline(parent).MyName;

親は常に でありDisplayObjectContainer、作成する特別なプロパティはありません。カスタム プロパティを作成する場合、名前でアクセスできるようにする前に、それらのカスタム プロパティを持つクラスにキャストする必要があります。(それ以外の場合、コンパイラはそれらが存在することを認識せず、そのエラーを返します)。

rootswf の最上位ステージを指します。メイン タイムラインは実際にはステージの子であるため、メイン タイムラインの変数/オブジェクト/メソッドはステージの一部ではありませんstage


を使用している場合stage.addChild(MyBox)stage、親であり、メインのタイムラインではありません。何らかの理由でステージを親にする必要がある場合は、アクセスできる場所に mainTimeline への参照を保持する必要があります。MyBox タイムラインでこれを行うための var を作成できます。

var mainTimeline:MainTimeline;

次に、タイムラインのメイン コードで、次のようにします。

MyBox.mainTimeline = this;

次に、次のようにして MyBox 内の var にアクセスできますmainTimeline.MyName;

于 2012-09-25T20:01:25.237 に答える
0

StageではDisplayObjectありませんMovieClip。強要を使ってみる

DisplayObject(stage)

また

DisplayObjectContainer(stage)

カスタム プロパティにアクセスするには:

DisplayObject(this)["MyName"]
于 2012-09-25T19:42:28.887 に答える