Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2010, 00:37
hwarang вне форума Посмотреть профиль Отправить личное сообщение для hwarang Найти все сообщения от hwarang
  № 1  
Ответить с цитированием
hwarang

Регистрация: Aug 2010
Адрес: Бороздю просторы AS3
Сообщений: 25
По умолчанию странности MouseEvent.CLICK

Код AS3:
public function langMouseButton(namePanel:MovieClip, startPlay:String, endPlay:String, langName:String, IsContent:Boolean = true){
				namePanel.buttonMode = true;
				namePanel.addEventListener(MouseEvent.ROLL_OVER, mouseOverButton);
				namePanel.addEventListener(MouseEvent.ROLL_OUT, mouseOutButton);
				namePanel.addEventListener(MouseEvent.CLICK, clicButton);
 
 
				function mouseOverButton(e:MouseEvent) {
					MovieClip(namePanel.parent).gotoAndPlay(startPlay);
				}
 
				function mouseOutButton(e:MouseEvent) {
						MovieClip(namePanel.parent).gotoAndPlay(endPlay);
				}
 
				function clicButton(e:MouseEvent){
                                        trace("1");
					updateScene(langName, IsContent);
				}
			}
почему клики добавляются?
первый клик - выдает 1
второй клик - выдает 1
1
третий клик - выдает 1
1
1

---
в итоге за 3 клика имеем
1
1
1
1
1
1



как от этого избавится?

Старый 26.12.2010, 00:38
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 2  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
очевидно, после каждого срабатывания clicButton вызывается langMouseButton и вешает очередной addEventListener(MouseEvent.CLICK, clicButton);

Старый 26.12.2010, 00:44
hwarang вне форума Посмотреть профиль Отправить личное сообщение для hwarang Найти все сообщения от hwarang
  № 3  
Ответить с цитированием
hwarang

Регистрация: Aug 2010
Адрес: Бороздю просторы AS3
Сообщений: 25
видимо (
а как убить предыдущий листенер то? Я нюби в акшне и флеше - вот разбираюсь сижу с проэктом (

Старый 26.12.2010, 00:48
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 4  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
Что значит "видимо"? Либо да, либо нет. Правильнее просто не вызывать langMouseButton всякий раз при нажатии, либо вынести добавление слушателей в отдельную один раз вызывающуюся функцию, а вообще отписаться от слушателя - это
Код AS3:
namePanel.removeEventListener(MouseEvent.CLICK, clicButton);

Старый 26.12.2010, 00:58
hwarang вне форума Посмотреть профиль Отправить личное сообщение для hwarang Найти все сообщения от hwarang
  № 5  
Ответить с цитированием
hwarang

Регистрация: Aug 2010
Адрес: Бороздю просторы AS3
Сообщений: 25
langMouseButton висит постоянно - он прилеплен к кнопке выбора языка.

поставил namePanel.removeEventListener(MouseEvent.CLICK, clicButton); после функции апдейта контента - и нормик стало.
Спасибо.

Старый 26.12.2010, 11:28
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
как от этого избавится?
Не делать анонимных функций. Никогда. Предварительно написав это большими буквами и повесив на стену.
Код AS3:
public function langMouseButton(namePanel:MovieClip, startPlay:String, endPlay:String, langName:String, IsContent:Boolean = true)
{
	namePanel.buttonMode = true;
	namePanel.addEventListener(MouseEvent.ROLL_OVER, mouseOverButton);
	namePanel.addEventListener(MouseEvent.ROLL_OUT, mouseOutButton);
	namePanel.addEventListener(MouseEvent.CLICK, clicButton);
 }
 
private function mouseOverButton(e:MouseEvent)
{
	MovieClip(namePanel.parent).gotoAndPlay(startPlay);
}
 
private function mouseOutButton(e:MouseEvent)
{
	MovieClip(namePanel.parent).gotoAndPlay(endPlay);
}
 
private function clicButton(e:MouseEvent)
{
	trace("1");
	updateScene(langName, IsContent);
}

Старый 26.12.2010, 22:50
NikolyA вне форума Посмотреть профиль Отправить личное сообщение для NikolyA Найти все сообщения от NikolyA
  № 7  
Ответить с цитированием
NikolyA
 
Аватар для NikolyA

Регистрация: Dec 2006
Сообщений: 1,764
а я столкнулся с такой проблемой: есть функция которая мне показывает кнопку по visible = true, дальше я в самой флешке этой кнопкой вызываю другую функцию - выполняется определенное действие и отлично, потом эта кнопка прячется по visible = false - тоже все хорошо, но далее когда повторяю действие, второй раз событие не работает на эту кнопку, removeEventListener почему что не срабатывает, в чем может быть проблема?

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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