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

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

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

Регистрация: Dec 2010
Сообщений: 6
Question Получить имя объекта, нажимая мышью на принадлежаций ему спрайт

Привет народ! Подскажите пожалуйста, как обратится к объекту, который содержит спрайт, по нажатию мышки на спрайт? Вот пример кода:
Код AS3:
var spr:Sprite = new Sprite();
var name:String;
var obj:Object = {sp:spr, name_:name}
function mouse_down(e:MouseEvent):void 
{
 
	trace((e.target.name_) //не получется естественно, потомучто кликаем по спрайту
}
Как, кликнув по спрайту, получить имя объекта, к которому он принадлежит?

Старый 07.07.2011, 17:08
cv' вне форума Посмотреть профиль Отправить личное сообщение для cv' Найти все сообщения от cv'
  № 2  
Ответить с цитированием
cv'

Регистрация: Apr 2010
Адрес: Москва Кузминки
Сообщений: 109
Код AS3:
import flash.utils.Dictionary;
var spr:Sprite = new Sprite();
var name:String;
var obj:Object = { sp:spr, name_:name }
var dic:Dictionary = new Dictionary();
dic[spr] = obj;
function mouse_down(e:MouseEvent):void 
{
	trace(dic[e.currentTarget].name_);
}


Последний раз редактировалось cv'; 07.07.2011 в 17:11.
Старый 07.07.2011, 17:28
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 3  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
А что значит "объект, который содержит спрайт" в вашем случае?

Старый 07.07.2011, 17:31
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 4  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
вот что значит
Код AS3:
var obj:Object = {sp:spr, name_:name}
cv' уже верно подсказал
__________________
low +

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

Регистрация: Mar 2009
Сообщений: 207
Тьфу ты, не в ту сторону думал. Согласен.

Старый 07.07.2011, 17:40
ganjubazz вне форума Посмотреть профиль Отправить личное сообщение для ganjubazz Найти все сообщения от ganjubazz
  № 6  
Ответить с цитированием
ganjubazz

Регистрация: Dec 2010
Сообщений: 6
Спасипо, чесное слово не знал про Dictionary

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

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Хм. Не совсем понятно, код с ошибками, и не полный (кто регистрирует слушателя)...
Код AS3:
var nameX:String = "xxx";
var _obj:Object = new Object();
_obj["name_"] = nameX;
_obj.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);
function mouse_down(e:MouseEvent):void 
{ 
	trace(e.target.name_);
}
Этот код не работает?
__________________
RTFM


Последний раз редактировалось S-ed; 08.07.2011 в 02:30.
Старый 08.07.2011, 11:20
cv' вне форума Посмотреть профиль Отправить личное сообщение для cv' Найти все сообщения от cv'
  № 8  
Ответить с цитированием
cv'

Регистрация: Apr 2010
Адрес: Москва Кузминки
Сообщений: 109
Цитата:
Сообщение от S-ed Посмотреть сообщение
Этот код не работает?
Конечно нет!
Чтобы случалось событие MouseDown, слушателя надо вешать на интерактивный дисплей объект, а это Sprite, MovieClip, Loader и еще некоторые, но никак не Object.

Вот полный рабочий пример:
Код AS3:
import flash.utils.Dictionary;
 
var dic:Dictionary = new Dictionary();
 
for(var i:int = 0; i<3; i++)
{
	var sprite:Sprite = new Sprite();
	var color:uint = Math.random()*0xFFFFFF;
	sprite.graphics.beginFill(color);
	sprite.graphics.drawRect(0,0,50,50);
	sprite.graphics.endFill();
	sprite.x = 60*i;
	sprite.addEventListener(MouseEvent.CLICK,eventHadnler_mouseClick)
	addChild(sprite);
	var spriteName:String = "Sprite #" + (i+1);
	var object:Object = { color:color, sprite:sprite, name:spriteName }
	dic[sprite] = object;
}
 
function eventHadnler_mouseClick(event:MouseEvent):void 
{
	var sprite:Sprite = event.currentTarget as Sprite;
	var object:Object = dic[sprite];
	trace(object.name + ' color is ' + object.color);
}


Последний раз редактировалось cv'; 08.07.2011 в 11:24.
Старый 08.07.2011, 21:10
ganjubazz вне форума Посмотреть профиль Отправить личное сообщение для ganjubazz Найти все сообщения от ganjubazz
  № 9  
Ответить с цитированием
ganjubazz

Регистрация: Dec 2010
Сообщений: 6
Цитата:
Сообщение от S-ed Посмотреть сообщение
Хм. Не совсем понятно, код с ошибками, и не полный (кто регистрирует слушателя)...
Код AS3:
var nameX:String = "xxx";
var _obj:Object = new Object();
_obj["name_"] = nameX;
_obj.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);
function mouse_down(e:MouseEvent):void 
{ 
	trace(e.target.name_);
}
Этот код не работает?
ну да, там какбе кусок кода

Старый 09.07.2011, 02:10
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 10  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
cv'
Понятно. Пока плохо знаком с графической частью...
__________________
RTFM

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

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

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


 


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


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