• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Animate HTML5, how to reference nested movieclips using a variable

Community Beginner ,
Apr 13, 2019 Apr 13, 2019

Copy link to clipboard

Copied

In an HTML5 canvas file, I have a bunch of sequentially numbered movieclip instances I want to stop playing using a repeat loop.

The basic syntax I use to reference a clip directly is:

this.data_rings.ring1.stop()

My problem is I can't determine how to reference the clips using a variable. Trying variations of the following has no effect (clips continue to play):

for (i = 1; i < 10; i++) {
  theClip
= "data_rings.ring" + i;
 
this.theClip.stop();
}

I'm guessing this has something to do with scope but don't know what to change (moving "this" in and out of the variable has no effect). Any suggestion for how to fix?  Thanks in advance.

Views

233

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Apr 13, 2019 Apr 13, 2019

Hi.

You need to first execute your code with fully initialized children. Then you can use bracket notation to access each child by its name using concatenated strings. Like this:

stage.on("drawstart", function(e)

{

    for (var i = 1; i < 10; i++)

          this.data_rings["ring" + i].stop();

}, this, true);

More info about the drawstart event:

https://createjs.com/docs/easeljs/classes/Stage.html#event_drawstart

Regards,

JC

Votes

Translate

Translate
Community Expert ,
Apr 13, 2019 Apr 13, 2019

Copy link to clipboard

Copied

LATEST

Hi.

You need to first execute your code with fully initialized children. Then you can use bracket notation to access each child by its name using concatenated strings. Like this:

stage.on("drawstart", function(e)

{

    for (var i = 1; i < 10; i++)

          this.data_rings["ring" + i].stop();

}, this, true);

More info about the drawstart event:

https://createjs.com/docs/easeljs/classes/Stage.html#event_drawstart

Regards,

JC

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines