开发者

How to access dynamic text field on stage from within the document class

I'm trying to access a text input that I've already placed on the stage (inside a movie clip) but with no luck.

I've defined an instance name for this dynamic text field which is currentUserCount

I've got something like this set up in the document class actionscript file:

package {

    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;

    public class myProject extends Sprite {

        public function myProject() {
            // Trying stuff like
            trace(currentUserCount);
            trace(movieClipName.currentUserCount);
            trace(root.currentUserCount);
        }
    }
}

What am I missing?

When I run this I get:

1120: Access of undefined property currentUserCount.
1120: Access of undefined property movieClipName.
1119: Access of possibly undefined property movieClipName through a reference with static type flash.display:DisplayObject.
1120: Access of undefined property currentU开发者_StackOverflowserCount.


If all of the movieclips on the stage had the same nested clip inside of it, you could also just reference the inner clips like so:

for (var i=0; i<stage.numChildren; i++){
  var mc = stage.getChildAt(i)
  mc.subClip.play()
}


Make sure the MovieClip and the TextField have instance names in your .fla file.

// MovieClip instance name: mc;
// Textfield instance name: tf;

Then in your document class:

package {

    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;

    public class myProject extends Sprite {

        public function myProject() {
            mc.tf.text = "Text you wanna see";
            trace(mc.tf); // [Object TextField]
        }
    }
}


My problem was that I was referencing a movie clip within a movie clip and I didn't know I had to create an instance name for each one and work my way in code through each one.

I thought the instance names were a part of a global namespace.

So I was doing something like:

myMovieClip.play();

when I should have been doing:

mainMovieClip.subMovieClip.myMovieClip.play();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜