快速提问, 我有一个简单的功能,可以通过定义一个函数来创建一些曲面并为它们设置动画效果' animate'被称为每个引擎预渲染。这应该是应该的,但是,使用Engine.removeListener在prerender上删除此侦听器不起作用。
function _createCube(){
//create of some surfaces and modifiers
Engine.on('prerender',animate);
surface.on('click',function(){
_stopAnimation.call(this);
}
}
function _stopAnimation(){
Engine.removeListener('prerender',animate);
}
答案 0 :(得分:0)
它确实有效,但您的代码可能有错误。以下示例代码显示了使用removeListener
Working jsBin Example Here 点击计数器启动和停止监听器。
var mainContext = Engine.createContext();
var surface = new Surface({
content: 'Famo.us Count ',
properties:{
cursor: 'pointer'
}
});
mainContext.add(surface);
var counter = 0;
function animate() {
counter+=1;
surface.setContent('Famo.us Count ' + counter);
}
function _create(){
surface.on('click',function(){
if (!surface.started) {
Engine.on('prerender',animate);
surface.started = true;
} else {
_stopAnimation.call(this);
surface.started = false;
}
});
}
function _stopAnimation(){
Engine.removeListener('prerender',animate);
}
_create.call(this);