Просмотр полной версии : Получить имя объекта, нажимая мышью на принадлежаций ему спрайт
ganjubazz
07.07.2011, 16:55
Привет народ! Подскажите пожалуйста, как обратится к объекту, который содержит спрайт, по нажатию мышки на спрайт? Вот пример кода:
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_) //не получется естественно, потомучто кликаем по спрайту
}
Как, кликнув по спрайту, получить имя объекта, к которому он принадлежит?
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_);
}
А что значит "объект, который содержит спрайт" в вашем случае?
вот что значит var obj:Object = {sp:spr, name_:name}
cv' уже верно подсказал
Тьфу ты, не в ту сторону думал. Согласен.
ganjubazz
07.07.2011, 17:40
Спасипо, чесное слово не знал про Dictionary
Хм. Не совсем понятно, код с ошибками, и не полный (кто регистрирует слушателя)...
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_);
}Этот код не работает?
Этот код не работает?
Конечно нет!
Чтобы случалось событие MouseDown, слушателя надо вешать на интерактивный дисплей объект, а это Sprite, MovieClip, Loader и еще некоторые, но никак не Object.
Вот полный рабочий пример:
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);
}
ganjubazz
08.07.2011, 21:10
Хм. Не совсем понятно, код с ошибками, и не полный (кто регистрирует слушателя)...
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_);
}Этот код не работает?
ну да, там какбе кусок кода
cv'
Понятно. Пока плохо знаком с графической частью...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.