2013-04-10 6 views
0

Я играл с easeljs, и я обнаружил, что выступления начинают падать. В моем примере Chrome занимает около 3 секунд, чтобы добраться до этого момента, а Safari занимает 25 секунд, Firefox - повсюду.Снижение производительности Easeljs?

Вопросы:

  1. я делаю что-то неправильно?
  2. или это удар производительности, которого я должен ожидать от easeljs?

Пример Чтобы продемонстрировать падение производительности я переживаю, я создал простой круг перерисовывать анимации на петле, но фреймрейт быстро начинает падать. Если я вернусь к чистым API-интерфейсам canvas, он восстановит производительность.

Ниже ключевой отрывок из моей перерисовки, который выбирает метод, чтобы нарисовать круг:

if (counter.fps > 60) { 
    circle.graphics.beginFill('green') 
    circle.graphics.drawCircle(0,0, w/10) 
    circle.graphics.endFill(); 
    stage.update(); 
} else {  
    context.beginPath(); 
    context.arc(circle.x, circle.y, w/10, 0, 2 * Math.PI, false); 
    context.fillStyle = "darkred"; 
    context.fill(); 
} 

Посмотреть этот jsfiddle для демо: http://jsfiddle.net/AshCoolman/5xYxM/9/

Вариации Я пытался с аналогичными результатами :

  • requestAnimationFrame (и pollyfill)
  • Медленные кадров в секунду

(Грубый) сроки исполнения (OSX 10.8.2 на mid2012 Macbook воздуха)

хром v26.0.1410.43

  • 0-3s = 90fps
  • 3s = fps начало падения
  • 6s = fps hits 60fps

Safari v6.0.2 (8536.26).17)

  • 0-20s = 90fps
  • 20s = FPS начинают падать
  • 35s = кадр попадает 60fps

Firefox V20

  • fsFiddle организовано: полностью неустойчивый
  • lo чески организованы: Многое, как производительность Chromes, но гораздо более беспорядочный

ответ

11

EaselJS графики сохраняются, поэтому каждый кадр вы добавляете другое определение круга в Graphics очереди. Таким образом, после 1000 вызовов «перерисовать» каждый раз он отображает 1000 кругов.

Используйте Graphics.clear() для сброса очереди ничьей или просто нарисуйте круг один раз & переместите соответствующую форму (рекомендуется).

Вот модифицированная версия вашей Скрипки, который получает твердые 99fps для меня: http://jsfiddle.net/5xYxM/13/

+0

+1 для хорошего улова глюка ФПА в. Кстати, вы действительно связаны с CreateJS. Если это так, мне нравится ваш код и приятно познакомиться! – markE

+1

Спасибо! Приятно познакомиться с вами @markE. Я - оригинальный создатель библиотек (Грант Скиннер) - рад, что ты им нравишься. – gskinner

+0

Это отлично работает, спасибо за jsfiddle –

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