Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к объекту по instance name (http://www.flasher.ru/forum/showthread.php?t=212482)

Фомич 22.02.2016 15:41

Обращение к объекту по instance name
 
Приветствую! Пытаюсь обратится к instance name объектов на сцене, чтобы их перебрать и каждому повесить слушатель события. То есть я их не добавлял программно на сцену, как положено, просто прописываю имена. Возможно мне пришлют ещё таких-же с выставленными позициями, так что способ добавления addChild не подходит.

caseyryan 22.02.2016 15:58

И в чем проблема?

undefined 22.02.2016 15:58

в чем вопрос то?

Фомич 22.02.2016 16:05

Код AS3:

btnGotoFrame('btn2', 2);// где btn2 заданный объекту instance name, объект на сцене
 
function btnGotoFrame(toname, toframe):void
  {
 
    xxx(toname).addEventListener(MouseEvent.MOUSE_DOWN, function(){gotoAndStop(toframe);});
 
  }

Проблема в xxx

undefined 22.02.2016 16:41

попробуй
Код AS3:

 xxx[toname].addEventListener(MouseEvent.MOUSE_DOWN, function(){gotoAndStop(toframe);});

и и еще не используй анонимные функции.Как потом отписываться от них? это раз
переменная toframe может иметь произвольное значение к моменту вызова хэндлера.Это два

Добавлено через 3 минуты
все хэндлеры должны принимать на вход один параметр-событие это три.

Фомич 22.02.2016 16:55

undefined, я имел ввиду - что мне туда вставить вместо xxx, getChildByName не срабатывает
в конкретной обстановке отписываться не нужно будет потом

undefined 22.02.2016 18:00

Фомич,у тебя каша в голове.getChildByName - это метод. Вместо xxx должен быть объект-контейнер, где лежат твои кнопки и скобки должны быть не круглые,а квадратные.

Фомич 22.02.2016 19:03

undefined, к сожалению "должно быть" существует в идеальном мире, утопии, а у меня на руках файл, в котором дизайнер расставил объекты на сцене, вот по их именам instance name мне необходимо обратится и установить прослушку. Если под объектом контейнером ты имеешь ввиду объект вроде stage, то какой-то смысл твоего сообщения я начинаю видеть.

faraday 22.02.2016 19:25

Код AS3:

this['name']
getChildByName('name')

в чем проблема?

Фомич 22.02.2016 19:38

faraday, спасибо!

namespaces 28.02.2016 17:21

Цитата:

Сообщение от Фомич (Сообщение 1192064)
undefined, к сожалению "должно быть" существует в идеальном мире, утопии, а у меня на руках файл, в котором дизайнер расставил объекты на сцене, вот по их именам instance name мне необходимо обратится и установить прослушку. Если под объектом контейнером ты имеешь ввиду объект вроде stage, то какой-то смысл твоего сообщения я начинаю видеть.

Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.display.SimpleButton;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
 
        /**
        * ...
        * @author
        */

        public class DemoClass extends Sprite
        {
                //Контейнер для всех клипов
                private var sceneClips:SceneClips;
 
                private var clip:Sprite;
                private var button:SimpleButton;
 
                public function DemoClass()
                {
                        sceneClips = new SceneClips();
                        addChild(sceneClips);
 
                        clip = sceneClips.myClip as Sprite;
                        button = sceneClips.myButton as SimpleButton;
 
                        for (var i:int = 0; i < sceneClips.numChildren; i++)
                        {
                                sceneClips.getChildAt(i).addEventListener(MouseEvent.CLICK, onClickHandler);
 
                                sceneClips.x = (stage.stageWidth - sceneClips.width) * .5;
                                sceneClips.y = (stage.stageHeight - sceneClips.height) * .5;
                        }
 
                }
 
                private function onClickHandler(e:MouseEvent):void
                {
                        switch (e.currentTarget.name)
 
                        {
                        case "myClip":
                                trace(this);
                                break;
 
                        case "myButton":
                                trace(this);
                                break;
                        }
                }
 
        }
 
}



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

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