【问题标题】:Clone items when clicked (Html5-canvas)单击时克隆项目(Html5-canvas)
【发布时间】:2019-12-25 03:38:17
【问题描述】:

我是 html5-canvas 的新手,我遇到了一些问题。下面的代码将在单击对象时克隆一个对象,并且也可以拖动它。但它只工作一次,当我再次单击该对象时,克隆将移回其原始原点。每次单击时如何克隆多次?并使克隆在拖动时保持在原位。

这是preview

item = new lib.item104();

this.addChild(item);
item.x = 250;
item.y = 350;
item.scaleX = item.scaleY = 1;

var Clone;
Clone = new lib.anim104();

item.addEventListener("click", itemPressed.bind(this));
function itemPressed(evt) {
    this.addChild(Clone);
    Clone.x = 250;
    Clone.y = 200;
    Clone.scaleX = Clone.scaleY = 1.5;
}

Clone.addEventListener("pressmove", dragClone.bind(this));
function dragClone(evt) {
    var p = this.globalToLocal(evt.stageX, evt.stageY);
    evt.currentTarget.x = p.x;
    evt.currentTarget.y = p.y;
}

【问题讨论】:

    标签: javascript html5-canvas addchild


    【解决方案1】:

    我无法对此进行测试,因为我没有您的上下文,但我认为您需要做的就是将处理克隆的所有代码放入事件侦听器中,就像我在下面所做的那样。

    这样,每个事件都会创建一个新的克隆副本,您遇到的冲突应该会消失。

    item = new lib.item104();
    
    this.addChild(item);
    item.x = 250;
    item.y = 350;
    item.scaleX = item.scaleY = 1;
    
    item.addEventListener("click", itemPressed.bind(this));
    
    function itemPressed(evt) {
      var Clone;
      Clone = new lib.anim104();
    
      this.addChild(Clone);
      Clone.x = 250;
      Clone.y = 200;
      Clone.scaleX = Clone.scaleY = 1.5;
      Clone.addEventListener("pressmove", dragClone.bind(this));
    }
    
    function dragClone(evt) {
      var p = this.globalToLocal(evt.stageX, evt.stageY);
      evt.currentTarget.x = p.x;
      evt.currentTarget.y = p.y;
    }
    

    【讨论】:

    • 太棒了!!它就像我想要的那样工作。非常感谢您的时间和帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2016-10-27
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多