PDA

Просмотр полной версии : Остановить выполнения действия при наведении мыши


I_RaF_I
04.09.2002, 15:47
У меня кнопки двигаются по горизонтали с помощью такой беды:

onClipEvent (enterFrame) {
if ( _x>-752) {
_x -= 2;
} else {
_x = 202;
}
}

Мне требовалось остановить при наведении мыши. Я сделал так:

onClipEvent (mouseMove) {
if (_x<800 && _x>-800) {
_x +=2;
}
}

Но получилось подергивания (очень на глюк похожее :rolleyes: ). Хотелось бы переделать. Может посоветуете как сделать, чтобы остановливалось по человечьи?

JeeP
04.09.2002, 15:58
наведение мыши отслеживает hitTest - его и пользуй!

принцип такой:

onClipEvent (enterFrame) {
if(!this.hitTest(_xmouse, _ymouse)) { // если не наведено, тогда "двигаемся" :D !
твое движение
}
}

Jema
04.09.2002, 16:01
если это кнопки ... лучше юзать on()

и может тогда при on(RollOver) его stop()
а при on(RollOut) play() ....

но попробывать некада.....

Jema
04.09.2002, 16:03
внатуре красивше... :)

I_RaF_I
04.09.2002, 16:23
не пойдет on() и stop() - я пробывал. Кнопки не простые, а в мувике.
Сделал я как Jeep сказал, но глюк все равно какой-то, то едет, то не едит.


onClipEvent (enterFrame) {
if(!this.hitTest(_xmouse, _ymouse)){
if ( _x>-752) {
_x -= 2;
} else {
_x = 202;
}
}}

То вообще встанет....
Тормоза вообщем какие-то. Может это для MX? А то у меня 5-ка.

Jema
04.09.2002, 16:35
да ... мож попробуй true поставить....

if(!this.hitTest(_xmouse, _ymouse, true))

I_RaF_I
04.09.2002, 16:49
Изменений практически никаких.
Я может добавлю конкретики, если скажу, что полоска узенькая. При наведении мышой - остановливается. Но дальше начинаются чудеса. Убераешь мышь - стоит, наводишь - двигается, поводишь мышь - встает намертво, убераешь двигается. И т.д. Может проще сделать через таймер? Навел - встал, через несколько сек. поехал дальше. Т.е. приводить в чувство его через какое-то время.

Как возобновить движение через 3 сек не подскажите?

JeeP
04.09.2002, 17:00
да ... мож попробуй true поставить....

а может еще маслом смазать?


...но глюк все равно какой-то, то едет, то не едит...
естественно, к маусу надо через рут обращаться - не догадался?

это работает:
onClipEvent (enterFrame) {
if (!this.hitTest(_root._xmouse, _root._ymouse)) {
_x++;
}
}

если не будет работать и дальше - ищи ошибку в своей логике!!!

LostWarrior
04.09.2002, 17:02
Ну вы извращенцы, блин...
Далается переменная с кодовым названием flag

on(rollOver){flag=1;}
on(rollOut){flag=0;}
----
onClipEvent (enterFrame) {
if (flag==0){
if ( _x>-752) {
_x -= 2;
} else {
_x = 202;
}
}}

Если не хотите rollOver и rollOut - то в первом и втором кадре кнопки присваиваете flag нужные значения

Jema
04.09.2002, 17:19
а может еще маслом смазать?

если поможет ... можно и смазать :)

I_RaF_I
04.09.2002, 17:43
2 Jeep: по барабану _root. все происходит на первом уровне. Изменений никаких.

2 LostWarrior: Работает прекрасно, только есть одно но... оно не начинает двигаться пока мышой не проведешь. А надо чтобы оно изначально двигалась.

Я еще вас не достал?

LostWarrior
04.09.2002, 18:04
А ты не пробовал определить значение переменной в первом кадре главного мувика? Или, чтоб совсем круто, onClipEvent(load) :)

I_RaF_I
04.09.2002, 19:01
Оказывается так просто. Спасибо LostWarrior !