Skip to main content
pagios
Inspiring
November 28, 2018
Answered

Scripted Snow with camera layer

  • November 28, 2018
  • 1 reply
  • 454 views

I have a problem combining the Scripted Snow from the templates with camera layer.

If I create a new document using Templates\Animation\Scripted Snow, I cannot activate the camera layer. Consider the document has Flash Player 11.2/Actionscript 3.0 settings by default but also works if changed to Flash Player 30.0. I assume the FLA was created on a previous version of Animate CC.

However, If I create a new Actionscript 3.0 FLA and paste the template’s layers, including the actions layer, as well as copy all items to the library and the scene, I do get the camera option but I also get a repeated error message and the snow effect does not work:

TypeError: Error #1006: addTarget is not a function.

                at Santa18altsnowB_fla::MainTimeline/randomInterval()

                at Function/http://adobe.com/AS3/2006/builtin::apply()

                at SetIntervalTimer/onTimer()

                at flash.utils::Timer/_timerDispatch()

                at flash.utils::Timer/tick()

So, my main question is: what is the problem and how can I use this or similar code to create snow effect on new type documents with the camera layer option.

Secondary question is: how can I limit the snow effect to part of the screen, preferably using a mask layer. I have tried using a mask layer on the actions layer unsuccessfully.

Below is the Actionscript 3.0 code included in the template FLA.

Thanks

// Number of symbols to add.

const NUM_SYMBOLS:uint = 75;

var symbolsArray:Array = [];

var idx:uint;

var flake:Snow;

for (idx = 0; idx < NUM_SYMBOLS; idx++) {

    flake = new Snow();

addChild(flake);

    symbolsArray.push(flake);

    // Call randomInterval() after 0 to a given ms.

    setTimeout(randomInterval, int(Math.random() * 10000), flake);

}

function randomInterval(target:Snow):void {

   

    // Set the current Snow instance's x and y property

                target.x = Math.random()* 550-50;

    target.y = -Math.random() * 200;

               

                //randomly scale the x and y

                var ranScale:Number = Math.random() * 3;

                target.scaleX = ranScale;

                target.scaleY = ranScale;

               

                var tween:String;

                // ranScale is between 0.0 and 1.0

                if (ranScale < 1) {

                                tween = "slow";

                               

                // ranScale is between 1.0 and 2.0

                } else if (ranScale < 2) {

                                tween = "medium";

                               

                // ranScale is between 2.0 and 3.0

                } else {

                                tween = "fast";

                               

                }

    //assign tween nested in myClip

                myClip[tween].addTarget(target);

               

}

This topic has been closed for replies.
Correct answer pagios

Got help on Reddit: apparently turning off advanced layers solves the problem.

However, it is obvious that this should not happen. Is there any turn-around so I can get both the script working and use the camera layer and parenting at the same time?

1 reply

pagios
pagiosAuthorCorrect answer
Inspiring
November 29, 2018

Got help on Reddit: apparently turning off advanced layers solves the problem.

However, it is obvious that this should not happen. Is there any turn-around so I can get both the script working and use the camera layer and parenting at the same time?