Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Mouse_OVER на мувике, тонкости! (http://www.flasher.ru/forum/showthread.php?t=126352)

Recky 17.06.2009 09:51

Mouse_OVER на мувике, тонкости!
 
Вложений: 1
Люди!
Не могу решить проблему. Есть 3 объекта которые объеденены в мувик.
2 кнопки и мувик. Они должны выпадать с края экрана на Mouse_OVER. Использую Tween. Но когда начинает выпадать то за кнопкой появляется мувик и он тутже понимает это как Mouse_OUT. Т.е. каждый объект в мувике при перемещении дает новое событие OVER и OUT. Воощем марока. Глючит адцки! Как быть?

Код AS1/AS2:

mport fl.transitions.Tween;
import fl.transitions.easing.*;
 
 
Clip1.addEventListener(MouseEvent.MOUSE_OVER,Start);
Clip1.addEventListener(MouseEvent.MOUSE_OUT,Stop);
 
function Start (evt:Event):void{
        var tweenOver:Tween = new Tween(Clip1,"y",Bounce.easeOut,-125,142,1.5,true);
}
 
function Stop (evt:Event):void{
        var tweenOver:Tween = new Tween(Clip1,"y",Bounce.easeOut,142,-125,1.5,true);
}


kackbip 17.06.2009 10:41

положите сверху один большой прозрачный мувик, чтобы через него все остальные не пробивались.

dimarik 17.06.2009 11:55

Код AS3:

Clip1.mouseChildren = false;

или
Код AS3:

function Start (event:MouseEvent):void {
  if (event.target == event.currentTarget) {
      var tweenOver:Tween = new Tween(event.target, "y", Bounce.easeOut, -125, 142, 1.5, true);
  }
}


kackbip 17.06.2009 12:28

С детями интересное решение.

Recky 17.06.2009 12:48

Да мне тоже больше понравилось через Children.
Я с прозрачным пробовал, если его положить поверх всего то кнопки перестают работать.

Спасибо огромное за ответы, а то я недавно начал програмить в AS3.

Добавлено через 22 минуты
Кнопки после того как tween случился не работают:rolleyes:. Ну что за непруха?

Добавлено через 47 часов 29 минут
С активностью кнопок разобрался вроде. Children не помогли, ибо перестают быть активными кнопки, а вот прозрачный слой получился, только нужно не MOUSE_OVER использовать а ROLL_OVER. Но теперь другая проблема, как сделать так чтобы если вдруг мышка пролетает мувик то появляются сразу два события OVER и OUT. Tween начинает работать и тутже запускается другая функция с tween'ом наоборот. Тут то глюки и начинаются. Соответственно нужно дождаться чтобы закончился первый твин а потом через паузу в несколько секунд начался второй. Тут вот я и застопорился. Помогите плиз!

dimarik 19.06.2009 13:07

Код AS3:

import fl.transitions.Tween;
import fl.transitions.easing.Bounce;
import fl.transitions.TweenEvent;
 
import flash.events.MouseEvent;
import flash.events.IEventDispatcher;
 
this.Clip1.addEventListener(MouseEvent.MOUSE_OVER,        this.handler_mouseOverClip);
 
function handler_mouseOverClip(event:MouseEvent):void {
        this.Clip1.removeEventListener(MouseEvent.MOUSE_OVER,        this.handler_mouseOverClip);
        var tween:Tween = new Tween(event.currentTarget, "y", Bounce.easeOut, -125, 142, 1.5, true);
        tween.addEventListener(TweenEvent.MOTION_FINISH, this.handler_tweenOverComplete);
}
 
function handler_mouseOutClip(event:MouseEvent):void {
        this.Clip1.removeEventListener(MouseEvent.MOUSE_OUT,        this.handler_mouseOutClip);
        var tween:Tween = new Tween(event.currentTarget, "y", Bounce.easeOut, 142, -125, 1.5, true);
        tween.addEventListener(TweenEvent.MOTION_FINISH, this.handler_tweenOutComplete);
}
 
function handler_tweenOverComplete(event:TweenEvent):void {
        // Remove listener to allow GC to destroy tween object
        (event.currentTarget as IEventDispatcher).removeEventListener(TweenEvent.MOTION_FINISH, this.handler_tweenOverComplete);
        this.Clip1.addEventListener(MouseEvent.MOUSE_OUT,        this.handler_mouseOutClip);
}
 
function handler_tweenOutComplete(event:TweenEvent):void {
        (event.currentTarget as IEventDispatcher).removeEventListener(TweenEvent.MOTION_FINISH, this.handler_tweenOutComplete);
        this.Clip1.addEventListener(MouseEvent.MOUSE_OVER,        this.handler_mouseOverClip);
}

Работоспособность не проверял. Но логика должна быть понятна.


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

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