Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击时克隆项目(Html5画布)_Javascript_Html5 Canvas_Addchild - Fatal编程技术网

Javascript 单击时克隆项目(Html5画布)

Javascript 单击时克隆项目(Html5画布),javascript,html5-canvas,addchild,Javascript,Html5 Canvas,Addchild,我是html5画布新手,我面临一些问题。下面的代码将在单击某个对象时克隆该对象,并可以将其拖动。但它只工作一次,当我再次单击该对象时,克隆将移回其原始原点。如何在每次单击它时进行多次克隆?并使克隆在拖动时保持在原来的位置 这里有一个 我无法测试这一点,因为我没有您的上下文,但我认为您需要做的是将所有处理克隆的代码放在事件侦听器中,就像我下面所做的那样 这样,每个事件都将创建克隆的新副本,您遇到的冲突应该消失 item = new lib.item104(); this.addChild(ite

我是html5画布新手,我面临一些问题。下面的代码将在单击某个对象时克隆该对象,并可以将其拖动。但它只工作一次,当我再次单击该对象时,克隆将移回其原始原点。如何在每次单击它时进行多次克隆?并使克隆在拖动时保持在原来的位置

这里有一个


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

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

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;
}

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

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

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;
}

伟大的它就像我想要的那样工作。非常感谢您的时间和帮助!伟大的它就像我想要的那样工作。非常感谢您的时间和帮助!