gpt4 book ai didi

javascript - 使用kineticjs中的所有元素加载阶段

转载 作者:行者123 更新时间:2023-11-28 08:58:04 25 4
gpt4 key购买 nike

我尝试从 json 文件加载我的简单舞台,我加载图像,但它都在一层中,并且图像不在组中,因此调整大小不起作用,我不知道应该如何加载带有层的所有元素和组;

这是我要加载的函数(目前只是图像)

   function load(loadStage) {
counter = 2;
activeStage = stage;
stage = Kinetic.Node.create(loadStage,'right');
var background = stage.get('.background');
var backgroundImage = stage.get('.backgroundImage');
var clipartsImage = stage.get('.image');
var text = stage.get('.text');
console.log(stage.getChildren());


for(i=0;i<clipartsImage.length;i++){
counter++;
(function() {

var image = clipartsImage[i];
groups[counter] = image.parent.get;
//console.log(image);
var imageObj = new Image();
imageObj.onload = function() {
imageObj.src = image.attrs.src;
console.log(image);
image.setImage(imageObj);

image.on('mouseover', function() {
document.body.style.cursor = 'pointer';
});
image.on('mouseout', function() {
document.body.style.cursor = 'default';
});

image.on('click', function(evt) {
this.children[0].children[3].show();
var shape = evt.targetNode;
this.moveToTop();
active = layers[shape.getId()];
objectId = shape.getId();
});
image.getLayer().draw;
};
imageObj.src = image.attrs.src;
})();

stage.draw();
}
stage.draw();
}

这是我的 json 文件,http://wklej.org/id/1105520/这是中期阶段。我会继续尝试,但如果有人遇到类似的问题并解决了它,我将不胜感激您的帮助:)

最佳答案

1)

您的 JSON 文件发生了什么? Base64 字符串已膨胀为一百万行...

对于初学者来说,KineticJS.Layer 不能将层作为子层。引用文献:

https://github.com/ericdrowell/KineticJS/wiki/Change-Log#455-july-28-2013

new add() validation. An error is thrown if invalid children are added to a parent, for example, when adding a layer to another layer.

https://github.com/ericdrowell/KineticJS/wiki

KineticJS event not fired for child of a grouped layer

在 JSON 文件中,有大量相互分层的层,这肯定会导致问题。实际上,看起来您拥有的每个组都有一个层!这是完全错误的 KineticJS 结构。

您应该对如何以及何时使用图层和组进行一些研究,以下是一些引用:

What are the differences between group and layer in KineticJs

https://github.com/ericdrowell/KineticJS/wiki (同样,KineticJS 的数据结构层次结构)

2)

无需调用stage.draw()两次。

3)

JSON是一种数据格式,它只存储对象属性。这意味着它存储对附加到对象的事件的任何引用。

这意味着当您加载 JSON 字符串时,您必须再次将 updateAnchor 函数重新绑定(bind)到所有 anchor 。 (类似于将 click 函数重新绑定(bind)到加载图像的方式)

使用 JSON 文件创建阶段后,您必须在加载函数中执行类似的操作:

var children = layer.getChildren(); //Use the layer that has all your groups with images/anchors. *REMEMBER you can't layers within layers!

for (var i=0; i<children.length; i++) {
//If name starts with 'anchor'
if (children.getName().indexOf('anchor') !== -1) {
children[i].on('dragmove', function(evt) {
updateAnchor(this);
layer.draw();
});
}
}

关于javascript - 使用kineticjs中的所有元素加载阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com