我试图让基本的演示用于PhysicsJS,但是我得到了我不明白的结果。
我有一个只有一页的HTML文件如下..。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>PhysicsJS</title>
<style>
body {
background: white;
}
#viewport {
border: 1px solid #666;
}
</style>
</head>
<body>
<canvas id="viewport" width="500" height="500"></canvas>
<script src="http://wellcaffeinated.net/PhysicsJS/assets/scripts/vendor/physicsjs-0.6.0/physicsjs-full-0.6.0.min.js"></script>
<script>
Physics(function(world){
var renderer = Physics.renderer('canvas', {
el: 'viewport',
width: 500,
height: 500
});
world.add( renderer );
var square = Physics.body('rectangle', {
x: 250,
y: 250,
width: 50,
height: 50
});
world.add( square );
world.render();
});
</script>当在Safari浏览器中加载这段代码时,我会得到一个没有方格的空白画布。
然而,当我打开调试工具并查看资源时,我将这个方块看作是一个Base64映像。
截图:https://drive.google.com/file/d/0B0ANLX5liLSFM01uNmswX1VBNUE/edit?usp=sharing
老实说,我不知道我哪里出了问题,为什么图像是这样呈现的。
提前感谢您的帮助。
发布于 2014-09-10 15:43:37
我认为这在技术上是个"bug“。当主体的图像第一次由渲染器创建时,它们被缓存为图像。这是通过以下方式完成的:
var img = new Image();
img.src = canvas.toDataURL('image/png');
return img; //...这意味着,如果图像在渲染程序尝试呈现之前没有“加载”数据url,它就不会出现。这通常不是问题,因为步进和呈现发生在一个循环中。所以下一次它会使它变得很好。但是safari似乎需要很好的时间来加载数据URL.因此,只有一次渲染不起作用。如果你想要的话,你可以把这个记录在github上.但我怀疑你是否需要这个功能。只需设置循环,它就能正常工作:)
https://stackoverflow.com/questions/25735451
复制相似问题