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

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

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

Регистрация: Apr 2009
Сообщений: 141
По умолчанию передать параметр в слушатель MouseEvent

возможно ли передать параметр в функцию, выполняющуюся по клику мыши
возможно ли подобное:
Код AS3:
box1_mc.addEventListener(MouseEvent.CLICK,view_present_window(box1_mc));
box2_mc.addEventListener(MouseEvent.CLICK,view_present_window(box2_mc));
...............
box32_mc.addEventListener(MouseEvent.CLICK,view_present_window(box32_mc));
				function view_present_window(Event:MouseEvent,test):void
				{
					var test:view_present=new view_present();
					test.x = 23;
					test.y = 26;
					addChild(test);
				}

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
box1_mc - это event.currentTarget
Код AS3:
box32_mc.addEventListener(MouseEvent.CLICK,view_present_window);
	function view_present_window(event:MouseEvent):void{
	        var test:DisplayObject = event.currentTarget as DisplayObject;
		test.x = 23;
		test.y = 26;
 // вот это странно - тест уже добавлен  - вы хотите его просто на верх кинуть?
		addChild(test);
         }
__________________
Отряд Котовскага


Последний раз редактировалось udaaff; 22.07.2010 в 00:55. Причина: опечатка
Старый 22.07.2010, 00:54
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Agni, мне что-то не понятна логика вашего кода. Сначала вы пытаетесь передать в качестве параметра ссылку на currentTarget немыслимым способом, а потом же этому параметру присваиваете ссылку на другой объект.


Последний раз редактировалось udaaff; 22.07.2010 в 00:56.
Старый 22.07.2010, 01:39
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 4  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
Код AS3:
box1_mc.addEventListener(MouseEvent.CLICK,view_present_window(box1_mc));
box2_mc.addEventListener(MouseEvent.CLICK,view_present_window(box2_mc));
...............
box32_mc.addEventListener(MouseEvent.CLICK,view_present_window(box32_mc));
				function view_present_window(Event:MouseEvent,test):void
				{
					var test:view_present=new view_present();
					test.parametr1= 23;//parametr1 и parametr2 это свойства box1_mc(если клик был по box1_mc)  или свйостива box2_mc, если клик был по box2_mc)
					test.parametr2 = 26;
					addChild(test);
				}
коряво, конечно, спросил

имелось в виду, что при "клике" на любом mc (box1_mc,box2_mc,box3_mc,.....) создается объект класса view_present, в который хочу передать параметры (parametr1,parametr2), зависящие от box1_mc или box2_mc или box3_mc, в зависимости от того на каком был сделан клик

то есть хочу заменить страшную конструкцию

Код AS3:
 
box1_mc.addEventListener(MouseEvent.CLICK,view_box1_mc);
box2_mc.addEventListener(MouseEvent.CLICK,view_box2_mc);
box3_mc.addEventListener(MouseEvent.CLICK,view_box3_mc);
................. до box30_mc
 
function view_box1_mc(Event:MouseEvent):void
{
	var edit_temp:view_present=new view_present();
	edit_temp.description_present_txt.text = box1_mc.p_description;
	addChild(edit_temp);
}
 
function view_box2_mc(Event:MouseEvent):void
{
	var edit_temp:view_present=new view_present();
	edit_temp.description_present_txt.text = box2_mc.p_description;
	addChild(edit_temp);
 
}
function view_box3_mc(Event:MouseEvent):void
{
	var edit_temp:view_present=new view_present();
	edit_temp.description_present_txt.text = box3_mc.p_description;
	addChild(edit_temp);
}
.......... до view_box30_mc
на что-нибудь более грамотное

Старый 22.07.2010, 01:45
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Смотрите пост Котяры. И параметр "Event" с маленькой буквы лучше бы написать.

Старый 22.07.2010, 02:27
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 6  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
вроде так:
Код AS3:
 
box1_mc.addEventListener(MouseEvent.CLICK,view_box_mc);
 
	function view_box_mc(event:MouseEvent):void
		{
			var test:DisplayObject = event.currentTarget as DisplayObject;
			var edit_temp:view_present=new view_present();
			edit_temp.x = -806;
			edit_temp.y = 178;
			edit_temp.description_txt.text = test.p_description;//не находит такого свойства у box1_mc, хотя оно присутствует
			addChild(edit_temp);
		}
но не работает

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У класса DisplayObject нет свойства p_description
Приведите к правильному классу.
__________________
Reality.getBounds(this);

Старый 22.07.2010, 08:21
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 8  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
что значит привести к правильному классу?

Старый 22.07.2010, 11:00
nark03 вне форума Посмотреть профиль Отправить личное сообщение для nark03 Найти все сообщения от nark03
  № 9  
Ответить с цитированием
nark03
[+1 27.05.10]

Регистрация: Dec 2009
Сообщений: 32
Если хотите заменить "вашу ужасную конструкцию" то просто в обработчике пишите edit_temp.description_present_txt.text = (event.target as type).p_description;
где type тип ваших объектов boxN_mc, n = 1 to 30

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

Регистрация: Jun 2009
Сообщений: 461
Если вы вообще хотите передавать любой параметр, то нужно писать свой эвент. Я делаю так:
Код AS3:
	import flash.events.*;
 
	public class NW_EventWithParam extends Event {
 
		private var _EventParam;
 
		public function NW_EventWithParam(NW_EventType:String,ep) {
			super(NW_EventType,true,false);
			_EventParam=ep;
		}
 
		public function get EventParam() {
			return _EventParam;
		}
 
	}

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

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

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


 


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


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