Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2013, 21:54
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

Не работает рисовалка canvas
Что-то тут сам попытался написать рисовалку, не очень работает, а точнее совсем не работает
function startDraw(tool){
		var cnvs = document.getElementById('cnvs');
		var ctx = cnvs.getContext('2d');
		/*Список инструментов*/
		var brush; //кисть
		var purge; //ластик
		/*Список инструментов*/
		ctx.strokeStyle = '#000';
		var startDraw = false;

		cnvs.addEventListener('mousedown',function(tool) { //нажали на лкм
			// body...
			tool = true;
			startDraw = true;
			ctx.beginPath();

		},false);
		cnvs.addEventListener('mouseup',function(tool) { //отпустили лкм
			// body...
			tool = false;
			startDraw = false;

		},false);
		cnvs.addEventListener('mousemove',function(e,tool) { //отпустили лкм
			var x,y;
				x=e.pageX;
				y=e.pageY;
			if(startDraw==true){
				switch(tool){
					//Кисть
					case 'brush': 
						ctx.lineTo(x - cnvs.offsetLeft, y - cnvs.offsetTop);
						ctx.moveTo(x - cnvs.offsetLeft, y - cnvs.offsetTop);
						ctx.stroke();
				}//Кисть

			}

		},false);
}


<body onload="startDraw('brush');">
<canvas id="cnvs" width="800" height="500"></canvas>
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2013, 21:58
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

IVAAAAN,
function startDraw(){
 var startDraw;
}

Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2013, 22:07
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

Не помогло
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2013, 22:12
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

так я и думал, но как поправить?
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2013, 22:31
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

ну как же, помогите, срочно
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2013, 22:57
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

ну мне бы в моем только коде ошибки пофискить, а не чужой копипастить
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2013, 23:25
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

да вот это то я сделал, просто рисовалку то. но не понимаю как мне лучше сделать выбор инструментов, ластик например. помогите советом, а
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2013, 00:29
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

Никто ничего не посоветует?
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2013, 06:00
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

Сообщение от IVAAAAN Посмотреть сообщение
Никто ничего не посоветует?
у вас все обработчики событий кривые
когда они запускаются, они получают событие
а вы объявили их с переменной "tool" и думаете, что они получат тот же "tool" что и функция "startDraw"

сохраните "tool" в замыкании функции "startDraw" и используйте его оттуда
function startDraw(tool) {
  var my_tool = tool; // вот здесь
  ...
  cnvs.addEventListener('mousemove', function(e) {
    ...
    switch(my_tool) {
      ...
    }
    ...
  });
}


но даже переменная "my_tool" необязательна

function startDraw(tool) {
  ...
  cnvs.addEventListener('mousemove', function(e) {
    ...
    switch(tool) {
      ...
    }
    ...
  });
}
Ответить с цитированием
  #10 (permalink)  
Старый 05.07.2013, 10:25
Аспирант
Отправить личное сообщение для IVAAAAN Посмотреть профиль Найти все сообщения от IVAAAAN
 
Регистрация: 04.07.2013
Сообщений: 47

Спасибо. Но теперь когда я выбираю другой инструмент, то их становится как бы два. Например я одновременно рисую и стираю
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
ajax запросы, работает на одних компах и не работает на других vtornik23 AJAX и COMET 2 22.03.2010 18:22