2013-03-23 2 views
0

Предполагая, что у нас есть 2 этапа и Ticker.setFPS(30), как я могу переопределить тикер для второго этапа, скажем, 15 кадров в секунду?Как переопределить галочку(), чтобы опустить FPS в несколько этапов

// Targeting 30fps 
Stage['GUI'] = new createjs.Stage(gui_canvas); 
createjs.Ticker.useRAF = true; 
createjs.Ticker.setFPS(30); 
createjs.Ticker.addEventListener('tick', Stage['GUI']); 
// Targeting 15fps 
Stage['Background'] = new createjs.Stage(bg_canvas); 
/* Overriding ticker goes here */ 
createjs.Ticker.addEventListener('tick', Stage['Background']); 

решается с помощью раствора MARKE в

stage['background'] = new createjs.Stage(bg_canvas); 

var delay = 3; 
var ticker = function(params){ 
    if(delay===0){ 
    delay = -1; 
    stage['background'].update(); 
    delay = 3; 
    } 
    delay--; 
}; 
createjs.Ticker.addEventListener('tick', ticker); 

другое решение для получения целевого FPS

stage['background'] = new createjs.Stage(bg_canvas); 

var timestamp = new Date().getTime(); 
var ticker = function(){ 
    var now = new Date().getTime(); 
    if ((now - timestamp) > (1000/15)){ 
     stage['background'].update(); 
     timestamp = new Date().getTime(); 
    } 
}; 
createjs.Ticker.addEventListener('tick', ticker); 

ответ

4

С EaselJS имеет 1 (всего 1) центральный Ticker, который выдает "галочку" событий, вам придется активировать вторую функцию тика.

Чтобы сделать это, вы просто установить задержку обратного отсчета и ждать, чтобы фактически делать анимацию, пока отсчет не достигнет 0.

// make tickGUI() the tick handler for stage['GUI'] 
createjs.Ticker.addEventListener('tick', tickGUI); 

// make tickBackground() the tick handler for stage['Background'] 
createjs.Ticker.addEventListener('tick', tickBackground); 


// tickGUI animates on every tick 
function tickGUI(){ 
    // do your animating stuff for GUI now 
} 


// tickBackground has a "2 ticks=1 animation" throttle 
var tickBackgroundDelay=1; 

function tickBackground(){ 
    if(tickBackgroundDelay==0){ 

     // [optionally] turn off this ticker until you process your animation 
     tickBackgroundDelay=-1; 

     // do your animating stuff for Background now 

     // turn on this ticker with delay=1 
     tickBackgroundDelay=1; 
    } 
    // countdown the delay ticker 
    tickBackgroundDelay--; 
} 
+1

редактировал свой ответ, чтобы обеспечить отдельные обработчики клеща для этапа [ «GUI»] и стадии ['Задний план'] – markE

 Смежные вопросы

  • Нет связанных вопросов^_^