Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2013, 07:18
Новичок на форуме
Отправить личное сообщение для Warden18 Посмотреть профиль Найти все сообщения от Warden18
 
Регистрация: 04.08.2012
Сообщений: 3

Задержка при рисовании
Всем привет, собственно появилась проблема создать задержку при рисовании в цыкле. На данный момент пытаюсь сделать эффект волн по изображению через canvas, но самый простой без пиксельной графики. Проблема заключается в том чтобы круги при клике появлялись через какой то интервал времени, а не сразу все. Поскольку цыкл связан с событием то даже если использовать setTimeout() то теряются координаты клика мыши и надо заново кликать чтобы появился бОльший круг. Вот собственно код функции которая срабатывает при клике:


function circles(e) {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#000';
ctx.globalAlpha = 0.1;
for (var i=0; i<10; i++) {
ctx.beginPath();
ctx.arc(e.pageX, e.pageY, 10+10*i, 0, Math.PI*2, false);
ctx.stroke();
ctx.globalCompositeOperation = 'copy';
}
}

Заранее спасибо. Где уже только не искал. PS: Кстати алерт блочит рисовку следующего круга как мне нужно, не знаю только как это сделать с определённым интервалом.

Последний раз редактировалось Warden18, 14.02.2013 в 07:28.
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2013, 10:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Допишите тут свой код, чтобы можно было запускать и видеть результат прям тут:
<canvas id="canvas" style="width: 100%;height:200px"></canvas>
<script>
function circles(e) {
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
    ctx.fillStyle = '#000';
    ctx.globalAlpha = 0.1;
    for (var i=0; i<10; i++) {
        ctx.beginPath();
        ctx.arc(e.pageX, e.pageY, 10+10*i, 0, Math.PI*2, false);
        ctx.stroke();
        ctx.globalCompositeOperation = 'copy';
    }
}
canvas.onclick = circles;
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2013, 13:35
Новичок на форуме
Отправить личное сообщение для Warden18 Посмотреть профиль Найти все сообщения от Warden18
 
Регистрация: 04.08.2012
Сообщений: 3

<head>
  </head>
  
  <body>
    <script>
      <head>
        <style type = "text/css">
          canvas {
            background: url(ultra-pda.ru/wp-content/gallery/640px/1.jpg) no - repeat;
         } 
          </style>

<script>
var canvas, ctx;

function init() {
  canvas = document.getElementById('canvas');
  ctx = canvas.getContext('2d');
  canvas.addEventListener('click', circles);

}

function circles(e) {
  ctx.fillStyle = '#FFF';
  ctx.globalAlpha = 0.1;
  for (var i = 0; i < 15; i++) {
    ctx.beginPath();
    ctx.arc(e.pageX, e.pageY, 10 + 10 * i, 0, Math.PI * 2, false);
    ctx.stroke();
    alert(i);
    ctx.globalCompositeOperation = 'copy';
  }


}
</script>
</head>
    
<body onload="init()">
<canvas id="canvas" width="640" height="480"></canvas>
</body>
</script>
</body>


В песочницу залил, а то тут при запуске на грузится картинка чёто.

http://learn.javascript.ru/play/ObbxO
ЗЫ: хочу чтобы работало так же только без алертов.

дзен, премного благодарен.

Последний раз редактировалось Warden18, 14.02.2013 в 14:11.
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2013, 14:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

setTimeout|setInterval|requestAnimationFrame в помощь
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2013, 17:22
Новичок на форуме
Отправить личное сообщение для Warden18 Посмотреть профиль Найти все сообщения от Warden18
 
Регистрация: 04.08.2012
Сообщений: 3

Всем спасибо за помощь. Разобрался.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Совершение действия при удерживании клавиши BorodinKO Общие вопросы Javascript 3 26.06.2011 00:59
При достижении низа страницы prokopoffmusic jQuery 0 21.06.2011 04:52
Как выполнить код javascript при инклюде странички на php wfire jQuery 7 27.05.2011 14:43
Вывод данных единожды, при открытии окна? Ggorsh Events/DOM/Window 1 28.04.2009 01:04