这让我发疯了。如果我在下面运行简单的HTML,它可以在我的IPad2(A1396)上运行,但不能在我的IPad 3(A1416)上运行。每当我将IPad 3从Portrait旋转到Landscape时Safari都会崩溃。我看起来添加的层数与每层的宽度/高度之间存在关系。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v5.0.2.min.js"></script>
<script defer="defer">
var stage = new Kinetic.Stage({
container: 'container',
width: 580,
height: 400
});
var NrOfAttribute = 50;
for (var AttributeNo = 0, NrOfAttribute; AttributeNo < NrOfAttribute; AttributeNo++) {
var layer = new Kinetic.Layer();
var rect = new Kinetic.Rect({
x: 20*AttributeNo,
y: 20*AttributeNo,
width: 50,
height: 10,
fill: 'green',
stroke: 'black',
strokeWidth: 4
});
// add the shape to the layer
layer.add(rect);
// add the layer to the stage
stage.add(layer);
}
</script>
</body>
</html>
这是IPad上的错误还是一些内存问题?任何帮助将不胜感激,因为我真的需要这个工作。
谢谢!
编辑:我刚测试用“常规”Canvas做同样的事情,如果我增加层数它也会崩溃(所以它似乎不是特定的动力学)。如果你增加足够的层数,它也会在Ipad2上崩溃。
答案 0 :(得分:0)
这可能不是您的选择,但是您是否需要为每个Rect分别使用一个图层,或者您可以将它们全部放在同一图层中?我怀疑这有助于减少内存使用量,因为你最终不会得到50个canvas元素。您可以为每个Rect赋予唯一的name
,然后仍然可以使用rect = layer.find('.{name}'); # do something with rect