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

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

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

Регистрация: Jan 2011
Сообщений: 32
По умолчанию Как использовать один обработчик для разных объектов?

Пишу крестики нолики..(учусь).
Возникла проблема, что для каждого клипа(ячейки) при

Код AS3:
Cell1.addEventListener(MouseEvent.CLICK,Step);
нужно писать функцию типа

Код AS3:
function Step(e:Event) 
{ 
      if (Player==1 && Cells[1]==0)
      {
	Cell1.gotoAndStop(2);
        Player=2;
        Cells[1]=1;
        stage.addEventListener(Event.ENTER_FRAME,proverka);
      }
 
     if (Player==2 && Cells[1]==0)
     {
       Cell1.gotoAndStop(3);
       Player=1;
       Cells[1]=2;
       stage.addEventListener(Event.ENTER_FRAME,proverka);
     }
}
а нельзя как бы сделать одну функцию для каждой ячейки?
наверное что бы функция смотрела кто её вызвал и срабатывала для той ячейки.??

Старый 05.01.2011, 20:10
surlac вне форума Посмотреть профиль Отправить личное сообщение для surlac Найти все сообщения от surlac
  № 2  
Ответить с цитированием
surlac
 
Аватар для surlac

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
используйте Event.target, чтобы узнать кто вызвал событие (т.е. для доступа к Cell). Подробнее тут.
Должно получиться что-то вроде:
Код AS3:
function Step(e:Event) 
{ 
// ...
    MovieClip(e.target).gotoAndStop(2);
// ...
}

Старый 05.01.2011, 20:16
GemiBillyBob вне форума Посмотреть профиль Отправить личное сообщение для GemiBillyBob Найти все сообщения от GemiBillyBob
  № 3  
Ответить с цитированием
GemiBillyBob

Регистрация: Aug 2010
Адрес: Харьков, Украина
Сообщений: 42
В обработчике события (функции Step) проверяем e.target — это ссылка на нажатый клип.
Пробуйте что-то такое, или вариации:
Код AS3:
function Step(e:Event)
{ 
    if(e.target==Cell1){
      if (Player==1 && Cells[1]==0)
      {
	Cell1.gotoAndStop(2);
        Player=2;
        Cells[1]=1;
        stage.addEventListener(Event.ENTER_FRAME,proverka);
      }
 
     if (Player==2 && Cells[1]==0)
     {
       Cell1.gotoAndStop(3);
       Player=1;
       Cells[1]=2;
       stage.addEventListener(Event.ENTER_FRAME,proverka);
      }
    }
}
Тему надо было назвать хотя бы "Как сделать одну функцию мышки на разные клипы??? Нид хелп ребята гляньте плиз"

Старый 05.01.2011, 20:29
passertm вне форума Посмотреть профиль Отправить личное сообщение для passertm Найти все сообщения от passertm
  № 4  
Ответить с цитированием
passertm
[+1 28.12.10]
[+1 29.12.10]
 
Аватар для passertm

Регистрация: Aug 2006
Сообщений: 107
Выйдите в раздел Форум Flasher.ru > Flash > ActionScript 3.0

И зайдите в тему "Важно: Слушатель с параметром"

Старый 05.01.2011, 23:32
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 5  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Цитата:
Сообщение от passertm Посмотреть сообщение
Выйдите в раздел Форум Flasher.ru > Flash > ActionScript 3.0

И зайдите в тему "Важно: Слушатель с параметром"
Параметры в данном случае не нужны.
Хватит e.target, как написали выше

Старый 06.01.2011, 00:13
artarx вне форума Посмотреть профиль Отправить личное сообщение для artarx Найти все сообщения от artarx
  № 6  
Ответить с цитированием
artarx

Регистрация: Jan 2011
Сообщений: 32
Решилось так!

Код AS3:
 function Step(e:Event) 
                      { 
                         if (Player==1 && Cells[1]==0)
	                      {
	                         MovieClip(e.target).gotoAndStop(2);
                             Player=2;
	                         Cells[1]=1;
		                     stage.addEventListener(Event.ENTER_FRAME,proverka);
	                      }
 
	                       if (Player==2 && Cells[1]==0)
	                      {
	                         MovieClip(e.target).gotoAndStop(3);
                             Player=1;
	                         Cells[1]=2;
		                     stage.addEventListener(Event.ENTER_FRAME,proverka);
	                      }
	                  }
Все работает СПС)) Но опять проблема! Есть массив Cells[i] , i - номер ячейки. То есть при нажатии на Cells1 заполняеться Cells[1]..
можно как нибудь в эту функцию передать переменную i?

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

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Вот теперь Вам точно в тему "Важно: Слушатель с параметром"
Если не нравится слушатель с параметром, можно создать Dictionary.

Код AS3:
var cells:Dictionary = new Dictionary();
 
function Step(e:Event) 
{ 
        if (Player==1 && cells[e.target] != null && cells[e.target] == 0)
        {
            MovieClip(e.target).gotoAndStop(2);
            Player=2;
            cells[e.target]=1;
            stage.addEventListener(Event.ENTER_FRAME,proverka);
        }
 
        if (Player==2 && cells[e.target] != null && cells[e.target] == 0)
        {
            MovieClip(e.target).gotoAndStop(3);
            Player=1;
            cells[e.target]=2;
            stage.addEventListener(Event.ENTER_FRAME,proverka);
        }
}

Старый 06.01.2011, 00:30
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 8  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Cells[int(String(e.target.name).substr(5))] = ....

Старый 06.01.2011, 00:33
artarx вне форума Посмотреть профиль Отправить личное сообщение для artarx Найти все сообщения от artarx
  № 9  
Ответить с цитированием
artarx

Регистрация: Jan 2011
Сообщений: 32
ни чего не происходит((

Старый 06.01.2011, 00:37
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 10  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Цитата:
Сообщение от artarx Посмотреть сообщение
ни чего не происходит((

То есть при нажатии на Cells1 заполняеться Cells[1]..
Cells1 или Cell1 все-таки?
если Cell1, то
Cells[int(String(e.target.name).substr(4))] = ....

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

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

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


 


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


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