Javascript и Famo.us: Engine.removeListener() не работает

Быстрый вопрос, у меня есть простая функция, которая создает некоторые поверхности и анимирует их, определяя функцию "animate", которая будет вызываться при каждом предварительном просмотре Engine. Это ведет себя как следует, однако удаление этого слушателя при предварительном просмотре с Engine.removeListener не работает.

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 ответ

Это работает, но у вас может быть ошибка в вашем коде. В следующем примере кода показан простой рабочий пример использования removeListener

Пример работы с jsBin. Нажмите на счетчик, чтобы запустить и остановить слушателя.

  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);
Другие вопросы по тегам