0

我有一个名为 navbar 的 MovieClip,上面有按钮。如何将按钮连接到 MovieClip,以便在移动 MovieClip 时按钮随之移动?我已经能够使导航栏可拖动,但按钮没有被拖动。

我尝试了以下方法:

navbar.addChild(button1);

这只是使按钮消失。

4

3 回答 3

1

您的方法是正确的:将按钮作为子项添加到 MovieClip 将允许它们全部作为一个项目移动。

按钮消失可能有多种原因,例如 x 和 y 现在相对于新父级(即现在将按钮 y 设置为 600 距离导航栏向下 600 像素,而不是从舞台或旧父级向下)。

尝试注释掉您在按钮上设置的任何属性,看看是否能解决问题,从那里您可以确定是哪个属性导致按钮消失。

所以你基本上应该有这样的东西:

var button1:Button = new Button();
navbar.addChild(button1);

如果即使使用最少的代码也不会导致按钮显示在导航栏上,您需要发布更多代码,以便我们可以看到问题发生在哪里。

于 2012-12-11T16:53:26.760 回答
1

如您所想,如果您希望navbar和 按钮像一个独特的元素一样,您需要将按钮放在里面,navbar而不仅仅是在它上面。

按钮消失的原因是因为它已在 Designer 中放置在舞台上,因此,当您将其添加到 时navbar,会将其放入两个不同的显示堆栈中,这是不允许的。

您应该将按钮放在navbarDesigner 中,或者将它们导出为 AS,然后动态实例化它们,如下所示:

var btn:Button1 = new Button1()
navbar.addChild(btn)

类名在库的MovieClip 属性窗口中的Export for ActionScriptButton1下分配。

于 2012-12-11T16:53:57.933 回答
1

您可以计算从 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)允许您影响主舞台。例如,使用此属性,您可以从导航栏内部影响对象。

于 2012-12-11T16:59:00.343 回答