将图像从本地存储加载到画布仅每秒刷新一次
Loading image from localStorage to canvas works only every second refresh?
>我有一个小画布,每次单击它时都会绘制随机矩形。在每个添加的新矩形上,整个画布都会保存到 localStorage。
刷新网页时,将加载本地存储中上次保存的图像。
问题:我必须刷新两次才能获得最后一个图像/捕获。有一次,瑞瑞只给了我一张空白的画布。这是为什么呢?
索引.html:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="./script.js"></script>
</head>
<body>
<canvas onclick="draw(this, event);" id="drawarea" height="240" width="320" style="border:1px solid black;">
</canvas>
</body>
</html>
脚本.js:
"use strict;"
window.onload=function(){
c=document.getElementById("drawarea");
if (c) initCanvas(c);
};
function initCanvas(canvas){
// Load last canvas
loadLastCanvas(canvas);
}
function draw(canvas, event){
// Draw at random place
ctx=c.getContext("2d");
ctx.fillStyle="#ff0000";
ctx.beginPath();
ctx.fillRect (250*Math.random()+1, 220*Math.random()+1, 40, 30);
ctx.closePath();
ctx.fill();
// Save canvas
saveCanvas(canvas);
}
function saveCanvas(c){
localStorage['lastImgURI']=c.toDataURL("image/png");
}
function loadLastCanvas(c){
if (!localStorage['lastImgURI']) return;
img = new Image();
img.src= localStorage['lastImgURI'];
ctx=c.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
}
问题是img.src = ""
是一个异步调用。因此,您必须向onload
事件添加回调。有关详细信息,请参阅 html5canvastutorials.com。
function loadLastCanvas(c){
if (!localStorage['lastImgURI']) return;
img = new Image();
img.onload = function() {
ctx=c.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
};
img.src= localStorage['lastImgURI'];
}
相关文章:
- 只有当选项卡/窗口有焦点时,页面才能每5秒刷新一次
- 将图像从本地存储加载到画布仅每秒刷新一次
- 使用年、月、日期、小时、秒格式每分钟刷新一次图像
- 对于特定的URL,每5秒刷新一次表
- 仅当图像完全可用时,每秒刷新一次图像
- 如何制作每 10 秒刷新一次的 jquery 表
- Javascript - 如何从文件加载变量并每 3 秒刷新一次
- 每秒刷新一次集合
- Chrome 扩展程序,每分钟刷新一次页面,并在每次刷新时运行 (javascript) 脚本
- 数据表每 30 秒自动刷新一次不起作用
- Javascript刷新一次而不使用主题标签
- 每 5 秒刷新一次 JSON 填充图表的内容
- 我只想让我的页面刷新一次
- 然后,Jquery 加载内容每 2 秒刷新一次
- GWT 如何每 5 分钟自动刷新一次页面,而无需单击按钮
- 每x秒自动刷新一次Html表
- php值每10秒刷新一次,但我希望它能随页面立即加载
- DIV 只应刷新一次
- 每x秒刷新一次DIV内容,无需永久页面
- 执行javascript,然后每60秒刷新一次脚本