Skip to main content
karlcleveland
New Participant
November 17, 2018
Answered

Buttons not working correctly in Animate CC 2019

  • November 17, 2018
  • 1 reply
  • 14866 views

I've encountered issues with the functionality of buttons in Adobe Animate CC 2019 (Build 326) and am curious if anyone else is having the same problem or knows how to resolve the issue. What I've found is that if I create and add AS3 script for a button, it works fine if it is on the first frame. If you move the button and accompanying frame script off of the first frame, to say frame 2 or 10 or 20, it fails. Sometimes it throws an "access of undefined property buttonInstanceName" error (even though the button is correctly named and present on the same frame as the script) and sometimes it makes the rollOver states wacky and ceases to function. Strangely, when I open old projects in 2019, they function fine. But, if I copy the layers from an old project to a new document created in 2019, it fails. I can't figure out what is going wrong and any advice/assistance would be appreciated.  I made this video documenting the issue if you'd like to see what I am talking about: buttonProblems - YouTube

This topic has been closed for replies.
Correct answer kglad

disable 'use advanced layers' in the document settings (modify>document).

1 reply

kglad
kgladCorrect answer
Community Expert
November 17, 2018

disable 'use advanced layers' in the document settings (modify>document).

karlcleveland
New Participant
November 17, 2018

Thank you!  I didn't realize advanced layers turned all layers into symbols. While turning it off works, I'd still like to know how to get the functionality I want while maintaining advanced layers, but it does seem like advanced layers confounds or complicates some simple scripting for basic interactivity.

It seems that if you don't instantiate a button on frame 1, its button states (over, down) don't function correctly. Move any button off of the first frame, to frame 10 let's say, and you will not be able to see the "over" state on rollOver (although it seems to flash for a brief instant), regardless of any ActionScript you may have. Beyond this, let's say I wanted to get this simple AS3 code to work on a button or movieclip:

play_btn.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e) {

    trace("play");

}

Using advanced layers, I can access the layer symbol with:

var myLayer = MovieClip(getChildByName("Layer_1"));

Then, I can access the button within it, using:

var myButton = myLayer.getChildByName("play_btn");  // or simply myLayer.play_btn

But, while this doesn't throw any errors, it does not work:

myButton.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e) {

    trace("play");

}

Any advice on how to get this code (and/or any button or movieclip that does not reside on frame 1) to work?

kglad
Community Expert
November 17, 2018

Thanks. Yes, I had thought of the work-around of simply hiding and showing the button and that works. I did have a stop() action in the frame with the button/code, but that doesn't matter. However, extending the button's layer by one frame does then make the code and button work (I don't quite understand why, however). Same goes for working with movieclips. Thanks for your help.


you're welcome.