Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使kineticjs使用现有画布_Javascript_Canvas_Kineticjs - Fatal编程技术网

Javascript 使kineticjs使用现有画布

Javascript 使kineticjs使用现有画布,javascript,canvas,kineticjs,Javascript,Canvas,Kineticjs,我正在尝试与现有画布一起使用。问题在于,dynamic.js API要求您指定容器元素的id,然后dynamic.js创建一个dynamic.Stage(它创建并使用自己的画布) 例如: var stage = new Kinetic.Stage({ container: 'container', width: 578, height: 200 }); var layer = new Kinetic.Layer(); var rect = new Kine

我正在尝试与现有画布一起使用。问题在于,dynamic.js API要求您指定容器元素的id,然后dynamic.js创建一个
dynamic.Stage
(它创建并使用自己的画布)

例如:

var stage = new Kinetic.Stage({
    container: 'container',
    width: 578,
    height: 200
  });

  var layer = new Kinetic.Layer();

  var rect = new Kinetic.Rect({
    x: 239,
    y: 75,
    width: 100,
    height: 50,
    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>
var阶段=新的动力学阶段({
容器:'容器',
宽度:578,
身高:200
});
var layer=新的动能层();
var rect=新的动能.rect({
x:239,
y:75,
宽度:100,
身高:50,
填充:“绿色”,
笔画:“黑色”,
冲程宽度:4
});
//将形状添加到层中
层。添加(rect);
//将层添加到舞台
阶段。添加(层);
我希望能够将现有的canvas元素与kinetic.js一起使用,而不是创建自己的元素。这可能吗

A以前被问过,但是它似乎没有提供正确的答案


有什么想法吗?谢谢

html画布只是一堆像素

您可以将这些像素转换为图像,然后将该图像用作Kinetic.image的源

// create an image from the existing canvas

var canvas2Image=new Image();
canvas2Image.onload=function(){

    // create a Kinetic.Image using that image

    var kImage=new Kinetic.Image({
        x:0,
        y:0,
        width:canvas2Image.width,
        height:canvas2Image.height,
        image:canvas2Image
    });

}
canvas2Image.src=canvas.toDataURL();

我试图让kinetic使用现有画布作为舞台,而不是创建另一个画布的kinetic image对象。我希望kinetic能够将kinetic层应用到我创建的画布上,而不是通过实例化
kinetic.Stage
Understand…将现有html画布插入kinetic中是不可能的--苹果vs橙子。然而,“像素就是像素——仅此而已”。由于html画布只是像素,您可以使用这些像素轻松填充Kinetic.Image。如果您正在对html画布执行动态操作,只需(1)var kImage=Kinetic.Image,并且每当html画布更新时(2)kImage.setImage(canvas2Image)。如果您已经为html画布创建了“智能对象”,那么您的任务就是将这些JS对象移植到Dynamic对象中。干杯另外一个想法是:Dynamic.Shape为您提供了一块空白画布。可以使用常用的上下文命令在画布上绘制。因此,您可以在html画布上抓取正在执行的任何操作,并在Dynamic.Shape上轻松执行相同的操作:(警告:Dynamic.Shape提供给您的画布/上下文存在一些限制。它们大多是围绕实际html画布+上下文的全功能包装。您可以使用此.getContext()获取实际上下文;