我正在使用这个 CDN 版本的 createjs
<script type="text/javascript" src="http://code.createjs.com/createjs-2013.09.25.min.js"></script>
因为我正在尝试在 Youtube 上跟随这个介绍性截屏视频http://www.youtube.com/watch?v=OWHJa0jKJgo 。它有一条线
createjs.Sound.addEventListener("loadComplete", this.handleComplete);
但是,“loadComplete”最近已被弃用,取而代之的是“fileLoad”事件。如果我在主干视图的函数内执行此操作
loadRegisterSound: function(){
createjs.Sound.addEventListener("fileload", this.handleLoad);
createjs.Sound.registerSound("img/pop.mp3", "sound");
}
然后我明白了
Uncaught TypeError: Cannot read property 'handleEvent' of undefined
如果我将上述函数的后半部分移到 handleLoad 函数中
loadRegisterSound: function(){
createjs.Sound.addEventListener("fileload", this.handleLoad);
},
handleLoad: function(){
createjs.Sound.registerSound("img/pop.mp3", "sound");
var ball = new createjs.Shape();
ball.graphics.beginFill("#000000").drawCircle(0, 0, 50);
createjs.Tween.get(ball, {loop:true}).to({x:450}, 3000).to({x:50}, 3000);
createjs.Ticker.addEventListener("tick", this.tick);
ball.addEventListener("click", this.handleClick);
ball.x = 50;
ball.y = 200;
stage.addChild(ball);
}
那么没有任何迹象表明 handleLoad 函数被调用过。什么都没发生。
在 createjs http://www.createjs.com/Docs/SoundJS/classes/Sound.html的文档中,有一个奇怪的 createjs.proxy 函数与 fileload 事件一起使用
createjs.Sound.addEventListener("fileload", createjs.proxy(this.loadHandler, (this));
但是,如果我尝试在主干视图中将它与我的代码一起使用,我会收到一个意外;
错误。
有人可以解释我如何让fileload
事件与 createjs.registerSound api 一起工作吗?