如何使用createjs定位MovieClip

时间:2015-11-10 20:16:19

标签: javascript html5 html5-canvas createjs flash-cc

我试图导出一个在flash中工作正常但不能在html5画布中导出的合影动画。

诀窍是"简单" :每张照片都是一个按钮,当您将鼠标滚动到某人的照片上时,他的作业标题会出现。

我无法通过createjs实现这一目标!

我的舞台上有一个名为" jobs_cont"其时间表为每个人的职位提供了不同的关键帧和标签。

事情是我没有成功定位" jobs_cont"并且当按钮悬停时,在时间轴中使用gotoAndPlay特定的框架或标签。

"警告指令"单独被认可但不是" jobs_cont.gotoAndPlay":

var frequency = 3;
stage.enableMouseOver(frequency);
this.mybutton.addEventListener("mouseover", fl_MouseOverHandler);
function fl_MouseOverHandler(){ 
    this.jobs_cont.gotoAndPlay("mylabel");
    alert("hovered by mouse");
    // end of your personalized code
}

我想我必须错过一些针对" jobs_cont"在createjs,但我是javascript的新手,尽管我进行了一天的研究,但无法弄明白。 如果有人可以给出一个暗示。 谢谢。

1 个答案:

答案 0 :(得分:1)

您正在处理范围问题。如果您使用上述语法在时间轴上定义函数,则该函数没有范围,因此this变为Window

您可以更改要在当前对象上定义的函数语法:

this.fl_MouseOverHandler = function(){ 
    this.jobs_cont.gotoAndPlay("mylabel");
    alert("hovered by mouse");
    // end of your personalized code
}

最后,JavaScript并没有自动为事件监听器提供功能范围(还是!),因此您必须自己调整该功能的范围。如果您使用的是EaselJS的0.7.0或更高版本,则可以使用on方法而不是addEventListenerdocs)。请注意,您还必须使用this.fl_MouseOverHandler

this.mybutton.on("mouseover", this.fl_MouseOverHandler, this);

您还可以使用Function.prototype.bind()docs)等实用程序方法对函数进行范围调整:

this.mybutton.addEventListener("mouseover", this.fl_MouseOverHandler.bind(this));

希望有所帮助!