![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+2 24.06.08]
Регистрация: Mar 2008
Адрес: Dubai
Сообщений: 34
|
Дотрый день. У меня есть карта которую можно двигать мышкой (в рамках клипа) и размеры которой можно менять. Проблема в том что огранечение по перемещению не всегда сробатывает, например если я резко дерну мышкой, карта вылетает за пределы области, а если двигаю не быстро то все работает. Вот код
_root.onMouseDown = function()
{
a = _root._xmouse - bigmap._x;
b = _root._ymouse - bigmap._y;
_root.onMouseMove = function()
{
s = bigmap._xscale = bigmap._yscale;
l = s*14.47/2;// opedelyaem na skol'ko karta izmenilas' pri maswtabirovanii
k = s*11.024/2;
// opredelyaem 4 to4ki na granyax karti
coord4 = bigmap._x - l;
coord3 = bigmap._x + l;
coord2 = bigmap._y + k;
coord1 = bigmap._y - k;
if ((coord1 < 0)&&(coord2 > 418.9)&&(coord3 > 550)&&(coord4 < 0))
{
// dvigaem kartu tak 4tobi pri nazatii na nee cener karti i poziciya kursora ne bili ravni
bigmap._x = _root._xmouse - a;
bigmap._y = _root._ymouse - b;
}
updateAfterEvent();
}
}
_root.onMouseUp = function()
{
delete _root.onMouseMove;
}
|
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
1. Движение мыши это процесс прерывистый
2. При быстром движении наблюдаются два граничных момента: а) позиция мыши не перешла за границы холста б) позиция мыши вне пограничной области ограничения, но проверять ее уже некому - обработчик onMouseMove работает только в области клипа Вот и получается, что если Вы быстро двигаете мышь Вы попросту пролетаете пограничную контролируемую область и обработчик неуспивает зафиксировать факт "вне холста". Последний раз редактировалось Alex_beginner; 28.05.2008 в 16:14. |
|
|||||
|
[+2 24.06.08]
Регистрация: Mar 2008
Адрес: Dubai
Сообщений: 34
|
Здорово, как все легко ролучается. ;-) Спасибо огромное!!! Сделала так(если кому интересно):
_root.onMouseDown = function()
{
s = bigmap._xscale = bigmap._yscale;
l = s*1447/200;
k = s*1102/200;
a = 209.44 - k;
b = 275 - l;
coord4 = 209.45 - a;
coord3 = 209.45 + a;
coord2 = 275 + b;
coord1 = 276 - b;
bigmap.startDrag(false, coord2, coord4, coord1, coord3);
}
_root.onMouseUp = function()
{
_root.stopDrag();
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|