自定义动画

G2 提供了一套动画注册机制,主要用于:

  • 按需引用需要的动画执行函数。
  • 帮助用户自定义动画执行函数。
  1. type Animation = (
  2. element: IGroup | IShape,
  3. animateCfg: AnimateCfg,
  4. cfg: AnimateExtraCfg,
  5. ) => void;
  6. /**
  7. * 根据名称获取对应的动画执行函数
  8. * @param type 动画函数名称
  9. */
  10. export function getAnimation(type: string) {
  11. return ANIMATIONS_MAP[type.toLowerCase()];
  12. }
  13. /**
  14. * 注册动画执行函数
  15. * @param type 动画执行函数名称
  16. * @param animation 动画执行函数
  17. */
  18. export function registerAnimation(type: string, animation: Animation) {
  19. ANIMATIONS_MAP[type.toLowerCase()] = animation;
  20. }

示例

  1. import { registerAnimation } from '@antv/g2';
  2. // Step 1: 定义动画执行函数
  3. function fadeIn(
  4. shape: IShape | IGroup,
  5. animateCfg: AnimateCfg,
  6. cfg: AnimateExtraCfg,
  7. ) {
  8. const endState = {
  9. fillOpacity: isNil(shape.attr('fillOpacity'))
  10. ? 1
  11. : shape.attr('fillOpacity'),
  12. strokeOpacity: isNil(shape.attr('strokeOpacity'))
  13. ? 1
  14. : shape.attr('strokeOpacity'),
  15. opacity: isNil(shape.attr('opacity')) ? 1 : shape.attr('opacity'),
  16. };
  17. shape.attr({
  18. fillOpacity: 0,
  19. strokeOpacity: 0,
  20. opacity: 0,
  21. });
  22. shape.animate(endState, animateCfg);
  23. }
  24. // Step 2: 注册动画执行函数
  25. registerAnimation('fadeIn', fadeIn);
  26. // Step 3: 使用
  27. chart.interval().animate({
  28. appear: {
  29. animation: 'fadeIn',
  30. },
  31. });

API 链接