Просмотр полной версии : scroolbar и startDrag
Kroli4eg
14.06.2008, 18:10
Доброго времени суток. Мне нужно создать что то на подобие скрулбара, водя за бегунок которого масштаб объекта увеличивается - уменьшается. Делаю так
scrool_mask.onPress = function()
{
ScroolBar.startDrag(true, 501.9, 153, 501.9, 53);//peredvezenie polzunka
polzunok = scrool_counter - ScroolBar._y; //opredelenie maswtaba figuri
polzunok_plus(polzunok);//peredaem maswtab v funkciu
}
scrool_mask.onRelease = scrool_mask.onReleaseOutside = function()
{
ScroolBar.stopDrag();
}
Ни как не могу побороть зпазадание в масштабировании. Т.е. я когда по бегунку кликаю, бегунок передвигается, а координаты его передаются старые, и мне надо еще раз кликать что бы операция прошла успешно. И еще ни как не могу заставить менять масштаб во время перетаскивания бегунка. Что посоветуете отказатся от startDrag и сделать через привязку к координатам мыши или можно как нибудь этот код до ума довести?
scrool_mask.onPress = function(){
this.onMouseMove = function(){
ScroolBar.startDrag(true, 501.9, 153, 501.9, 53);//peredvezenie polzunka
polzunok = scrool_counter - ScroolBar._y; //opredelenie maswtaba figuri
polzunok_plus(polzunok);//peredaem maswtab v funkciu
}
}
scrool_mask.onRelease = scrool_mask.onReleaseOutside = function(){
ScroolBar.stopDrag();
delete this.onMouseMove;
}
Kroli4eg
15.06.2008, 10:21
Спасибо помогло. И всетаки из-за чего происходит задержка в срабатывании, потому что событие stopDrag еще не произошло или это так событие onPress так работает?
Psycho Tiger
15.06.2008, 11:11
По сути, координаты - это то, что мы видим на экране. То есть флэш пока не подвинет на экране, координаты не изменяться.
Экран он обновляет когда выполняется весь скрипт. То есть
ScroolBar.startDrag(true, 501.9, 153, 501.9, 53);//peredvezenie polzunka
polzunok = scrool_counter - ScroolBar._y; //opredelenie maswtaba figuri
polzunok_plus(polzunok);//peredaem maswtab v funkciu
Этот скрипт выполняется, после обновляется экран, а значит, и координаты.
Можно принудительно перерисовать экран вот этой ф-цией:
updateAfterEvent();
Kroli4eg
15.06.2008, 12:53
У меня так не получилось. :-( Все равно идет запаздание. Т.е. во время клика до отпускания клавиши мыши координаты одной фигуры не пересчитываются относительно другой. Может у меня в коде ошибка?
small_move = function ()//funkciya peredvizeniya odnogo ob'ekta otnositel'no drugogo
{
ax = bigmap._width/221;
bigmap._x = ram_test._width*ax/2 - (ram_test._x - 640)*ax + 5.2;
bigmap._y = ram_test._height*ax/2 -(ram_test._y - 100)*ax + 15.55;
}
smallmap.onPress = function()
{
coords();
ram_test.startDrag(true, cs3, cs2 + 0.1, cs4, cs1);
updateAfterEvent();
onMouseMove = small_move;
small_move(); // vizov etoy funkcii srabativaet so starimi koordinatami
updateAfterEvent();
}
smallmap.onRelease = smallmap.onReleaseOutside = function()
{
onMouseMove = null;
ram_test.stopDrag();
}
В итоге сделал так:
smallmap.onPress = function()
{
coords();
ram_test.startDrag(true, cs3, cs2 + 0.1, cs4, cs1);
onMouseMove = small_move;
timerID = setInterval(small_move, 10);
}
smallmap.onRelease = smallmap.onReleaseOutside = function()
{
onMouseMove = null;
ram_test.stopDrag();
clearInterval(timerID);
}
Но тут возникли новые проблемы:
1. Эта функция вызывает мою функцию с переодичностью(чего мне не надо)
2. Как будет выглядить запись если мне нужно будет передавать в мою функцию какое нибуть значение
small_move = function ()//funkciya peredvizeniya odnogo ob'ekta otnositel'no drugogo
{
ax = bigmap._width/221;
bigmap._x = ram_test._width*ax/2 - (ram_test._x - 640)*ax + 5.2;
bigmap._y = ram_test._height*ax/2 -(ram_test._y - 100)*ax + 15.55;
}
Очень странно Вы находите координату Y, используя ax :wacko:
Kroli4eg
15.06.2008, 13:40
small_move = function ()//funkciya peredvizeniya odnogo ob'ekta otnositel'no drugogo
{
ax = bigmap._width/221;
bigmap._x = ram_test._width*ax/2 - (ram_test._x - 640)*ax + 5.2;
bigmap._y = ram_test._height*ax/2 -(ram_test._y - 100)*ax + 15.55;
}
Очень странно Вы находите координату Y, используя ax :wacko:
Почему странно? У меня есть два прямоукольника, один отмасштабированная копия другого. Там нет разници меджду делением ширины на ширину и высоты на высоту результат ведь все равно один
Ширина на ширину и высота на ширину.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.