Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 15.11.2012, 21:43   #1
Олег Адам
AnyKey`щик
 
Аватар для Олег Адам
 
Регистрация: 15.11.2012
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Печаль Canvas - scale method

    function zoom() {
			switch(this.id) {
				case "zoom_in":
				    scale /= scaleMultiplier;
				    img_update(scale);
				    break;
				case "zoom_out":
				    scale *= scaleMultiplier;
				    img_update(scale);
				    break;
			}
	}
						
	function img_update( scale ) {
			contextUI.scale(scale, scale);
                        contextUI.drawImage(canvas, 0, 0);
			context.clearRect(0, 0, w, h);
			
	}
По клике на кнопки ZoomIn, ZoomOut вызываю функцию zoom().
Функцию img_update( scale ) использую для перерисовки канвас доски. При клике канвас сразу не зумится, но при рисовании начинает зумить.
Что не так? Спасибо.
(Offline)
 
Ответить с цитированием
Старый 15.11.2012, 22:48   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Canvas - scale method

contextUI.scale(scale, scale);
Ты скейлишь контекст который отрисовывает UI?
Или ты хочешь скейлить сам игровой контекст?

contextUI.drawImage(canvas, 0, 0);
Ты в контекст для UI рисуешь canvas? canvas - это хендл кртинки, или самой canvas? хендл должен быть картинки.
Вот хорошая справка.
http://www.html5canvastutorials.com/...canvas-images/

Далее ты просто отчищаешь свой контекст и всё.
Если это то чего ты хотел, то у тебя просто будет пусто на экране после зуума.

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

Также недостаточно информации. Лучше дай ссылку на рабочий пример или забей в http://jsfiddle.net/ ситуацию.
Даю 90% что как забъёшь в jsfiddle сам найдёшь ошибку.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Олег Адам (15.11.2012)
Старый 15.11.2012, 23:38   #3
Олег Адам
AnyKey`щик
 
Аватар для Олег Адам
 
Регистрация: 15.11.2012
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Canvas - scale method

canvas - это хендл не картинки, а текущего рисунка на самом canvas элементе.
(Offline)
 
Ответить с цитированием
Старый 15.11.2012, 23:40   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Canvas - scale method

Для получения данных картинки из контекста для canvas переменной, ты используешь toDataURL или getImageData?
(Offline)
 
Ответить с цитированием
Старый 16.11.2012, 01:36   #5
Олег Адам
AnyKey`щик
 
Аватар для Олег Адам
 
Регистрация: 15.11.2012
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Canvas - scale method

Сообщение от MoKa Посмотреть сообщение
Для получения данных картинки из контекста для canvas переменной, ты используешь toDataURL или getImageData?
toDataURL()..
(Offline)
 
Ответить с цитированием
Старый 16.11.2012, 01:49   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Canvas - scale method

Тебе нужно сперва создать картинку и присвоить её src аттрибут, и затем когда эта картинка использовать её для отрисовки.
Т.к. dataUrl - это не совсем картинка, а URL 64 Encoded данные картинки.

Что-то типо:
var img = new Image();
img.onload = function() {
  context.drawImage(this, 0, 0);
};
img.src = dataURL;
Можешь попробовать отрисовать сразу как присвоишь src, т.к. большинство броузеров это сделают синхронно. Но это нужно тестировать.

Также для скейла - я бы перерисовывал данные заново со скейлом, заместо скейлинга прошлой картинки с самой канвы, т.к. как ты понимаешь при зууме назад, у тебя не будет данных картинки по бокам, а при зууме вперёд, у тебя будут размыты пиксели.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Олег Адам (16.11.2012)
Старый 16.11.2012, 02:01   #7
Олег Адам
AnyKey`щик
 
Аватар для Олег Адам
 
Регистрация: 15.11.2012
Сообщений: 7
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Canvas - scale method

попробую именно так!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 22:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com