Javascript.RU

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

Отслеживание положения объекта
Здравствуйте! Помогите неумехе. Есть баннер-растяжка. Есть скрипт который позволяет менять размеры canvas:
function init() {
	
	canvas = document.getElementById("canvas");
	
	var okno = document.body.clientWidth;
	canvas.width = okno;

	function resaizer() {
			var okno = document.body.clientWidth;
			canvas.width = okno;
		}
	window.onresize = resaizer;

// -----------------------------------


Все прекрасно работает, но нужно еще чтобы некоторый объект b2 постоянно находился в определенном месте в зависимости от ресайза окна:

// ----------------------------------- 	

(lib._600X240_Zod_Bezjalostnoe_Komfort_HTML_Lenta = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Слой 3
	this.instance = new lib.ZOD_logo85p();
	this.instance.setTransform(26,12.9);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(374));

	// Слой 8
	okno2 = canvas.width/2;

	this.b2 = new lib.Символ38();
	this.b2.setTransform(okno2,120);

// -----------------------------------

Естественно, что при таком коде координаты объекта b2 устанавливаются один раз и меняются только при принудительном обновлении страницы, а не при ее ресайзе. Вопрос собственно и состоит в том чтобы заставить переменную okno2 реагировать на изменение размера окна и соответственно менять координату x объекта b2 в зависимости от ресайза страницы браузера.
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2016, 18:41
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от butch16 Посмотреть сообщение
Есть скрипт который позволяет менять размеры canvas:
Чтобы не глобалить и не дублировать код делается так:
function init() {
	
	var canvas = document.getElementById("canvas");

	function resaizer() {
		canvas.width = document.body.clientWidth;
	}
	window.onresize = resaizer;
	window.onresize();

// -----------------------------------
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2016, 19:40
Интересующийся
Отправить личное сообщение для butch16 Посмотреть профиль Найти все сообщения от butch16
 
Регистрация: 13.07.2016
Сообщений: 11

Спасибо, за подсказку. Но мне важно чтобы отслеживались и изменялись координаты объекта b2, а скрипт по ресайзу канваса и так худо-бедно, но работал...
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2016, 20:00
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

butch16, это всё в init находится?
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2016, 20:39
Интересующийся
Отправить личное сообщение для butch16 Посмотреть профиль Найти все сообщения от butch16
 
Регистрация: 13.07.2016
Сообщений: 11

Нет, управление объектами находится в отдельном подгружаемом скрипте.
А первый скрипт находится непосредственно в HTML файле:
var canvas, stage, exportRoot;

function init() {
	// --- write your JS code here ---
	
	canvas = document.getElementById("canvas");

	var okno = document.body.clientWidth;
	canvas.width = okno;

	function resaizer() {
			var okno = document.body.clientWidth;
			canvas.width = okno;
		}
	window.onresize = resaizer;	

	images = images||{};

	var loader = new createjs.LoadQueue(false);
	loader.addEventListener("fileload", handleFileLoad);
	loader.addEventListener("complete", handleComplete);
	loader.loadManifest(lib.properties.manifest);
}

function handleFileLoad(evt) {
	if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
}

function handleComplete(evt) {
	exportRoot = new lib._600X240_Zod_Bezjalostnoe_Komfort_HTML_Lenta();

	stage = new createjs.Stage(canvas);
	stage.addChild(exportRoot);
	stage.update();

	createjs.Ticker.setFPS(lib.properties.fps);
	createjs.Ticker.addEventListener("tick", stage);
}

Я дизайнер а не программист и очень слабо разбираюсь в Javascript, баннер сделан в программе Adobe Animate CC.
Ответить с цитированием
  #6 (permalink)  
Старый 04.09.2016, 22:12
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

butch16,
function resaizer() {
	var okno = document.body.clientWidth;
	canvas.width = okno;
	if (exportRoot.b2) {
		exportRoot.b2.setTransform(canvas.width / 2, 120);
		stage.update();
	}
}

Последний раз редактировалось Rise, 04.09.2016 в 22:47.
Ответить с цитированием
  #7 (permalink)  
Старый 04.09.2016, 22:31
Интересующийся
Отправить личное сообщение для butch16 Посмотреть профиль Найти все сообщения от butch16
 
Регистрация: 13.07.2016
Сообщений: 11

Большое спасибо! Все заработало. Но есть одна досадная мелочь. Раньше размер канваса менялся в реальном времени, теперь при изменении размера окна все изображение внутри баннера исчезает примерно на 1-2 секунды пока не пересчитается с новыми параметрами, можно от этого избавиться или нет?
Ответить с цитированием
  #8 (permalink)  
Старый 04.09.2016, 22:48
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

butch16, не знаю попробуйте добавить строку 6
Ответить с цитированием
  #9 (permalink)  
Старый 04.09.2016, 23:00
Интересующийся
Отправить личное сообщение для butch16 Посмотреть профиль Найти все сообщения от butch16
 
Регистрация: 13.07.2016
Сообщений: 11

Вот теперь действительно все супер! Еще раз огромное спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 12.10.2017, 03:44
Новичок на форуме
Отправить личное сообщение для onegoa Посмотреть профиль Найти все сообщения от onegoa
 
Регистрация: 12.10.2017
Сообщений: 1

Здравствуйте, а вы бы не могли выложить исходник, очень хочется посмотреть как у вас получилось, или вышлите, пожалуйста на почту onegoa@ya.ru
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отслеживание css состояния объекта Nifler Events/DOM/Window 6 28.04.2015 21:05
Отслеживание положения элемента illarion Общие вопросы Javascript 8 05.08.2014 14:58
нахождение положения объекта bohdan Общие вопросы Javascript 2 01.03.2012 01:48
Отслеживание положения скролбара ацкий Events/DOM/Window 2 23.08.2011 13:06
Отслеживание положения курсора beat Общие вопросы Javascript 4 25.06.2011 10:46