根本的な問題の修正もありませんが、コードに遅延を追加しない別の不完全な回避策を考え出しました。最初にダミーオブジェクトをキャンバスに描画します。次に、アニメーションオブジェクト(またはドラッグ可能なオブジェクト。ドラッグでも発生するため)を描画します。最初に描画されたオブジェクトは永続的であるようです(つまり、適切にクリアできません)。KineticJsを使用して、次のことを行います... 1.)ステージを作成します。2。)オブジェクトを描画します(背景としてステージのサイズの長方形のように。オブジェクトは透明にすることはできません)、3。)レイヤーをステージに追加し、4。)layer.draw()を実行します。
その後、キャンバスに何でも描画でき、Androidでは正常に動作します。(以下の例を参照してください。背景がない場合、オブジェクトは最初のドラッグで複製されます。テストするには、背景の不透明度を0に設定します)。
注意:これまでの私の経験では、これは任意のレイヤーの最初のオブジェクトで発生しています。そのため、ステージの各レイヤーを微調整する必要があります。アプリケーションによっては、コードにタイミング遅延を追加するよりも良い場合とそうでない場合があります。
これは、Android4.1.x以降のAndroidのバグのようです。4.0.xでは発生しません。また、今週送信された4.1.2への最近のアップグレードでは修正されていません。同様の問題がCSSのoverflow-xプロパティの設定に関連付けられています(http://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q3%colspec=ID%20Type%を参照) 20Status%20Owner%20Summary%20Stars&groupby =&sort =&id = 35474)。
<script>
window.onload = function() {
var stage = new Kinetic.Stage({
container: "container",
width: 578,
height: 200
});
var boxLayer = new Kinetic.Layer();
stage.add(boxLayer);
var background = new Kinetic.Rect({
x: rectX,
y: rectY,
width: 578,
height: 200,
fill: "white",
stroke: "white",
strokeWidth: 4,
draggable: false
});
boxLayer.add(background)
boxLayer.draw();
var rectX = stage.getWidth() / 2 - 50;
var rectY = stage.getHeight() / 2 - 25;
var box = new Kinetic.Rect({
x: rectX,
y: rectY,
width: 100,
height: 50,
fill: "#00D2FF",
stroke: "black",
strokeWidth: 4,
draggable: true,
opacity: 1.0
});
boxLayer.add(box);
boxLayer.draw();
};
</script>