Expressions.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import CompExpressionInterface from './CompInterface';
  2. import ExpressionManager from './ExpressionManager';
  3. const Expressions = (function () {
  4. var ob = {};
  5. ob.initExpressions = initExpressions;
  6. ob.resetFrame = ExpressionManager.resetFrame;
  7. function initExpressions(animation) {
  8. var stackCount = 0;
  9. var registers = [];
  10. function pushExpression() {
  11. stackCount += 1;
  12. }
  13. function popExpression() {
  14. stackCount -= 1;
  15. if (stackCount === 0) {
  16. releaseInstances();
  17. }
  18. }
  19. function registerExpressionProperty(expression) {
  20. if (registers.indexOf(expression) === -1) {
  21. registers.push(expression);
  22. }
  23. }
  24. function releaseInstances() {
  25. var i;
  26. var len = registers.length;
  27. for (i = 0; i < len; i += 1) {
  28. registers[i].release();
  29. }
  30. registers.length = 0;
  31. }
  32. animation.renderer.compInterface = CompExpressionInterface(animation.renderer);
  33. animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);
  34. animation.renderer.globalData.pushExpression = pushExpression;
  35. animation.renderer.globalData.popExpression = popExpression;
  36. animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;
  37. }
  38. return ob;
  39. }());
  40. export default Expressions;