我是靠谱客的博主 陶醉小伙,这篇文章主要介绍【canvas】动画封装(游戏前置)【canvas】动画封装(游戏前置),现在分享给大家,希望可以做个参考。

【canvas】动画封装(游戏前置)

在这里插入图片描述

canvas动画要求

1.不停渲染
2.可控

使用相关方法

1.es6定义类 解决封装问题
2.requestAnimationFrame 解决动画渲染问题(兼容替换方法 setInterval,setTimeout)

export default class AnimationFrame {
    constructor(p) {
        p = p || {};
        this.repeat = p['repeat']; // 需要执行的循环方法句柄
        this.stopCallback = p['stopCallback']; // 需要执行的回调方法句柄
        this.running = false; // 属性,查看该对象是否在运行
        this.requestStop = false; // 循环执行方法中如果发现该属性为true,就停止执行
        this.repeatCount = 0; // 循环执行的次数。
    }

    _run(source) {
        if (source.requestStop) return;
        if (source.repeat) {
            requestAnimationFrame(function () {
                source._run(source);
            });
            source.repeat(source.repeatCount++);
        }
    }

    start() {//开始渲染
        this.repeatCount = 0;
        this.running = true;
        this.requestStop = false;
        this._run(this);
    }
    
    stop() {//停止渲染
        this.requestStop = true;
        this.running = false;
        if (this.stopCallback) {
            this.stopCallback();
        }
    }
}

注意点

1.参数中repeat和stopCallback只是句柄,不是回调函数,注意用法
2.stop后并不是初始化,状态仍旧保持,start后会继续渲染

使用示例

假设封装文件名为requestAnimationFrame.js

import requestAnimationFrame from '../requestAnimationFrame.js'
let RAF = new requestAnimationFrame();
RAF.repeat=function(repeatCount){ //repeatCount参数选填,可以让对象模拟出状态
	/*
  	渲染主体内容
  */
}
RAF.start();//开始渲染
RAF.stop();//停止渲染

最后

以上就是陶醉小伙最近收集整理的关于【canvas】动画封装(游戏前置)【canvas】动画封装(游戏前置)的全部内容,更多相关【canvas】动画封装(游戏前置)【canvas】动画封装(游戏前置)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部