我一直在尝试使用easeljs库重用元素时遇到问题。我是否使用 clone()方法,我只能获得一个实例,然后像onPress这样的事件将停止为新元素工作。
在多个容器上添加相同的对象将使对象随处消失。 我一直在寻找解决方法,弄乱我的代码并浪费资源。
提前感谢您的任何帮助或提示。
答案 0 :(得分:5)
如果您使用 Shape的图形,您可能需要考虑将 true 作为参数传递。
var boxClone = box.clone(true);
来自CreateJs文档的: http://www.createjs.com/Docs/EaselJS/classes/Shape.html#method_clone
clone ( recursive )
返回此Shape的克隆。某些特定于此实例的当前上下文的属性将恢复为其默认值(例如.parent)。
参数:递归
如果为true,则还将克隆此Shape的Graphics实例。如果为false,则将与新Shape共享Graphics实例。
答案 1 :(得分:1)
这样的事情怎么样?不确定这是不是你想要的但是...... 也许它会帮助别人。
var canvas, stage;
function init() {
canvas = document.getElementById("testCanvas");
//check to see if we are running in a browser with touch support
stage = new createjs.Stage(canvas);
createjs.Ticker.setFPS(24);
createjs.Ticker.addListener(window);
var width = 50;
var height = 50;
var padding = 5;
var box = new createjs.Shape();
box.graphics.beginFill("#FF0099").drawRect(0, 0, width, width).endFill();
var l = 25;
var cols = 7;
for(var i=0;i<l;i++) {
var boxClone = box.clone();
boxClone.x = (width+padding) * (i%cols);
boxClone.y = (height+padding) * (i/cols|0);
boxClone.index = i;
boxClone.onClick = handleClick;
stage.addChild(boxClone);
}
}
function handleClick(event) {
console.log(event.target);
}
function tick() {
stage.update();
}