Actionscript 3 AS3将事件侦听器添加到movieclip中的movieclip
我目前有两个movieclip,一个叫做mcInvFrame,另一个叫做btnCloseInv(这是一个movieclip,我知道命名约定是错误的)。btnCloseInv位于mcInvFrame内部。我有两个文件Inventory.as和我的主文档类。我可以将mcInvFrame加载到舞台上,一切正常。但是,当我尝试访问btnCloseInv movieclip时,会出现错误。这是清单的代码。我已经注释掉了我最近失败的尝试Actionscript 3 AS3将事件侦听器添加到movieclip中的movieclip,actionscript-3,movieclip,Actionscript 3,Movieclip,我目前有两个movieclip,一个叫做mcInvFrame,另一个叫做btnCloseInv(这是一个movieclip,我知道命名约定是错误的)。btnCloseInv位于mcInvFrame内部。我有两个文件Inventory.as和我的主文档类。我可以将mcInvFrame加载到舞台上,一切正常。但是,当我尝试访问btnCloseInv movieclip时,会出现错误。这是清单的代码。我已经注释掉了我最近失败的尝试 package{ import flash.display.Movie
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Inventory extends MovieClip
{
public var inv:MovieClip = new mcInvFrame;
public function Inventory()
{
addChild(inv);
/*var invClose:MovieClip = inv.btnCloseInv;
invClose.addEventListener(MouseEvent.CLICK, CloseInventory);
function CloseInventory($e:MouseEvent):void
{
this.parent.removeChild(inv);
}*/
}
}
}
我需要知道的是我是否可以/应该在inventory中创建一个变量。至于我可以从主文档访问的按钮?如果是,怎么做
另外,我一直在搜索论坛并尝试各种解决方案,但我要么不了解其实现,要么它们不适合这种情况。我收到的最常见错误是“error#1009:无法访问空对象引用的属性或方法”。有时我会收到一个错误,指出对象没有属性。您无法在stage.movieclip.movieclip2上注册事件,我以前也尝试过同样的操作,但它不起作用,请尝试在外部创建btnCloseInv,然后使用这个代码
btnCloseInv.x = mcInvFrame.x + numberHere;
btnCloseInv.y = mcInvFrame.y + numberHere2;
如果您不想使用此代码
编辑:如果您设置了
mcInvFrame.buttonMode=true
它将不起作用您是否确实在btnCloseInv上放置了实例名称?如果你有,我认为你的代码应该可以工作。我已经找到了合适的工作,但这不是我所希望的。在Inventory中,当我添加了close按钮的一个实例并将其放置在我想要的位置时,我就能够让按钮工作了。我想访问mcInvFrame movieclip中的按钮来工作,但我似乎不知道如何在另一个movieclip中创建一个movieclip实例。