Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   оптимизация drag and drop (https://javascript.ru/forum/events/31024-optimizaciya-drag-drop.html)

cyber 01.09.2012 02:37

да , это потом, сделаю точки и вполне возможно так и сделаю=)

Deff 01.09.2012 02:52

cyber,
:) А был жа вариант - ставить им точные проценты и забыть про точки вообще, - в процентах, в принципе, два знака после точки работают во всех браузерах( далее просто не проверял
типо 30.13% - работает

Deff 01.09.2012 03:02

К примеру вторая точка будет выглядеть так
<a href="#" class="point_on_map"  style="left: 27.31%; top: 36.40%"><img src="http://www.google.com/mapfiles/marker.png" /></a>


и она , при этом не дергаецо при текущем (если отключить скрипт коррекции точек

cyber 01.09.2012 03:04

угу, мог бы сделал, но кое кого это не устраивает

Deff 01.09.2012 03:08

Цитата:

Сообщение от cyber
угу, мог бы сделал, но кое кого это не устраивает

:) Собсвенно чела не устраивает не проценты - а то, что он хочет вводить в пикселах, а твое детище подпольно переводит начальные координаты в проценты - воть и вся недолга

cyber 01.09.2012 03:14

сделать наоборот тому что оно делает, щас.
я об этом не подумал:)

cyber 01.09.2012 21:20

Deff, я запутался=)
что бы точка не смещалась не масштабируясь я прибавляю то насколько она увеличилась относительно предыдущего размера
width = текущая ширина;

(width * zoom) - width;

и прибавляю к смещению но эта зараза все равно едит..

Deff 01.09.2012 21:34

Цитата:

Сообщение от cyber
что бы точка не смещалась не масштабируясь я прибавляю то насколько она увеличилась относительно предыдущего размера
width = текущая ширина;

Не - не так
1. После установки точки - её left делишь на текущую ширину карты и и
умножаешь на максимальную ширину карты - получаешь константу Left00 - при максимальной ширине картинки, которую умножаешь в дальнейшем на zoom ( воть и всё

Хотя, - если при установке точки её left чисто поделить на текущую ширину карты(без умножений) - получаешь Left в % который можно поставить единожды и забыть про точку ( для top - тоже самое - но относим к высоте

cyber 01.09.2012 22:19

если ставить % то все равно уежает на не большое растояние...

cyber 01.09.2012 22:23

Цитата:

Сообщение от Deff (Сообщение 202416)
Не - не так
1. После установки точки - её left делишь на текущую ширину карты и и
умножаешь на максимальную ширину карты - получаешь константу Left00 - при максимальной ширине картинки, которую умножаешь в дальнейшем на zoom ( воть и всё

после чего точки улетают так далеко что потом их не найдеш:)

Deff 01.09.2012 22:25

Цитата:

Сообщение от cyber
если ставить % то все равно уежает на не большое растояние...

Поставь точку в координаты 2Х2

Deff 01.09.2012 22:25

Цитата:

Сообщение от cyber
если ставить % то все равно уежает на не большое растояние...

Занчит ты не отключаешь скрипт для пойнтеров, либо карта ездит в первом обрамляющем её блоке и не закреплена,
3 -й вариант -% выставлены с недостаточной точностью - (пробуй увеличить разрядность ) но это если точно первые два пункта не проходят

cyber 01.09.2012 22:28

ты меня за кого держиш?

cyber 01.09.2012 22:33



cyber 01.09.2012 22:37

юмор в том что она уежаетв % на столько же что и когда я расчитую скриптом

Deff 01.09.2012 22:41

Цитата:

Сообщение от cyber
юмор в том что она уежаетв % на столько же что и когда я расчитую скриптом

Пробуй выкинуть на время css анимацию

Deff 01.09.2012 22:43

Цитата:

Сообщение от cyber
ты меня за кого держиш?

:-? Мне тяжко смотреть скрипт - устал и настроения 0 - поэтому выдаю все гипотезы

cyber 01.09.2012 22:44

сам постараюсь.

Deff 02.09.2012 10:55

Чот у меня в Опере , без Анимации - ничего не съезжает
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Документ без названия</title>
<style>
*{margin:0; padding:0;}

.wrapper .zooming-map,.zooming-map > img{
position:absolute;
width:100%;
height:100%;
}
	
.point_on_map {
width: 0px;
height: 0px;
position:absolute;
display:block;
border:1px red solid;
}


.point_on_map img{
 margin:-34px 0 0 -10px!important;
 position:absolute;
 border:1px solid transparent;
}


.map a {
position:absolute;
}


.map{
	width:1800px;
	height:1000px;
	overflow:hidden;
	/*margin:10px;*/
	border:1px solid black;
	
	}

.map .wrapper{
	
 width:1600px;
height:1000px;	
cursor: move;
}	


.little_point {
	
position:absolute;
width:5px;
height:5px;
background-color:#000;
	}
		
</style>

<script src="jquery.js"></script>
<script type="text/javascript" src="zoom.js"></script>
</head>

<body>

<div class="map" id="map">

<div id="wrapper" class="wrapper">

<div id="zooming" class="zooming-map">
<img src="general.jpg"/>
<a href="#" class="point_on_map"  style="left: 2px; top: 2px;"><img src="http://www.google.com/mapfiles/marker.png" /></a>
<!--<a href="#" class="point_on_map" style="left:20%; top:30%;"></a>-->
<a href="#" class="point_on_map" style="left: 427px; top: 356px; "><img src="http://www.google.com/mapfiles/marker.png" /></a>
</div>
</div>

</div>
<br/>
<div >Начальные координаты x = 10 , y = 36
<input id="val" type="text" style="width:400px;" >
</div>
<a href="#" onClick="zoom.In();return false;">+</a>
<script>
/*

у обьекта [zoom] (обьект будет называтся в зависимости от имени переменной) есть методы:
[zoom].In при вызове увеличивается карта (как при увелечение колесиком)
и
[zoom].out при вызове меньшается карта (как при уменьшение колесиком).

*/
	
var zoom = new MouseWheel_Zoom({
 elem: $('#map'),// контейнера в котором находится карта
 scale: 1.5,//зум элемента минимиальное значение 1
 offset:{//изначальное смещение карты по х и по у по умолчанию = 0,0
	 x:0,
	 y:0
	 },
 size:{
	width:[1600,10386],//width[минимальная ширина,максимальная ширина]
	height:[1000,4890]//height [минимальная высота,максимальная высота]
	},
 points:{
	 position:['713 533 10 10']
	 
	 
	 
	 }	
 });

/*
action - срабатывает при изменение зума (уменьшенме/увелечение)
this == обертке которую увелечивают
elem == блок в котором находится обертка, карта и все остальное.
*/ 
/*
* фунуия при прокрутки колесика
* callback функция 
*/
zoom.setActionZoom({
	
	MouseZoom:function (/*обертка*/wrapper, zoom/*текущи зум*/) {
		//this = блок и с изображением\катрой
	
		},
		
	 callback: function (/*обертка*/wrapper, zoom/*текущи зум*/) {
		//this = блок и с изображением\катрой
	
	}	
	
	});
	
</script>

</body>
</html>

cyber 02.09.2012 14:42

а в хроме все равно едит.
но я решил проблему,хоть и костылями но решил, щас залью

cyber 02.09.2012 14:57

с горем пополам, с костылями, но заставил его стать куда нужно=)
http://cyberua.16mb.com/files/
так достал этот проект что уже все равно как лиж бы работал=)

melky 02.09.2012 15:01

центр увеличения - центр изображения, а не место, куда указывает мышь. так должно быть ? :)

cyber 02.09.2012 15:04

да=)

cyber 02.09.2012 15:05

зум, я то знаю как по красивей сделать, но мне впадлу я уже не могу смотреть на этот проект

Deff 02.09.2012 15:06

cyber,
:-? В Опере всё равно немножко ползёт (но с возвратом) при изменении масштаба... всё таки есть какая то фича с css анимацией - она по разному анимирует пойнтер и карту

cyber 02.09.2012 15:08

добавил фон что бы видно было суть извращения с точкой=)
http://cyberua.16mb.com/files/

Deff 02.09.2012 15:11

cyber,
Ни наю, у меня в Гугле - верхний левый угол - привязанный - остальное, вместе с пойнтером - движецо
Показал приклеенную точку

cyber 02.09.2012 15:13

сам фон увеличивается, а точка позиционируется в низу по центру?

Deff 02.09.2012 15:16

Цитата:

Сообщение от cyber
сам фон увеличивается, а точка позиционируется в низу по центру?

Да - но привязан верхний левый угол с темным фоном

cyber 02.09.2012 15:20

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

melky 02.09.2012 15:21

Цитата:

Сообщение от cyber (Сообщение 202584)
зум, я то знаю как по красивей сделать, но мне впадлу я уже не могу смотреть на этот проект

мне смешно от этих слов :)

сколько ты им занимаешься?


я занимаюсь одной единственной безбожной функцией анимирования с конца января 2012. она уже в печёнке сидит - так она меня задолбала. я бросал её уже несколько раз - задалбливался её писать.

зато я с начала августа начал ею активно заниматься после двухмесячного перерыва, перепробовал все способы анимирования, и знаю теперь, как надо, и как не надо, и как лучше всего.

в конце концов,
http://habrahabr.ru/post/66803/

упорство - вот по какой причине я до сих пор её не закинул.

cyber 02.09.2012 15:21

а не плохая идея.

cyber 02.09.2012 15:25

Цитата:

Сообщение от melky (Сообщение 202592)
мне смешно от этих слов :)

сколько ты им занимаешься?


я занимаюсь одной единственной безбожной функцией анимирования с конца января 2012. она уже в печёнке сидит - так она меня задолбала. я бросал её уже несколько раз - задалбливался её писать.

зато я с начала августа начал ею активно заниматься после двухмесячного перерыва, перепробовал все способы анимирования, и знаю теперь, как надо, и как не надо, и как лучше всего.

в конце концов,
http://habrahabr.ru/post/66803/

упорство - вот по какой причине я до сих пор её не закинул.

знаеш, я уже решил как я сделаю, я откажусь от заказа, до читаю книгу, сделаю наконец то свой drag and drop фреймворк=)
а потом вернусь и сделаю с нуля этот чертов проклятый скрипт!

Deff 02.09.2012 15:26

Цитата:

Сообщение от cyber
да, оно, прикол в том что координаты расчитываются с учетом масштаба и самой точки

Хм при масштабе a в одну точку у <a class="little_point" (а можно сделать и 0, если снять бордеры) имхо вроде не должно влиять,
у мну во всех браузах(ИЕ не проверял) при уборки css анимации - точка жестко привязана

cyber 02.09.2012 15:28

в хроме без анимации ездит..

cyber 02.09.2012 15:31

Все,убил месяц на него , не зря много чему научился, и сделаю то что хочу и вернусь к нему.
Deff, спасибо что помогал, твои подсказки были очень полезны.
melky, что же там за анимация такая то?

cyber 02.09.2012 15:37

melky,и тут еще в чем фишка, у меня начинается универ и у меня не будет столько времени этим заниматься , тут даже дело не в сдался , просто в не хватке времени.

melky 02.09.2012 15:39

Цитата:

Сообщение от cyber (Сообщение 202598)
Все,убил месяц на него , не зря много чему научился, и сделаю то что хочу и вернусь к нему.
Deff, спасибо что помогал, твои подсказки были очень полезны.
melky, что же там за анимация такая то?

сейчас - реализация css3 анимаций на js плюс пара плюх. раньше было ещё три вариации :)

Цитата:

Сообщение от cyber (Сообщение 202601)
melky,и тут еще в чем фишка, у меня начинается универ и у меня не будет столько времени этим заниматься , тут даже дело не в сдался , просто в не хватке времени.

у меня тоже, так то) но часа в день предостаточно, да даже 30 минут. главное - не забивать.

cyber 02.09.2012 15:42

да я хочу просто книгу до читать, на самом интересном остановился перед прототипами=)
melky, что типо transform на js?

melky 02.09.2012 15:48

Цитата:

Сообщение от cyber (Сообщение 202605)
да я хочу просто книгу до читать, на самом интересном остановился перед прототипами=)
melky, что типо transform на js?

я написал в описании локального репозитория :
Цитата:

melAnim - это низкоуровневая функция для анимации, которая позволяет анимировать HTML элементы с использованием графического ускорения, посредством CSS3 анимаций, имея при себе режим отступления CSS3 анимаций на классическом JS для браузеров, не поддерживающих эти новшества, а так же готовый к использованию код для возможности использовать некоторые CSS3 новшевства в старых IE, с помощью фильтров.
т.е. всё в куче.


Часовой пояс GMT +3, время: 00:55.