我曾经是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/

10-12 06:52