我正在尝试调用导出Flash CC 2014.1项目时创建的Canvas中的函数。
// JS代码(在Flash中)
function sayHello()
{
alert('hello');
}
//我的HTML中的JS代码
var canvas, stage, exportRoot;
function init() {
canvas = document.getElementById("canvas");
exportRoot = new lib.CreateJS();
stage = new createjs.Stage(canvas);
stage.addChild(exportRoot);
stage.update();
stage.enableMouseOver();
createjs.Ticker.setFPS(lib.properties.fps);
createjs.Ticker.addEventListener("tick", stage);
sayHello()
}
//我试过了:
stage.sayHello();
canvas.stage.sayHello();
//有什么想法吗?
答案 0 :(得分:3)
当您在Flash中的时间轴中添加代码时,它与其定义的符号具有上下文关系。在您的情况下,这是不阶段,而是exportRoot
实例,这实际上是从Flash导出的根MovieClip。看看导出的JavaScript,你可以看到代码是如何组合在一起的。
此外,您已在第1帧上定义了匿名函数,因此该函数只能在第1帧脚本上访问,不能在外部调用。您可以使用this
将函数定义为框架的属性来解决此问题。
this.sayHello = function() {
console.log("Hello");
}
这将sayHello
方法定义为当前符号的变量(在您的情况下可能是exportRoot
。然后可以使用以下任意位置调用它:
exportRoot.sayHello()
我希望这是有道理的。如果您有任何其他问题,请告诉我,或者需要有关这一切如何运作的更多信息。
干杯。