Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 Node.create from JSON object literal_Javascript_Jquery_Html5 Canvas_Kineticjs - Fatal编程技术网

Javascript KineticJS Node.create from JSON object literal

Javascript KineticJS Node.create from JSON object literal,javascript,jquery,html5-canvas,kineticjs,Javascript,Jquery,Html5 Canvas,Kineticjs,我一直在尝试加载一个层(放弃尝试使用层,开始尝试使用stage),并使用KineticJS.toJSON()方法将其保存为JSON对象文本。我一直在调试我的脚本,在调用Kinetic.Node.create之前,一切似乎都很好。这是我的密码: var stage = new Kinetic.Stage({ container: 'container', width: 1000, height: 650 }); var check; $(document).on({ c

我一直在尝试加载一个层(放弃尝试使用层,开始尝试使用stage),并使用KineticJS.toJSON()方法将其保存为JSON对象文本。我一直在调试我的脚本,在调用Kinetic.Node.create之前,一切似乎都很好。这是我的密码:

var stage = new Kinetic.Stage({
    container: 'container',
    width: 1000,
    height: 650
  });
var check;
$(document).on({
click: function(){

    check = stage.toJSON();

}
},'#save');

$(document).on({
click: function(){
    try{
       //parse check string into object literal
       var s = JSON.parse(check);
       //check if s is object literal
       if( Object.prototype.toString.call(s) === '[object Object]' ) {

            //this is where the code stops executing
            stage = Kinetic.Node.create(s,'container');
            stage.draw();
       }
    }
    catch(e){
        console.debug(e.stack);
        console.trace();
    }
}
},'#load');
我的HTML:

<div id="container">

</div>
<div id="buttons">
<button id="save">
    Save
</button> 
<button id="load">
    Load
</button>
</div>

不确定我是否做错了什么,如果有任何帮助,我们将不胜感激。

为了使用
Kinetic.Node.create
您需要传递保存的相同字符串(
检查
),而不是parsedJSON字符串(
s
) 因此,您的命令基本上应该如下所示:

var newNode = Kinetic.Node.create(stage.toJSON());
将stage.toJSON替换为保存该字符串的变量


这应该给你正确的想法。或者,只需打开开发工具并在保存后放置断点。将现在包含stage的变量的值复制为JSON字符串,然后在控制台中以复制的字符串作为参数运行
dynamic.Node.create

.create()
调用中,您将
'container'
作为字符串传递,但在dynamic.Node.create的文档中,它说它应该是一个DOM元素,而不是一个字符串。感谢您的回复,但是我认为这不是问题所在,因为我已经尝试加载其他对象,如层,但没有可选的DomeElement容器,并且它发送相同的错误。另外,我在上查看了这个示例,它使用了相同的语法。文档中说“只有在创建阶段节点时才使用可选容器dom元素”,因此阶段可能需要它,但层/其他对象可能不需要。我仍然使用与画布加载示例中使用的语法完全相同的语法,我得到了错误
var newNode = Kinetic.Node.create(stage.toJSON());