public class MyClass extends MovieClip {
public function MyClass():void {
my_mc.addEventListener(MouseEvent.CLICK, action);
}
private function action(e:MouseEvent):void {
trace("cliked");
}
}
时间线代码
var myClass:MyClass = new MyClass();
addChild(myClass);
我无法访问
my_mc
(放置在 FLA 中)影片剪辑。如何访问?
最佳答案
尝试这个:
public class MyClass extends MovieClip
{
public function MyClass()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var myMc:MovieClip = stage.getChildByName("my_mc") as MovieClip;
// var myMc:MovieClip = parent.getChildByName("my_mc") as MovieClip;
myMc.addEventListener(MouseEvent.CLICK, onMyMcClick)
}// end function
private function onMyMcClick(e:MouseEvent)
{
trace("clicked");
}// end function
}// end class
如果这不起作用(我认为不会),那是因为您的
my_mc
显示对象不是舞台的子对象,而是 MainTimeline
实例的子对象.如果是这样,那么只需注释掉上面代码中的以下语句:var myMc:MovieClip = stage.getChildByName("my_mc") as MovieClip;
并取消注释上述代码中的以下语句:
// var myMc:MovieClip = parent.getChildByName("my_mc") as MovieClip;
如果我的假设是正确的,
my_mc
和 myClass
显示对象共享同一个父对象。
关于actionscript-3 - 如何使用 as3 类访问舞台上的电影剪辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280203/