Если я определяю холст и рисую на нем несколько фигур, то как я могу определить каждую из фигуры или изображения, чтобы объявлять события и другие свойства каждой фигуры. У меня есть прямоугольник и треугольник. Итак, у меня есть какой-то механизм, чтобы определить их как специфическую сущность и я могу с ними разобраться индивидуально. Я знаю о KineticJS, но я хотел бы реализовать эту функцию самостоятельно (для целей обучения). Кто-нибудь может определить, как это сделать. Или может быть алгоритмический подход?Как определить фигуры в холсте?
ответ
не может использовать любую существующую функциональность в DOM для этого. Поэтому вы должны написать это самостоятельно. Вы можете начать с создания объектной модели, как это:
function Shape(x, y) {
var obj = {};
obj.x = x;
obj.y = y;
obj.paint = function(canvasTarget) {
}
return obj;
}
function Rectangle(x, y, width, height) {
var obj = Shape(x, y);
obj.width = width;
obj.height = height;
obj.paint = function(canvasTarget) {
//paint rectangle on the canvas
}
return obj;
}
function Canvas(target) {
var obj = {};
obj.target = target
obj.shapes = [];
obj.paint = function() {
//loop through shapes and call paint
}
obj.addShape(shape) {
this.shapes.push(shape);
}
}
После создания модели объекта, который вы могли бы использовать его, чтобы рисовать фигуры, как это:
var cnv = new Canvas();
cnv.addShape(new Rectangle(10,10,100,100));
cnv.paint();
После этого вы можете обработать событие OnClick на холст и определить, на какую фигуру нажать.
Имеет ли метод рисования означает, что он снова перерисовывает все детали на холсте, а не обрабатывает последнее изображение или форму? –
Метод краски отвечает за рисование фигуры. Вы можете манипулировать фигурой, изменяя x, y, ширину или высоту. –
, но как насчет существующих фигур на холсте. Как и в случае, если у меня есть существующий прямоугольник. Нужно ли его удалить, вызвав метод? –
Я хотел бы объяснить Pinpoint с помощью мыши события
Прежде всего, вы должны реализовать метод, чтобы получить позицию мыши
function getMousePos(canvas, evt){
// get canvas position
var obj = canvas;
wrapper = document.getElementById('wrapper');
var top = 0;
var left = 0;
while (obj && obj.tagName != 'BODY') {
top += obj.offsetTop;
left += obj.offsetLeft;
obj = obj.offsetParent;
}
// return relative mouse position
var mouseX = evt.clientX - left + window.pageXOffset+wrapper.scrollLeft;
var mouseY = evt.clientY - top + window.pageYOffset+wrapper.scrollTop;
return {
x: mouseX,
y: mouseY
};
}
- Прямоугольник
Say, мы имеем прямоугольник со следующими значениями x1, y1, w, h
$(canvas).mousemove(function(e){
//Now call the method getMousePos
var mouseX, mouseY;
var mousePos = getMousePos(canvas, e);
mouseX=mousePos.x;
mouseY=mousePos.y;
// check if move on the rect
if(mouseX>x1 && mouseX<x1+w && mouseY>y1 && mouseY<y1+h)
{
alert('mouse on rect')
}
});
- Круг
Скажем, у нас есть круг со следующими значениями х, у, г
$(canvas).mousemove(function(e){
//Now call the method getMousePos
var mouseX, mouseY;
var mousePos = getMousePos(canvas, e);
mouseX=mousePos.x;
mouseY=mousePos.y;
// check if move on the rect
if(Math.pow(mouseX-x,2)+Math.pow(mouseY-y,2)<Math.pow(r,2))
{
alert('mouse on circle')
}
});
этим способом мы можем определить объект холста
- 1. Перемещение фигуры на холсте
- 2. Очистка фигуры на холсте
- 3. Javafx перетащить фигуры на холсте
- 4. Обнаружить фигуры на холсте + Javascript?
- 5. Фигуры не нарисованы на холсте
- 6. Android: рисовать фигуры на холсте
- 7. Drag & падение фигуры на холсте
- 8. html5 - Как проверить фигуры на холсте?
- 9. Распространение изображения внутри фигуры в холсте html5
- 10. Рисовать фигуры на холсте HTML5 ... с видео
- 11. Как определить положение фигуры в изображении PHP
- 12. Я пытаюсь отменить конкретные фигуры на холсте
- 13. Сделайте фигуры на холсте неотъемлемыми (fabric.js)
- 14. Определить позицию ListboxItem в холсте?
- 15. Определить местоположение UIElement на холсте
- 16. Определить форму, нарисованную на холсте, из сохраненных координат в массиве
- 17. Как определить размер фигуры в Sketch 3 без потери качества?
- 18. Как определить фигуры, нарисованные с помощью Core Graphics в Swift?
- 19. Вращающиеся фигуры на холсте с tkinter (python 3)
- 20. Определить ширину строки в холсте HTML5
- 21. Рассчитать количество пикселей внутри фигуры, нарисованной на холсте HTML5?
- 22. Как скопировать и вставить фигуры в KineticJS
- 23. Как обнаружить конфликт фигуры - Android
- 24. Как справиться с перетаскиванием в андроидном холсте
- 25. Пользователь добавляет текст в фигуры
- 26. Как определить размер фигуры с Pweave (используя .py скрипт)
- 27. Как получить имя фигуры без отображения фигуры?
- 28. Как определить тип фигуры на листе, содержащем множество фигур?
- 29. Как определить, прикоснуться ли пользователь к овалу в холсте?
- 30. Движение в html5 холсте
Пожалуйста, укажите, если какой-либо для вышеизложенного алгоритм. Как в терминах JS Programming. –