我在场景中有大约1000个对象,每个对象都有特定的符号名称(""的实例),并且有空白的实例名称。当我点击其中一个对象时,我能以某种方式得到符号名称吗?我可以引用这些对象,将它们设置为x,y等......?谢谢!
答案 0 :(得分:0)
as2 / as3问题是相关的。
这取决于你点击的意思。如果您正在运行Flash应用程序,是的,您可以注册事件侦听器以在单击符号实例时获取该位置。当您需要在时间轴上从父级访问符号时,符号需要一个名称。
您可以使用getChildAt(index)方法访问MovieClip的子级,并使用numChildren字段获取子级数AS3:
答案 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);
}
}
}
}