1

我曾经是一名 Flash 开发人员,我试图了解 ActionScript 和新的 CreateJS 平台之间的区别。我发现很难在谷歌上找到答案,所以我想我会在这里问,希望专家能给我一个可靠的解释。很感谢任何形式的帮助。

基本上,我很难理解时间线范围的复杂性以及舞台上的电影剪辑如何在 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 未捕获类型错误:无法读取未定义的属性“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 调用根”,而我我发现这些建议似乎都不起作用。

你们中的任何人都可以向我解释一下吗?

谢谢!

4

1 回答 1

2

@Cmaxster 您始终可以通过exportRoot. 例如:如果您有一个实例名称为 的球myBall,则可以像这样引用它var myBall = exportRoot.myBall;

如果您想发布带有更多具体问题的 FLA,我可以看看 :)

于 2016-05-02T15:20:00.393 回答