Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Тормоза при реализации эффекта от движения мыши (http://www.flasher.ru/forum/showthread.php?t=96039)

_MKR_ 22.05.2007 09:49

Тормоза при реализации эффекта от движения мыши
 
Нужен мудрый совет.
А суть дела такова: в презентации хочу сделать фоновую сеточку, состоящую из клипа полоски(клип Line), которая при наведении мыши должна проигрываться (в моем случае вспыхивать и плавно гаснуть: менять прозрачность).Возникает ряд косяков:
косяк №1 скрипт сильно грузит камень, т.к. каждой копией клипа Line при движении мыши происходит проверка положения курсора относительно точки регистрации.(для вертикальных: по y, для горизонтальных соответственно по X). И линий конечно же много (не один десяток).

косяк №2 При резком движении мыши координаты не успевают обсчитываться и некоторые линии не загораются(не проигрываются).

Что я сделал: для того чтобы мышка не "проскакивала" мои линии, я увеличил рассояние между линиями и увеличил границы в которых линия должна работать:

Код:

onClipEvent (mouseMove) {
  XM=this._xmouse;
 
  if(XM>-25 and XM<25)  //к своему стыду незнаю функцию модуля :confused: 
  {play()}
}

.
Но это непомогло, при резком перемещении курсора бяка получается.

Я решил подойти с другой стороны(как планировал с самого начала):
активную область линии сделать кнопкой и при on(RollOver) мой клип Line должен был Play(); 8-) заменил курсор, чтобы не появлялать "ручка" при наведении, но все равно - ТОРМОЗА. (как еже поизвращенней можно извратиться?)

Что делать, как быть? Я все сильней и сильней хочу теперь сделать эту сеточку.

P.S.: Можно сделать функцию которая будет отслеживать положение курсора и писать его в переменные XM и YM (например), затем сравнивать его положением каждой линии и при выполнении условия заставлять нужную линию проигрываться? (возникает геморой с адресацией на каждую линию и указанием координат).

etc 22.05.2007 11:26

_MKR_, оформите в своем посте код тегами [code][/code].

Double 22.05.2007 11:30

я бы сделал вот как:
а) линии разместил бы в координатах 5..15..25..и т.д.
б) обозвал бы их h0..h1..h2..и т.д. и v0..v1..v2..и т.д.
в)на маус_мув поставил бы что-то вот такое:
Код:

_root["h"+Math.round(_xmouse/10)].play();
_root["v"+Math.round(_ymouse/10)].play();

вроде должно работать и не тормозить. возможно, перед применением придётся обработать напильником :)

_MKR_ 22.05.2007 12:17

попробовал.работает.вроде бы не тупит.но все равно иногда курсор проскакивает линии. спасибо.

Kikasso 22.05.2007 12:35

добавить
Код:

updateAfterEvent();

_MKR_ 22.05.2007 12:38

И что это даст если не секрет? плавность движения курсора?

Kikasso 22.05.2007 12:41

принудительную перерисовку экрана после события.
Хотя может и не помочь в данном случае.
PS - модуль = Math.abs(число)

_MKR_ 22.05.2007 12:52

код у меня получился следующий:
Код:

onClipEvent (mouseMove) {
XM=Math.round(_xmouse/50);
YM=Math.round(_ymouse/50);
_root["h"+XM].play();
_root["v"+YM].play();
updateAfterEvent();
}

но проблема с проскакиванием курсора через линии осталась.

Double 22.05.2007 14:05

можно решить проблему двумя путями:
а) сделать компьютер на лампах, аналоговый. пускай в нём не будет дискретности;
б) запоминать предыдущее положение мышки и если какой-то (какие-то) десяток проскочили, "поджигать" его принудительно.


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

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