我有一个名为 navbar 的 MovieClip,上面有按钮。如何将按钮连接到 MovieClip,以便在移动 MovieClip 时按钮随之移动?我已经能够使导航栏可拖动,但按钮没有被拖动。
我尝试了以下方法:
navbar.addChild(button1);
这只是使按钮消失。
我有一个名为 navbar 的 MovieClip,上面有按钮。如何将按钮连接到 MovieClip,以便在移动 MovieClip 时按钮随之移动?我已经能够使导航栏可拖动,但按钮没有被拖动。
我尝试了以下方法:
navbar.addChild(button1);
这只是使按钮消失。
您的方法是正确的:将按钮作为子项添加到 MovieClip 将允许它们全部作为一个项目移动。
按钮消失可能有多种原因,例如 x 和 y 现在相对于新父级(即现在将按钮 y 设置为 600 距离导航栏向下 600 像素,而不是从舞台或旧父级向下)。
尝试注释掉您在按钮上设置的任何属性,看看是否能解决问题,从那里您可以确定是哪个属性导致按钮消失。
所以你基本上应该有这样的东西:
var button1:Button = new Button();
navbar.addChild(button1);
如果即使使用最少的代码也不会导致按钮显示在导航栏上,您需要发布更多代码,以便我们可以看到问题发生在哪里。
如您所想,如果您希望navbar
和 按钮像一个独特的元素一样,您需要将按钮放在里面,navbar
而不仅仅是在它上面。
按钮消失的原因是因为它已在 Designer 中放置在舞台上,因此,当您将其添加到 时navbar
,会将其放入两个不同的显示堆栈中,这是不允许的。
您应该将按钮放在navbar
Designer 中,或者将它们导出为 AS,然后动态实例化它们,如下所示:
var btn:Button1 = new Button1()
navbar.addChild(btn)
类名在库的MovieClip 属性窗口中的Export for ActionScriptButton1
下分配。
您可以计算从 Movieclip 的 X、Y 到按钮的距离,您可以编写如下代码:
var diff1:int = navbar.x - example_button1.x;
stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
example_button1.x=navbar.x-diff1;
});
您可以复制 example_buttons 和 diff 变量。
或者您可以startDrag()
同时使用相同的事件侦听器,
navbar.addEventListener(someEvent.some, function(event:someEvent):void{
MovieClip(root).navbar.startDrag();
MovieClip(root).example_button1.startDrag();
});
MovieClip(root)
允许您影响主舞台。例如,使用此属性,您可以从导航栏内部影响对象。