2011-12-15 3 views
1

私はフラッシュでゲームを作成している、とによるゲームの性質のために、私には、Flash CS4で手動でステージ上に配置多くのムービークリップを持っています。プログラムで子どもとしてステージに追加されているわけではないので、ドキュメントクラスでアクセスできなくなっています。今まで私が使用できる唯一の方法はstage.addChild(active_area);(たとえば)ですが、非常に異なる名前のムービークリップが多数あるため、この方法は正しくないようです。既にDocument ClassのステージにあるMovieClipインスタンスにアクセスしますか?

私は私のムービークリップがステージの子ではないことを発見しましたが、実際MainTimelineで、stage.getChildAt(i);通じたとき、私forループとして、唯一の子、root1が、描かれています。

私は、手動で舞台に子供としてそれらを追加することなくドキュメントクラスからタイムライン内のステージ上に配置したムービークリップにアクセスするにはどうすればよいですか?

[EDIT]


だから私の問題は、私はそれが私がムービークリップの値を変更していなかったということでした、ムービークリップにアクセスすることができなかったことはなかったように見えるので、私はwasnそれらの変更を登録していない。私はそれを修正した後、ここで

はコードです:

function manage_cursor(e:Event):void { 
     prevX=currX; 
     prevY=currY; 
     currX=stage.mouseX; 
     currY=stage.mouseY; 
     var i:int; 

     if (currY > (stage.stageHeight/2)) { 

      for (i = 0; i < this.numChildren; i++) { 
       if (this.getChildAt(i).name!="active_area" && stage_kelp.y > kelp.min_y_mod) { 
        this.getChildAt(i).y-=1;      
       } 
      } 
     } 
     if (currY < (stage.stageHeight/2)) { 
      for (i = 0; i < this.numChildren; i++) { 
       if (this.getChildAt(i).name!="active_area" && this.stage_kelp.y < kelp.max_y_mod) { 
        this.getChildAt(i).y+=1; 
       } 
      } 
     } 

    } 

問題の前に、私はstage.getChildAt(i)を使用して、stage.numChildren;をチェックし、タイムラインだったあの子が、修正されたということでした。これは、移動中の私に、ステージ上のすべての私の他のムービークリップの効果を与えたので、私は彼らのy値が変更されていたという仮定の下にあったが、彼らは、このように、私の条件文のどれも私がwasn錯覚を与え、トリガませんでしたされませんでしたムービークリップにアクセスできません。以下の回答のパッケージで推奨されているようにstagethisを変更すると、私の問題が解決しました。

答えて

3

あなたDocument Classにこのコードを試してみてください。

trace(this["movieclip_name"]); 

thisはあなたDocument ClassMainTimelineを指します。

3

あなたは、ActionScriptのためのMovieClipを輸出しようとしたし、それに識別子を与えられたことがありますか?通常、識別子を使用してMovieClipにアクセスすることができます。

+0

彼の答えは私の問題を修正するので、私は答えをパッケージ化しましたが、私は代わりに '' stage.numChildren(I)の 'this.numChildren(I)をループ開始後;'、あなたの答えはまた働いていたので、私はあなたをupvoted 。 – BumbleShrimp

+0

心配はいりません!幸運にも、ごめんなさい。申し訳ありません、私はあなたの質問を早くupvoteするのを忘れました。 –

関連する問題