Flash:获取符号名称

时间:2012-02-15 23:10:45

标签: flash actionscript

我在场景中有大约1000个对象,每个对象都有特定的符号名称(""的实例),并且有空白的实例名称。当我点击其中一个对象时,我能以某种方式得到符号名称吗?我可以引用这些对象,将它们设置为x,y等......?谢谢!

3 个答案:

答案 0 :(得分:0)

as2 / as3问题是相关的。

这取决于你点击的意思。如果您正在运行Flash应用程序,是的,您可以注册事件侦听器以在单击符号实例时获取该位置。当您需要在时间轴上从父级访问符号时,符号需要一个名称。

您可以使用getChildAt(index)方法访问MovieClip的子级,并使用numChildren字段获取子级数AS3:

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

答案 1 :(得分:0)

是的,如果您使用的是AS3,请按照以下步骤操作:

遍历每个对象并添加点击事件:

myObject1.addEventListener(MouseEvent.Click, onClick);

创建处理正在收听的事件的方法:

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

   myObject.x = 10; // etc

}

这将允许您在单击并操作对象时获取对象的引用。

答案 2 :(得分:0)

看到它的实际效果:http://wonderfl.net/c/hJVd

我使用getChildAt代替 symbole name

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);
            }
        }
    }
}