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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.11.2010, 22:26
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 1  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
По умолчанию Одна функция для нескольких событий

Есть 5 movie clip, расположеных на сцене. Для каждого написано событие MouseEvent.CLICK, как сделать так чтобы при нажатии мышкой на одном из них, он бы двигался вниз например на 10 пикселей, при этом не вариант написать 5 функций для каждой кнопки, так как кнопки генерируются от 1 до 1000

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
1) Что значит «Для каждого написано событие MouseEvent.CLICK»?
2) В целом вы имеете в виду нечто подобное?
Код AS3:
var someMc:MovieClip = new MovieClip();
someMc.addEventListener(MouseEvent.CLICK, clickHandler);
 
function clickHandler(event:MouseEvent):void {
    // event.currentTarget - объект сгенерировавший событие
    (event.currentTarget as MovieClip).y += 10;
}


Последний раз редактировалось bav; 11.11.2010 в 22:36.
Старый 11.11.2010, 22:38
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 3  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
у меня есть класс button , я сделал массив класса button вот код
Код AS3:
var buttons: Array = [];
var p:int = 0;
for (i=0; i<=3; i++){
	for (j=0; j<=3; j++){
		if (Num[i][j]!=0) {
			buttons.push(new button());
            addChild(buttons[p]);	
			x1 += 90;
            buttons[p].x = x1;
            buttons[p].y = y1;
			p +=1;
		}
	}
 
    y1 += 90;
    x1 = 140;
}
теперь сдвинуть ту "кнопку(клетку)" на которую я нажал ! как это сделать , я не понимаю как ваш код работает(

Добавлено через 1 минуту
Код AS3:
buttons[0].addEventListener(MouseEvent.CLICK,  drag);
 
function drag(e: MouseEvent):void{
  buttons[0].x += 10;
}
для одной кнопки будет так, а если у меня их будет 1000 то и 1000 функций надо описывать , а меня это не устраивает


Последний раз редактировалось ЗлОй ПрОграММер; 11.11.2010 в 22:43.
Старый 11.11.2010, 22:43
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 4  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Подпишите сцену на MouseEvent.CLICK и работайте с target

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Просто подписывайте создаваемые в цикле кнопки на одну функцию. В вашем случае drag(). Только она должна выглядеть так:
Код AS3:
function drag(e: MouseEvent):void{
  e.currentTarget.x += 10;
  // или
  // e.target.x += 10;
}
Свойство target объекта события, передающегося в функцию drag(), является ссылкой на объект, сгенерировавший событие. Иными словами e.target – это и есть кнопка, по которой вы кликнули.

Старый 11.11.2010, 22:50
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 6  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
заработало, спасибо))

Добавлено через 3 минуты
тока ошибка возникает
TypeError: Error #1010: Термин не определен и не имеет свойств.
at _fla::MainTimeline/frame1()

а так работает всё

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

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

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


 


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


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