Skip to content
APISprite 精灵图

Sprite 精灵图

类信息

Sprite 类用于创建精灵动画,可以从一张包含多个帧的图片中播放动画序列,是 Konva 中专门用于处理精灵动画的形状类。主要功能包括:

  1. 动画序列管理
  • 支持定义多个动画序列
  • 每个动画序列由多个帧组成,每帧用 x, y, width, height 坐标定义
  1. 动画控制
  • start(): 开始播放动画
  • stop(): 停止动画
  • isRunning(): 检查动画是否正在运行
  1. 帧率控制
  • 可以设置动画的帧率(FPS, Frames Per Second)
  • 默认帧率为 17 FPS

构造函数

构造函数传入 config 参数,绿色部分为相对 Shape 构造函数增加的字段。

字段名类型描述
animationString动画键名
animationsObject动画映射
frameIndex(可选)Integer动画帧索引号(指定初始帧)
imageImage图片对象(精灵图来源)
frameRate (可选)Integer动画帧率
fill (可选)String背景色
fillPatternImage (可选)Image填充图案图片
fillPatternX(可选)Number填充图案(pattern)的 X 轴平移位置
fillPatternY(可选)Number填充图案(pattern)的 Y 轴平移位置
fillPatternOffset(可选)Object填充图案(pattern)的 X/Y 轴偏移位置
fillPatternOffsetX(可选)Number填充图案(pattern)的 X 轴偏移位置
fillPatternOffsetY(可选)Number填充图案(pattern)的 Y 轴偏移位置
fillPatternScale(可选)Object填充图案(pattern)的缩放
fillPatternScaleX(可选)Number填充图案(pattern)的 X 缩放
fillPatternScaleY(可选)Number填充图案(pattern)的 Y 缩放
fillPatternRotation(可选)Number填充图案(pattern)的旋转角
fillPatternRepeat(可选)String填充重复模式(repeat/repeat-x/repeat-y/no-repeat)
fillLinearGradientStartPoint(可选)Object线性渐变填充的起始点
fillLinearGradientStartPointX(可选)Number线性渐变填充的起始点 X 坐标
fillLinearGradientStartPointY(可选)Number线性渐变填充的起始点 Y 坐标
fillLinearGradientEndPoint(可选)Object线性渐变填充的结束点
fillLinearGradientEndPointX(可选)Number线性渐变填充的结束点 X 坐标
fillLinearGradientEndPointY(可选)Number线性渐变填充的结束点 Y 坐标
fillLinearGradientColorStop(可选)Array线性渐变中颜色过渡的关键点
fillRadialGradientStartPoint(可选)Object径向渐变填充的起始点
fillRadialGradientStartPointX(可选)Number径向渐变填充的起始点 X 坐标
fillRadialGradientStartPointY(可选)Number径向渐变填充的起始点 Y 坐标
fillRadialGradientEndPoint(可选)Object径向渐变填充的结束点
fillRadialGradientEndPointX(可选)Number径向渐变填充的起始点 X 坐标
fillRadialGradientEndPointY(可选)Number径向渐变填充的起始点 Y 坐标
fillRadialGradientStartRadius(可选)Number径向渐变填充的起始半径
fillRadialGradientEndRadius(可选)Number径向渐变填充的结束半径
fillRadialGradientColorStops(可选)Array径向渐变中颜色过渡的关键点
fillEnabled(可选)Boolean是否允许填充,默认为 true
fillPriority(可选)String选择填充的模式,纯色/图案/线性渐变/径向渐变
stroke(可选)String描边颜色
strokeWidth(可选)Number描边宽度
fillAfterStrokeEnabled(可选)Boolean是否先描边后填充,默认为 false
hitStrokeWidth(可选)Number击中的描边大小。默认 auto,等于 strokeWidth
strokeHitEnable(可选)Boolean已废弃,建议用 hitStrokeWidth
perfectDrawEnabled(可选)Boolean是否使用缓存画布(效果好,性能差),默认 true
shadowForStrokeEnabled(可选)Boolean启用或禁用描边阴影的标志。默认值为 true
strokeScaleEnabled(可选)Boolean启用或禁用描边缩放的标志。默认值为 true
strokeEnabled(可选)Boolean是否支持描边,默认为 true
lineJoin(可选)String线连接方式 miter/round/bevel,默认 miter
lineCap(可选)String线帽 butt/round/square,默认 butt
shadowColor(可选)String阴影颜色
shadowBlur(可选)Number阴影模糊值
shadowOffset(可选)Object阴影偏移 {x: number, y: number}
shadowOffsetX(可选)Number阴影 X 轴的偏移
shadowOffsetY(可选)Number阴影 Y 轴的偏移
shadowOpacity(可选)Number阴影不透明度
shadowEnabled(可选)Boolean是否启用阴影
dash(可选)number[]虚线描边效果
dashEnabled(可选)Boolean是否启用虚线描边
x (可选)Number位置:x 坐标
y (可选)Number位置:y 坐标
width (可选)Number宽度
height (可选)Number高度
visible (可选)Boolean是否可见
listening (可选)Boolean节点是否正在监听事件
id(可选)String唯一 id
name(可选)String非唯一的名称
opacity(可选)Number不透明度,0 ~ 1 间的数值
scale(可选)Object缩放大小
scaleX(可选)Numberx 方向上的缩放
scaleY(可选)Numbery 方向上的缩放
rotation(可选)Number旋转角度
offset(可选)Object相对于中心点和旋转点的偏移
offsetX(可选)Numberx 方向上的偏移
offsetY(可选)Numbery 方向上的偏移
draggable(可选)Boolean节点是否可被拖拽
dragDistance(可选)Number触发拖拽的距离阈值
dragBoundFunc(可选)function拖拽过程中限制或修改节点的位置的回调函数

自带方法

start()

启动精灵动画。

stop()

停止精灵动画。

isRunning()

确定精灵动画是否处于运行状态,返回 truefalse

animation(anim)

设置/获取动画键名。

参数:

  • anim: String,动画键名

例子:

js
// 获取动画键名
var animation = sprite.animation();

// 设置动画键名
sprite.animation("kicking");

animations(animations)

获取/设置动画序列映射。

例子:

js
// 获取动画序列映射
var animations = sprite.animations();
// 设置动画序列映射
// prettier-ignore
sprite.animations({
  standing: [
    // x, y, width, height (6 帧)
    0, 0, 49, 109,
    52, 0, 49, 109,
    105, 0, 49, 109,
    158, 0, 49, 109,
    210, 0, 49, 109,
    262, 0, 49, 109
  ],
  kicking: [
    // x, y, width, height (6 帧)
    0, 109, 45, 98,
    45, 109, 45, 98,
    95, 109, 63, 98,
    156, 109, 70, 98,
    229, 109, 60, 98,
    287, 109, 41, 98
  ]
});

frameOffsets(offsets)

获取/设置帧偏移。

例子:

js
// 获取帧偏移
var offsets = sprite.frameOffsets();
// 设置帧偏移
// prettier-ignore
sprite.offsets({
    standing: [
    // x, y (6 frames)
    0, 0,
    0, 0,
    5, 0,
    0, 0,
    0, 3,
    2, 0
  ],
  kicking: [
    // x, y (6 frames)
    0, 5,
    5, 0,
    10, 0,
    0, 0,
    2, 1,
    0, 0
  ]
})

image(image)

获取/设置精灵图来源图片。

frameIndex(frameIndex)

获取/设置帧索引。

例子:

js
// 获取动画帧索引
var frameIndex = sprite.frameIndex();

// 设置动画帧索引
sprite.frameIndex(3);

frameRate(frameRate)

获取/设置帧率(FPS)。该值越大,表示精灵图动画越快,该值越小,表示精灵图动画越慢。默认值为 17 FPS。

参数:

  • frameRate: Integer

例子:

js
// 获取帧率
var frameRate = sprite.frameRate();
// 设置帧率为 2 FPS
sprite.frameRate(2);

继承方法