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

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

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

Регистрация: Apr 2011
Сообщений: 15
Question Как правильно обращаться с экземплярами класса ?

Подскажите пожалуйста такую вещь :
1.Есть класс Box
2.В цикле создаем 5 экземпляров (5 квадратиков с разными координатами.)
3.На каждый экземпляр нужно повесить слушатель (ON_MOUSE_UP)
4.Ну и соответственно обрабатывать события для каждого конкретного экземпляра.

Я уже кучу книг перелопатил, но никак понять не могу как это сделать ПРАВИЛЬНО.

Если можно приведите какой нибудь очень простой пример, дальше сам разберусь.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Box extends Sprite 
	{
		public function Box() 
		{
			graphics.beginFill(0x8AC5FF);
			graphics.drawRect(0, 0, 20, 20);
			graphics.endFill();
			//.....................
			addEventListener(MouseEvent.MOUSE_UP, mouse_up);
		}
		//------------------------------------------------------------------------------------
		private function mouse_up(e:MouseEvent):void 
		{
			trace("собитие mouse_up произошло над квадратом №",name)
		}
 
	}
 
}
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
		private var box:Box;
 
		public function Main():void 
		{
			for (var i:int = 0; i < 10; i++) 
			{
				box = new Box();
				box.x = 25 * i;
				box.name = String(i);
				addChild(box);
			}
		}
 
	}
 
}

Старый 19.04.2011, 19:12
yoman вне форума Посмотреть профиль Отправить личное сообщение для yoman Найти все сообщения от yoman
  № 3  
Ответить с цитированием
yoman

Регистрация: Apr 2011
Сообщений: 15
Спасибо вам добрый человек, принцип я понял, просто тупил отчаянно, но вот напрашивается сразу другой вопрос, а если класс BOX находится в SWC библиотеке, то как его расширить, что бы работало как в вашем примере ?

Старый 19.04.2011, 19:13
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Перепишу допишу пример samana
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite {
		private var box:Vector.<Box> = new Vector.<Box>();
 
		public function Main():void {
			for (var i:int = 0; i < 10; i++) {
				var obj:Box = new Box();
				obj.x = 25 * i;
				addChild(obj);
				obj.addEventListener(MouseEvent.CLICK, onClick);
				box.push(obj);
			}
		}
	}
}
Добавлено через 34 секунды
Создайте класс, расширенный от класса в SWC.
__________________
тут я

Старый 24.04.2011, 18:26
yoman вне форума Посмотреть профиль Отправить личное сообщение для yoman Найти все сообщения от yoman
  № 5  
Ответить с цитированием
yoman

Регистрация: Apr 2011
Сообщений: 15
Цитата:
Сообщение от КорДум Посмотреть сообщение
Перепишу допишу пример samana
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite {
		private var box:Vector.<Box> = new Vector.<Box>();
 
		public function Main():void {
			for (var i:int = 0; i < 10; i++) {
				var obj:Box = new Box();
				obj.x = 25 * i;
				addChild(obj);
				obj.addEventListener(MouseEvent.CLICK, onClick);
				box.push(obj);
			}
		}
	}
}
Добавлено через 34 секунды
Создайте класс, расширенный от класса в SWC.
Все здорово и все работает, только теперь непонятно, как сделать так, что бы я знал, какой конкретно экземпляр обрабатывает событие, как на этом примере, сделать так-же как в первом ???

Старый 24.04.2011, 20:24
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 6  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Понравилось вот это:

Цитата:
Сообщение от yoman Посмотреть сообщение
... Я уже кучу книг перелопатил...


Например, задать свой свойство "name" как в примере @samana:

Код AS3:
box.name = String(i);
и за тем вычислять в обработчике по свойству target:

Код AS3:
 
 private function EventListener(e:MouseEvent):void
{
        var nameBox:String = e.target.name;
 
}

Старый 24.04.2011, 20:32
yoman вне форума Посмотреть профиль Отправить личное сообщение для yoman Найти все сообщения от yoman
  № 7  
Ответить с цитированием
yoman

Регистрация: Apr 2011
Сообщений: 15
Спасибо за ответ, я тут уже почти разобрался с ассоциативными массивами, и как раз прочитал в справочнике при target

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

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

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


 


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


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