Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 16.11.2003, 16:49
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 1  
MaxLife

Регистрация: Nov 2003
Сообщений: 128
По умолчанию перемещение объектов. мерцание

Доброго времени!

Возникла необходимость в подвижном указателе-стрелке, состоящем из двух маркеров (прямоугольного[начала] и треугольного[конца]), соединённых линией.

При перемещении одного из маркеров линия следует за ними.

Приведённая ниже реализация работает, но отъявленно мерцает - видно, как линия мечется за маркером, при этом не всегда корректно останавливается.

Никто не подскажет, как это можно побороть?

Пример кода (Flash MX 2003, Ctrl+C, Ctrl+V):



// создаём линию
_root.createEmptyMovieClip("line1", 0);
with (_root.line1)
{
moveTo(0,0);
lineStyle(0, 0x4B78FE, 100);
lineTo(200,0);
_width = 150;
}

// создаём маркер начала - прямоугольник
_root.createEmptyMovieClip( "r1", 1);
with (_root.r1)
{
lineStyle(0, 0x4B78FE, 100);
beginFill(0x4B78FE, 100);
moveTo(-8,-8);
lineTo(8,-8);
lineTo(8,8);
lineTo(-8,8);
lineTo(-8,-8);
endFill();
};

_root.r1.onPress = function(){startDrag(this)};
_root.r1.onRelease = function(){stopDrag()};
_root.r1.onReleaseOutside = function(){stopDrag()};
_root.r1.onMouseMove = function() {if (_root.isDown) {_x = _root._xmouse; _y = _root._ymouse;}};

// создаём маркер конца - треугольник
_root.createEmptyMovieClip( "tr1", 2);
with (_root.tr1)
{
lineStyle(0, 0x4B78FE, 100);
beginFill(0x4B78FE, 100);
moveTo(-8,-8);
lineTo(8,0);
lineTo(-8,8);
lineTo(-8,-8);
endFill();
_x = 150;
};
_root.tr1.onPress = function(){startDrag(this)};
_root.tr1.onRelease = function(){stopDrag()};
_root.tr1.onReleaseOutside = function(){stopDrag()};
_root.tr1.onMouseMove = function() {if (_root.isDown) {_x = _root._xmouse; _y = _root._ymouse;}};

// создаём обработчик событий мыши
mh = new Object();
isDown = false;
mh.onMouseDown = function()
{
isDown = true;
}
mh.onMouseUp = function()
{
isDown = false;
}
mh.onMouseMove = function()
{
if (isDown)
{
with (_root)
{

ax = r1._x;
ay = r1._y;

bx = tr1._x;
by = tr1._y;

dx = line1._x - bx;
dy = line1._y - by;
dxp = 1;
if (dx<0)
{ dxp = 0;}
line1._x = ax;
line1._y = ay;
line1._rotation = (Math.atan(dy/dx)/Math.PI + dxp)*180;
line1._width = Math.abs(bx - ax);
line1._height = Math.abs(by - ay);
r1._rotation = line1._rotation;
tr1._rotation = line1._rotation;
}
}
}
Mouse.addListener(mh);

Старый 16.11.2003, 18:55
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 2  
opex
[+1.3 05.04.09]
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
тобы крутились сам делай
Вложения
Тип файла: zip 1.zip (3.2 Кб, 121 просмотров)
__________________
Бойтесь китайцев, компы приносящих!

Старый 17.11.2003, 08:51
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 3  
MaxLife

Регистрация: Nov 2003
Сообщений: 128
Спасибо!

Создать новую тему   Часовой пояс GMT +4, время: 07:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.