关于save()和restore()问题(好帮手慕灰灰请进)
不小心手滑点到采纳了,没办法再接着问,不好意思
原问题【save()是不是一次性的,我发现save()以后,用restore()恢复,第一次有效,第二次就无法再回到之前save()的环境了】
这里说的第二次是指只用了一次save(),使用第二次restore()读取它之前环境时是无效的,请老师帮忙解答
14
收起
正在回答
3回答
同学你好,理解的没有问题,save方法是一次性的。第二次不能只使用restore恢复状态,还需要再次保存之前的状态:
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
人生的起源
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还原为默认黑色?
组件化思想开发电商网页 18版
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星