Javascript和Famo.us:Engine.removeListener()不起作用

时间:2014-11-26 08:27:18

标签: javascript famo.us

快速提问, 我有一个简单的功能,可以通过定义一个函数来创建一些曲面并为它们设置动画效果' 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); 
}

1 个答案:

答案 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);