用easeljs复制对象

时间:2012-10-10 22:49:14

标签: html5 easeljs createjs

我一直在尝试使用easeljs库重用元素时遇到问题。我是否使用 clone()方法,我只能获得一个实例,然后像onPress这样的事件将停止为新元素工作。

在多个容器上添加相同的对象将使对象随处消失。 我一直在寻找解决方法,弄乱我的代码并浪费资源。

提前感谢您的任何帮助或提示。

2 个答案:

答案 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();
    }