如何在每次KineticJS赛事中挽救舞台?

时间:2014-05-29 20:44:34

标签: javascript json html5 kineticjs

我知道可以使用stage.toJSON函数将KineticJS阶段保存到JSON。我希望在任何时候舞台改变时执行此动作。例如,如果通过draggable移动形状,更改形状的大小,动态更改内部内容,动态添加形状等等,我想运行toJSON函数。等等我真的不想专门监听所有可能的事件,并为每个事件运行相同的代码。我更愿意在一次通话中捕获所有事件。有什么可以帮我做到这一点吗?我意识到可能会有性能损失。在对其进行任何更改时保存阶段是业务要求。幸运的是,此功能仅限于少数用户。谢谢。

1 个答案:

答案 0 :(得分:0)

  

如何在每次KineticJS活动中保存舞台?

答案:当发生任何KineticJS事件时,请致电stage.toJSON

  

是否有任何KineticJS事件处理程序可以侦听任何事件?

答案:实际上,有一个严厉的选项。

您可以要求侦听KineticJS可以生成的每个事件,因为.on()方法可以接受多个以空格分隔的事件类型。

根据eventType加上您的设计考虑,您将完成决定是否stage.toJSON的任务。

节点可以侦听这些事件类型:

// a space-delimited list of all node events that KineticJS can listen for
var allNodeEvents="mouseover mousemove mouseout mouseenter mouseleave mousedown mouseup click dblclick touchstart touchmove touchend tap dbltap dragstart dragmove dragend";

舞台可以监听这些事件类型:

// a space-delimited list of all stage events that KineticJS can listen for
var allStageEvents="contentMouseover contentMousemove contentMouseout contentMousedown contentMouseup contentClick contentDblclick contentTouchstart contentTouchmove contentTouchend contentTap contentDblTap";

您可以监听任何所有Node + Stage事件,如下所示:

// listen for all possible Node events
node.on(allNodeEvents,function(event){

    // get the type of this event
    var eventType=event.type;

    // Do stage.toJSON 
    //(or not based on eventType and other design specific considerations

});


// listen for all possible Stage events
stage.on(allStageEvents,function(event){

    // get the type of this event
    var eventType=event.type;

    // Do stage.toJSON 
    //(or not based on eventType and other design specific considerations

});