Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ROLL_OVER и ROLL_OUT вызываются постоянно без видимой причины (http://www.flasher.ru/forum/showthread.php?t=129148)

kirea 26.08.2009 00:05

ROLL_OVER и ROLL_OUT вызываются постоянно без видимой причины
 
Я сделал меню, при наведении мыши пункт под мышью должен масштабироваться (вот и меню: http://tbcorp.com.ua/langSelector.swf).
Казалось бы - всё работает. Но стоит SWF-ку с меню подгрузить в основной клип через Loader, как начинаются постоянные самопроизвольные вызовы ROLL_OVER и ROLL_OUT для пункта, над которым висит мышка (смотрите внизу сцены по центру: http://tbcorp.com.ua/).

Каждый пункт меню инициализирован через:
Код AS3:

private function makeButton(mc:MovieClip):void {
        mc.buttonMode = true;
        mc.useHandCursor = true;
        mc.mouseChildren = false;
        mc.addEventListener(MouseEvent.CLICK, onClick);
        mc.addEventListener(MouseEvent.ROLL_OVER, onOver);
        mc.addEventListener(MouseEvent.ROLL_OUT, onOut);
}

Соответственно прилагаю обработчики ROLL_OVER и ROLL_OUT:
Код AS3:

private function onOver(event:MouseEvent):void {
        tweenX = new Tween(event.target, "scaleX", None.easeNone, 1.0, MENU_SCALE, 3, false);
        tweenY = new Tween(event.target, "scaleY", None.easeNone, 1.0, MENU_SCALE, 3, false);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
private function onOut(event:MouseEvent):void {
        tweenX = new Tween(event.target, "scaleX", None.easeNone, MENU_SCALE, 1.0, 3, false);
        tweenY = new Tween(event.target, "scaleY", None.easeNone, MENU_SCALE, 1.0, 3, false);
}

где
Код AS3:

private var tweenX:Tween = null;
private var tweenY:Tween = null;
private const MENU_SCALE = 1.15;

Причем я обратил внимание, что если MENU_SCALE = 1 (то есть видимого изменения масштаба не происходит), то всё нормально везде.
Заранее спасибо!!!!!!

igrayka 26.08.2009 01:05

я чайник, но вдруг

сделай невидимую кнопки над менюшками и их слушай, фиксированного размера.

а то у тебя помоему прыгает потому что меняется размер кнопки

kirea 26.08.2009 01:40

спасибо, igrayka. может так и сделаю такие заглушки.
Но все-равно ради общей образованности интересно было бы узнать, почему может такое случаться. Ведь меню, пока его не вставили в другой клип, работает хорошо, без скачков ;). А при подгрузке его другим мувиком скачет даже невзирая на те случаи, когда при изменении размеров мышка не выпадает за границы объекта.

Герыч 26.08.2009 01:43

может на время твина отписываться от событий??

udaaff 26.08.2009 01:51

На фазе всплытия другие события еще ловятся от дочерних мувиков, скорее всего.
И ничего что твин не удаляется предыдущий? Может и ничего, точно не знаю.
И парметры в твинах, что в onOver, что в onOut одинаковые, это так надо?

kirea 26.08.2009 01:59

Цитата:

Сообщение от udaaff (Сообщение 845587)
На фазе всплытия другие события еще ловятся от дочерних мувиков, скорее всего.
И ничего что твин не удаляется предыдущий? Может и ничего, точно не знаю.
И парметры в твинах, что в onOver, что в onOut одинаковые, это так надо?

1. от дочерних не ловятся события. я в коде (см. выше) указал mc.mouseChildren = false;
2. насколько я понимаю, так как твины не безымянные, а присобачены к одному проперти (private var tweenX:Tween = null), то вызов заново конструктора прибьет старый одноименный твин (новый будет использовать адресное пространство старого). во всяком случае у меня так всегда работало раньше без проблем.
3. в onOver и в onOut параметры разные (это я ошибся в описании темы при вырезании лишнего кода - уже поправил): в первом от 1 до MENU_SCALE, во втором наоборот - от MENU_SCALE до 1.

wvxvw 26.08.2009 02:49

Вообще-то обычно в таких случаях делается 1 твин для всего, и для рол-аут и для рол-овер, а когда надо, просто останавливаем его и играем в противоположную сторону...

etc 26.08.2009 07:49

ROLL_OVER и ROLL_OUT не всплывающие.

igrayka 26.08.2009 19:21

kirea
надеюсь ты разберешься со своей проблемой ))

Вот что хотел спросить, а как сделать такуюже флешку как у тебя чтобы она сама на весь экран масштабировалась ? может у тебя есть .fla для примера ... спасибо. очень нужная вещь

kirea 26.08.2009 19:57

Вложений: 1
Цитата:

Сообщение от igrayka (Сообщение 845899)
kirea, как сделать такуюже флешку как у тебя чтобы она сама на весь экран масштабировалась ? может у тебя есть .fla для примера ... спасибо. очень нужная вещь

Ну САМА флешка никогда подобным образом масштабироваться не будет. Я описал класс с довольно таки непростым поведением загруженных мувиков.
В зависимости от настроек экземпляра класса одни мувики ваще не масштабируются при изменении размера окна, другие приаттачиваются к указанной границе окна браузера на нужном расстоянии и масштабируются либо с учетом высоты окна (как небоскребы у меня), либо с учетом ширины, либо даже по условию (типа учитывать высоту, но при этом и ширину удерживать не менее 70% окна -- у меня так постройки заднего плана и меню оранжевое снизу 100% ширины). Класс этот не выложу, но брошу простенький пример из той же оперы, а условия масштаба опишешь сам.


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

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