Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать имя экземпляра MovieClip (http://www.flasher.ru/forum/showthread.php?t=197274)

Black Soviet 04.04.2013 17:04

Как узнать имя экземпляра MovieClip
 
Ребят, во Flash CS создал мувиклип Papa, внутри него находится еще штук пять мувиклипов, каждый из которых имеет своё имя экземпляра(son1,son2... son5).

Навешиваю на каждого "сына" слушатель на клик мышью.

Код AS3:

var mc:Papa = new Papa();
addChild(mc);
mc.son1.addEventListener(MouseEvent.CLICK, startProcess);

Код AS3:

private function startProcess(e:MouseEvent):void
{
}

Как внутри функции startProcess теперь узнать на какого конкретного сына был произведен клик?
getQualifiedClassName логично возвращает строку с movieclip, а мне нужна строка "son1".

Ох ну по name же.

iflamberg 04.04.2013 17:15

Имя экземпляра - это свойство mc.name. В вашем коде это так:
Код AS3:

private function startProcess(e:MouseEvent):void
{
  var mc:MovieClip = e.currentTarget as MovieClip;
  if (mc.name=="sun1") ...
}

Но вообще у вас корявый код получается. Если у вас все "сыны" в "папе", то логичней так:
Код AS3:

var mc:Papa = new Papa();
addChild(mc);
mc.addEventListener(MouseEvent.CLICK, startProcess); //один единственный слушатель на папе слушает всех детей
 
private function startProcess(e:MouseEvent):void
{
  var mc:MovieClip = e.target as MovieClip;
  switch (mc.name){
    case "sun1":
      //action
      break;
    case "sun2":
      //action
      break;
    ...     
  }
 
}


Black Soviet 04.04.2013 21:04

iflamberg, у меня по вашему коду сыны в своём namе возвращают не "son1", "son2", а "instance23", "instance 25" и т.д.

caseyryan 04.04.2013 21:11

Естественно. Имя переменной и свойство name дисплей объекта, не имеют ничего общего.
И вообще для решения этой задачи не нужно знать названия переменных, за которыми закреплены ссылки на объекты. Достаточно в обработчике юзать event.target или event.currentTarget

Black Soviet 04.04.2013 21:23

caseyryan, я повесил слушателя не на каждого сына, а на mc (который является Papa). Кликая на любом сыне currentTarget возвращает объект Papa, target возвращает объект Son. Но e.target.name возвращает не "sоn1", а "instance23".

Добавлено через 8 минут
Ух, ребят, у меня день тяжёлый, в Sun лежал просто еще один movieclip, он все карты и путал.

iflamberg 04.04.2013 23:41

Я так из знал, что надо подсказать, что, если у вас в детях есть вложенные мувики, то нужно для каждого sun сделать .mouseChildren = false;


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

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