我试图导出一个在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的新手,尽管我进行了一天的研究,但无法弄明白。 如果有人可以给出一个暗示。 谢谢。
答案 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
方法而不是addEventListener
(docs)。请注意,您还必须使用this.fl_MouseOverHandler
。
this.mybutton.on("mouseover", this.fl_MouseOverHandler, this);
您还可以使用Function.prototype.bind()
(docs)等实用程序方法对函数进行范围调整:
this.mybutton.addEventListener("mouseover", this.fl_MouseOverHandler.bind(this));
希望有所帮助!