我曾经是Flash开发人员,并且试图了解ActionScript与新的CreateJS平台之间的区别。我发现很难在Google上找到答案,所以我想在这里问一下,希望专家能给我扎实的解释。很感谢任何形式的帮助。
基本上,我很难理解时间轴范围的复杂性以及舞台上的影片剪辑如何在CreateJS中彼此交互。我也很难理解时间轴上范围之间的作用域。
在AS3中,您基本上可以在舞台上放置一个符号,并在主时间轴上引用它,如下所示:
if(ball_mc.aVariable == true) ball_mc.gotoAndPlay(2);
但是,在新的HTML5 Canvas Animate CC中似乎不再起作用。我得到很多“未定义”的信息。我还发现每个框架都锁定在范围内。如果我在ball_mc的第1帧上创建一个变量,然后尝试在第2帧上对其进行引用,除非执行以下操作,否则会出现错误:
var aMovieClip = this.aMovieClip;
在ActionScript中,每个嵌套的时间线都有自己的作用域。如果您在第一帧上创建了一个变量,则该变量将在整个时间轴上保持不变。我很难相信没有简单的方法可以在时间轴上扩展变量或函数的范围。在时间轴上增加交互性时,这使Flash变得轻而易举。
我试图用一个函数做同样的事情,但出现了这样的错误:
createjs-2015.11.26.min.js:12未捕获的TypeError:无法读取未定义的属性'handleEvent'
我想了解如何在时间轴上具有两个影片剪辑,以及如何使它们以与AS3中类似的方式彼此交互:
MovieClip(parent).ball_mc.colour = 'red';
要么..
this.addEventListener(MOUSE_EVENT.CLICK, callParentTimeline);
function callParentTimeline():void{
MovieClip(parent).gotoAndPlay(5);
}
等等等等
this.parent不适用于我..并且从主时间轴引用动画片段不允许我沿其时间轴访问其帧变量。
我发现这令人困惑和沮丧,因为当我浏览这些问题时,我发现许多文章都说诸如“只要说出this.variable就能正常工作”或“只要使用parent.ball_mc调用根目录”,我发现这些建议似乎都不起作用。
你们任何人都可以向我解释吗?
谢谢!
最佳答案
@Cmaxster您始终可以通过exportRoot
访问舞台上的MovieClip。
例如:如果您有一个实例名称为myBall
的球,则可以像这样的var myBall = exportRoot.myBall;
进行引用
如果您想发布带有更具体问题的FLA,我可以看一下:)
关于javascript - Animate CC中的CreateJS Javascript框架脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36925861/