2013-09-24 4 views
0

Привет, я полный новичок с ActionScript, поэтому любая помощь очень ценится.Actionscript 3 mouseover issue

В основном у меня есть фильм с 2 слоями, 1 закрыл глаза на других открытых глазах.

Таким образом, функциональность должна заключаться в том, что фильм начинается с того, что глаза закрываются, когда мышь перекатывается над фильмом, глаза открываются, а затем, когда мышь покидает фильм, они снова закрываются.

Это код, который я есть в данный момент, но он не работает:

package 
{ 

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

eyes_closed.addEventListener(MouseEvent.MOUSE_OVER, hideEyes); 
eyes_closed.addEventListener(MouseEvent.MOUSE_OUT, openEyes); 

function hideEyes(event:MouseEvent):void { 
    eyes_open.visible = true; 
} 

function openEyes(event:MouseEvent):void { 
    eyes_closed.visible = true; 
} 

} 

Что я делаю неправильно?

+0

По крайней мере, вы не слушайте 'MouseEvent.MOUSE_OUT' событие«закрыть»глаза. Кроме того, вам лучше использовать контейнер для «eyes_closed» и «eyes_open», который будет содержать тот или иной, и присоединить слушателей к этому контейнеру. – Vesper

ответ

1

Есть несколько вариантов, чтобы сделать то, что вы пытаетесь, один простое решение:

создать 2 слоя спрайтов - один с закрытыми глазами и над ним один с открытыми глазами (вероятно, вы уже сделали это)

добавить 2 слушателей событий в нижней спрайта (eyes_closed) - мыши над -> показать eyes_open, MOUSE_OUT -> скрыть eyes_open

Теперь это важно - на вашей eyes_open спрайта (верхний один из 2) добавить

eyes_open.mouseEnabled = false 
eyes_open.mouseChildren = false 
+0

ОК, я сделал это, но он все еще не работает. Есть идеи? – user2743708

+0

что-то еще стоит упомянуть, может быть, что клип играет глазом, моргая невозмутимо, будет ли это эффект? – user2743708

+0

Он играет, когда вы навеки над глазами или все время? – Eran

0

Одним из простых решений (не предназначен для каламбур) является использование класса SimpleButton. Он позволяет создавать один экранный объект, который внутренне отображает разные отображаемые объекты в зависимости от трех состояний (нормальный, мышь и мышь). Кроме того, 4-й экранный объект определяет «область попадания» (обычно это то же самое, что и экранный объект, используемый для нормального состояния).

Пример:

import flash.display.SimpleButton; 

var closed : MovieClip = new closedMC(); 
var open : MovieClip = new openMC(); 

var button : SimpleButton = new SimpleButton(closed, open, open, closed); 

Одна вещь, хотя: Если вы используете мувиклип с анимацией, то MovieClip будет перезапущен из рамы 1, когда изменяется состояние (при нажатии на кнопку, например).

0

Вы хотите сделать одну невидимую, когда вы сделаете другую видимой.

package 
{ 



    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    eyes_closed.addEventListener(MouseEvent.MOUSE_OVER, hideEyes); 
    eyes_closed.addEventListener(MouseEvent.MOUSE_OUT, openEyes); 

    function hideEyes(event:MouseEvent):void { 
     eyes_open.visible = true; 
     eyes_closed.visible = false; 
    } 

    function openEyes(event:MouseEvent):void { 
     eyes_closed.visible = true; 
     eyes_open.visible = false; 
    } 

} 
0

Вы забыли скрыть глаза.

function hideEyes(event:MouseEvent):void { 
    eyes_open.visible = true; 
    eyes_closed.visible = false; 
} 

function openEyes(event:MouseEvent):void { 
    eyes_closed.visible = true; 
    eyes_open.visible = false; 
} 

Другой вариант: заказать слой изменения с помощью setChildIndex