2016-02-28 3 views
0

Как удалить только фигуру, созданную в CreateJS? Для моего примера я создал несколько квадратов с функцией, называемой createSquare. Моя цель состоит в том, чтобы иметь функцию или событие клика, которое удаляет только квадрат, который щелкнут.Удалить форму при щелчке с помощью CreateJS

Я пробовал прослушиватели событий и по щелчку, и им не повезло. Я прокомментировал код, который я пытался использовать.

Here is a link to a working fiddle.

JS выглядит следующим образом:

var canvas; 
var stage; 
var square; 

function init() { 
    canvas = document.getElementById("canvas"); 
    stage = new createjs.Stage(canvas); 
} 

function createSquare(){ 
    square = new createjs.Shape(); 
    square.graphics.beginFill("red").drawRect(0, 0, 50, 50) 
    square.x = Math.random() * canvas.width; 
     square.y = Math.random() * canvas.height; 
    stage.addChild(square); 
    stage.update(); 
} 

// This code should remove the squares 
/* 
square.on("click", function(evt) { 
    stage.removeChild(this); 
}); 
*/ 

window.onload = init(); 

createSquare(); 
createSquare(); 
createSquare(); 
createSquare(); 
createSquare(); 
createSquare(); 

ответ

2

обработчики событий в CreateJS передаются в event object. События мыши получают MouseEvent.

Целью мероприятия будет то, что было нажато.

square.on("click", function(evt) { 
    stage.removeChild(evt.target); 
    stage.update(); 
}); 

Вам нужно будет добавить слушателя к каждому квадрату при его создании.

В качестве альтернативы, вы могли бы прослушать сцену один раз.

stage.on("click", function(evt) { 
    stage.removeChild(evt.target); 
    stage.update(); 
}); 
+0

скрипку для любознательных: https://jsfiddle.net/w1vssodr/3/ – vzwick

+0

Это имеет смысл, и очищает мое замешательство. Если я добавлю другие фигуры, добавит ли событие к каждому квадрату лучшее решение? Например, что, если я хочу сделать несколько разные события для квадрата и круга? Скрипт вашего другого решения https://jsfiddle.net/w1vssodr/5/ – DRB

+0

Я бы порекомендовал один обработчик событий. Вы можете легко добавить свойство в форму, которая указывает, что это такое, и проверить это в обработчике кликов. Вот обновленная скрипка, показывающая, как квадраты удаляются, а круги уменьшаются в альфе. https://jsfiddle.net/lannymcnie/w1vssodr/6/ – Lanny

Смежные вопросы