canvas学习总结

15 篇文章 3 订阅
/**
 * 1、制作动画使用window.requestAnimationFrame方法,体验更好
 * requestAnimationFrame会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率
 * 在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的CPU、GPU和内存使用量
 * requestAnimationFrame是由浏览器专门为动画提供的API,在运行时浏览器会自动优化方法的调用,并且如果页面不是激活状态下的话,动画会自动暂停,有效节省了CPU开销
 */
(function() {
    var lastTime = 0;
    var vendors = ['webkit', 'moz','ms','o'],x,len = vendors.length;
    for(x = 0; x < len && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame =
            window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
    }
    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
                timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };

    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };
}());
/**
 * 2、绘制线等基础方法,在计算整数的基础上+0.5,处理锯齿情况
 */
var getFloatVal = function(x){
    return Math.ceil(x)+ 0.5|| Math.floor(x)+0.5||Math.round(x)+0.5;
};
 
/**
 * 3、excanvas.js
 * 他是利用IE支持的VML对象来模拟Canvas的绘图的。
 * ecxcanvas.js首先创建Canvas对象,
 * 然后把所有有关Canvas的绘图操作都用相应的VML对象来实现,所以我们在低版本的ie中也能看到Canvas图像了
 */
//G_vmlCanvasManager_.init();这句语句遍历了页面中所有的canvas元素,然后初始化这些元素,
// 亦即是将标准canvas的那些个方法赋予ie下的canvas
//动态创建canvas时需要自己执行该方法


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值