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