Flash: получить имя символа - PullRequest
1 голос
/ 16 февраля 2012

У меня около 1000 объектов на сцене, каждый с определенным именем символа («instance of») и пустым именем экземпляра.Можно ли как-то получить имя символа, когда я нажимаю на один из этих объектов?Могу ли я ссылаться на такие объекты, устанавливать их x, y и т. Д.?Спасибо!

Ответы [ 3 ]

0 голосов
/ 16 февраля 2012

Да, если вы используете AS3, выполните следующую процедуру:

Переберите каждый объект и добавьте событие клика:

myObject1.addEventListener(MouseEvent.Click, onClick);

Создать метод для обработки прослушиваемого события:

function onClick(e:MouseEvent) {
   var myObject:Sprite = e.currentTarget as Sprite;

   myObject.x = 10; // etc

}

Это позволит вам получить ссылку на объект после нажатия и манипулировать им.

0 голосов
/ 16 февраля 2012

чтобы увидеть это в действии: http://wonderfl.net/c/hJVd

я использовал getChildAt вместо имя символа :

package {
    import flash.events.MouseEvent;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var container_mc:MovieClip = new MovieClip();
            this.addChild(container_mc);
            var new_mc:MovieClip;

            for(var i:int=0;i<50;i++){
                new_mc = new MovieClip();
                new_mc.graphics.beginFill(Math.random()*0xFF0000,08);
                new_mc.x = Math.random()*stage.stageWidth;
                new_mc.y = Math.random()*stage.stageHeight;
                new_mc.graphics.drawCircle(0,0,20);
                new_mc.graphics.endFill();
                //new_mc.addEventListener(MouseEvent.MOUSE_DOWN,pressMc);//you can add event here or[2*]
                container_mc.addChild(new_mc);
            }
            //[2*]if you have already childs inside parent MovieClip:

            var totalChilds:int = container_mc.getChildNums;
            for(var c:int=0;c<totalChilds;c++){
                var mychild_mc:* = container_mc.getChildAt(c);
                mychild_mc.addEventListener(MouseEvent.MOUSE_DOWN,pressMc);
            }
            function pressMc(e:MouseEvent):void{
                trace(e.target);
            }
        }
    }
}
0 голосов
/ 16 февраля 2012

Проблемы as2 / as3 актуальны.

это зависит от того, что вы подразумеваете под кликом.Если вы используете приложение Flash, да, вы можете зарегистрировать прослушиватель событий, чтобы получить позицию, когда вы нажимаете на экземпляр символа.Символам необходимо имя, когда вам нужен доступ к ним от родителя на временной шкале.

Вы можете получить доступ к дочерним элементам MovieClip с помощью метода getChildAt (index) и получить количество дочерних элементов с помощью поля numChildren в AS3:

http://livedocs.adobe.com/flash/9.0_fr/ActionScriptLangRefV3/flash/display/MovieClip.html#methodSummary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...