2 / 2 / 1
Регистрация: 22.08.2013
Сообщений: 25
1

Вращение квадрата при нажатии на его угол и его перемещение при нажатии на него (Canvas)

12.08.2014, 09:11. Показов 2485. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, я столкнулся с такой проблемой, мне нужно сделать реализацию вращения квадрата при нажатии на его угол и его перемещение при нажатии на него, но я плохо представляю как это сделать. Я вывел рандомно квадратов в кол-ве указанным в инпуте а дальше тупик.
Подскажите как определить на какой именно квадрат нажали, как сделать его проверку, и как его перемещать ил вращать?
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <!-- <script src="main.js" type="text/javascript"></script> -->
  </head>
  <script>
    function init(){
      var canv = document.getElementById('canv');
      g = canv.getContext('2d'); //переменная для рисования
      maxX = 720; //максимальные и минимальные координаты области рисования
      maxY = 520;
      minX = 80;
      minY = 80;
      minWH = 40; //максимальная и минимальная ширина квадрата
      maxWH = 80;
      rndX = 0; //рандомные координаты начального угла
      rndY = 0; 
      color = 0; //цвет
    }
    function intRand(min, max) { //функция рандома
      return Math.round(min + (max - min) * Math.random());
    }
    function brush () {
      clear_canvas();
      for(var i = 0; i < document.getElementById('in').value; i++) {
        rndX = intRand(minX, maxX); //Определяем случайные координаты
        rndY = intRand(minY, maxY);
        rndWH = intRand(minWH, maxWH);// определяем размер стороны квадрата
        color = 'rgb(' + intRand(0, 255) + ', ' + intRand(0, 255) + ', ' + intRand(0, 255) + ')'; //Определяем рандомный цвет
        g.strokeStyle = color; //задаем цвет
        g.strokeRect(rndX, rndY, rndWH, rndWH);// рисуем квадрат
      }
    }
    function clear_canvas () {
      g.clearRect(0, 0, 800, 600);
    }
    
 
  </script>
  <body onload="init()">
    <input type="text" name="cout" id="in" />
    <button onclick="brush()">Рисование</button>
    <button onclick="clear_canvas()">Очистить форму</button>
    <canvas id="canv" width="800" height="600">
      Старый браузер, обновите
    </canvas>
  </body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2014, 09:11
Ответы с готовыми решениями:

При нажатии на элемент менялся его фон
Здравствуйте, форумчане. Как сделать так, чтобы при нажатии на элемент списка или на какой-нибудь...

Как сделать так, чтобы при нажатии на поле выделялось его содержимое?
Я состряпал на сайте кнопку и поставил ниже её поле &lt;textarea&gt; c ссылкой и картинкой. И хочу, чтобы...

Необходимо, чтобы при нажатии на одну из кнопок меню, фрейм с рекламой сворачивался, и разворачивался снова при нажатии на другую кнопку
Задача такая: Есть три фрейма (расположены друг под другом) - это реклама (вверху), меню...

Как сделать чтобы при повторном нажатии на элемент из массива его предыдущий цвет возвращался?
Добрый день. Мне нужно повторно поменять цвет эллипса. Как сделать .чтобы при повторном нажатие...

1
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169
02.09.2014, 17:45 2
Мда... Код сыроват конечно. Перемещать в целом это не проблема, а вот вращать, это как? Крутить по часовой стрелке?
Используй "переменные" для записи координат каждого квадрата. Применяй метод "canvas.addEventListener("click", ClickLKM, false);" для получения координат указателя непосредственно на канвасе при нажатии. Таким образом можно определить какой квадрат был нажат.
Для движения придется применить setInterval(); который будет перемещать нужные квадраты и рисовать их новое положение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2014, 17:45
Помогаю со студенческими работами здесь

Как закрасить круг при нажатии на него и уменьшить его в 3 раза
Program Kur1; Uses GraphABC, crt; Procedure Kursor(Var Xk, Yk: integer); ...

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при нажатии на него и...

Открыть закрыть блок при нажатии по ссылке и закрыть его при нажатии вне этого блока
Здравствуйте, несколько дней уже пытаюсь решить задачу, мне нужно сделать блок с авторизацией....

Как при нажатии на столбец отсортировать его?
Добрый вечер всем. Появилсь задача. Вообщем дана бд, выводим её в таблицу, всё хорошо, затем надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru