关于save()和restore()问题(好帮手慕灰灰请进)

关于save()和restore()问题(好帮手慕灰灰请进)

不小心手滑点到采纳了,没办法再接着问,不好意思

原问题【save()是不是一次性的,我发现save()以后,用restore()恢复,第一次有效,第二次就无法再回到之前save()的环境了】

这里说的第二次是指只用了一次save(),使用第二次restore()读取它之前环境时是无效的,请老师帮忙解答

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,理解的没有问题,save方法是一次性的。第二次不能只使用restore恢复状态,还需要再次保存之前的状态:

http://img1.sycdn.imooc.com//climg/5e09665709dc64b306220393.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

提问者 人生的起源 2019-12-30 02:02:24
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>canvas</title>
    <style type="text/css">
        canvas { border: 1px solid red; }
    </style>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript"></script>
</head>
<body>
<html>
<body>
<canvas id="myCanvas" width="600" height="400">您的浏览器不支持canvas</canvas>

<script type="text/javascript">
    var canvas = document.getElementById('myCanvas');
    var ctx = canvas.getContext('2d');

    ctx.lineWidth = 6;

    //只使用一次save();
    ctx.save();

    ctx.strokeStyle = 'red';
    ctx.arc(100, 100, 50, 0, 2*Math.PI, true);
    ctx.fill();
    ctx.stroke();

    //第一次调用restore();
    ctx.restore();

    ctx.beginPath();
    ctx.fillStyle = 'blue';
    ctx.arc(300, 100, 50, 0, 2*Math.PI, true);
    ctx.fill();
    ctx.stroke();

    //第二次调用restore();
    ctx.restore();

    ctx.beginPath();
    ctx.arc(500, 100, 50, 0, 2*Math.PI, true);
    ctx.fill();
    ctx.stroke();
</script>
</body>
</html>
</body>
</html>

第一次使用restore()方法,strokeStyle有恢复到save()之前的默认黑色
第二次使用restore()方法,fillStyle就没有恢复到save()之前的默认黑色了
这里面我只用了一次save(),所以我想问save()是不是一次性的,不然为什么第二次使用restore()方法,无法让fillStyle还原为默认黑色?

好帮手慕夭夭 2019-12-26 11:21:22

同学你好,上次同学说自己进行了测试,建议把测试的代码粘贴到问答区,以便老师准确的针对你的问题进行分析。

祝学习愉快!

  • 提问者 人生的起源 #1
    我把代码贴到上面了,老师帮忙看下
    2019-12-30 02:03:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师