我曾经是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对我不起作用..并且从主时间轴引用一个动画片段不允许我沿着它的时间轴访问它的帧变量。
我发现这令人困惑和令人沮丧,因为当我谷歌这些问题时,我发现许多文章说“只是说这个。变量,它会工作”或“只是使用parent.ball_mc来调用根” ,我发现这些建议似乎都不起作用。
你们有人可以向我解释一下吗?
谢谢!
答案 0 :(得分:2)
@Cmaxster您始终可以通过exportRoot
访问舞台上的MovieClip。
例如:如果您有一个实例名称为myBall
的球,则可以像var myBall = exportRoot.myBall;
如果你想发布一个有更多特定问题的FLA,我可以看一下:)