簡體   English   中英

Kinetic.js負載問題

[英]Kinetic.js Load Issues

我正在嘗試從數據庫加載一個已保存的階段,當我加載它時,它看起來很好,但加載后我無法在舞台上繪制。 我知道在保存之前我可能無法使用加載的對象,但是如何在加載后繪制到舞台上?

我正在使用Kinetic.Node.create(json, 'container'); 但之后我再也無法使用layer.draw();添加到舞台上layer.draw();

有沒有人有什么建議? 什么是重新綁定事件處理程序的好方法。 有沒有好的教程? 謝謝!

編輯:

這是我創建和編輯畫布的代碼。

var stage = new Kinetic.Stage({
        container: 'container',
        width:screen.width*.98,
        height: screen.height*.70,
        id:'stage',
        name: 'stage'
      });

      var layer = new Kinetic.Layer();
      layer.on('mousedown',function(e){ 
      var node = e.targetNode;
      //select(node);
      });

//load
var json= load();
stage = Kinetic.Node.create(json, 'container');

Q1:重新實例化Kinetic.Stage。

您的Kinetic.Node.create命令是重新實例化階段的正確命令。 由於您未提供代碼,因此無法進一步診斷。

var stage = Kinetic.Node.create(yourJSON, 'container');
stage.draw();

Q2:重新綁定事件處理程序。

重新布線事件處理程序的一個好方法是提供.js文件和.json文件。

例如:

創建節點/容器時,添加屬性以指示需要重新連接的事件處理程序:

var circle1 = new Kinetic.Circle({
    x:100,
    y:100,
    radius: 30,
    fill: 'red',

    // this circle should be rewired with myClickHandler1
    clickEvent:"myClickHandler1"

});

將所有事件處理程序放在與.json文件一起提供的.js文件中:

var eventHandlers={
    myClickHandler1:function(e){alert("Fired clickHandler1");},
}

然后你可以從.js文件重新連接事件處理程序,如下所示:

function rewireHandlers(node){

    var handler;

    // rewire click handler
    handler=node.getAttr("clickEvent");
    if(handler && eventHandlers[handler]){
        node.on("click",eventHandlers[handler])
    }

    // rewire other event handlers the same way
}

// rewire all nodes and containers

stage.getChildren().each(function(node){
   node.rewireHandlers(node);
});    

首先在你的json字符串中你需要將所有“className”:“Kinetic.Group”替換為“className”:“Group”然后嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM