我是靠谱客的博主 陶醉小伙,最近开发中收集的这篇文章主要介绍【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】动画封装(游戏前置)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部