Javascript.RU

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

Ограничение передвижения объекта по траектории в области
У меня дан красный квадрат внутри зеленого, а внутри зеленого есть желтый квадрат, так вот, нужно чтобы красный квадрат мог передвигаться только по зеленому не заходя не территорию желтого, пытался сравнивать координаты и через флаги, никак не получается это реализовать
Вот код:
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>

<div id="er"
style="position:absolute;
left:100;top:100;width:500;height:500;background-color:green">
</div>

<div id="er1"
style="position:absolute;
left:150;top:150;width:400;height:400;background-color:yellow">
</div>


<body onload="init(event)">

<div id="kv"
style="position:absolute;
left:150;top:100;width:50;height:50;background-color: red">
<div>


<script>

flag=false;
//Связывание событий с функциями
function init()

{//Если мышка двигается то выполняется ф-ция dragIt

document.all.kv.onmousemove=dragIt

//Если кнопка мышки отпускается, то - ф-ция osvobodi

document.all.kv.onmouseup=osvobodi

document.all.kv.onmousedown=zachvat

}

function dragIt(evt)

{//Параметр evt создаётся самим браузером

sobytie = (evt) ? evt : (window.event) ? window.event : "";

if(flag)

{


document.all.kv.style.top=sobytie.clientY-25;

if(parseInt(document.all.kv.style.top)<parseInt(do cument.all.er.style.top)){
document.all.kv.style.top=document.all.er.style.to p;
}

var t=parseInt(document.all.kv.style.top)+parseInt(doc ument.all.kv.style.height);
var ter=parseInt(document.all.er.style.top)+parseInt(d ocument.all.er.style.height);

if(t>ter){
document.all.kv.style.top=ter-parseInt(document.all.kv.style.height);
}

document.all.kv.style.left=sobytie.clientX-25;
if(parseInt(document.all.kv.style.left)<parseInt(d ocument.all.er.style.left)){
document.all.kv.style.left=document.all.er.style.l eft;
}
var l=parseInt(document.all.kv.style.left)+parseInt(do cument.all.kv.style.width);
var ler=parseInt(document.all.er.style.left)+parseInt( document.all.er.style.width);
if(l>ler){
document.all.kv.style.left=ler-parseInt(document.all.kv.style.width);
}

} }

function osvobodi()

{ flag=false;//устанавливается запрет на перетаскивание

}

function zachvat()

{ flag=true;
//Перетаскивание разрешается

}
</script>


</div>
</div>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2019, 00:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Vadimass123,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00