移动MovieClip及其包含的所有内容

时间:2012-12-11 16:29:28

标签: actionscript-3 flash

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

我尝试了以下内容:

navbar.addChild(button1);

这只是让按钮消失了。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

答案 1 :(得分:1)

如您所愿,如果您希望navbar和按钮充当独特元素,您需要将按钮放在navbar内,而不仅仅放在它上面。

按钮消失的原因是因为它已经放在Designer的舞台上,所以当你将它添加到navbar时,你将它放到两个不同的显示堆栈中,这是不允许的

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

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

导出for ActionScript 下的库的 MovieClip属性窗口中分配了类名Button1

答案 2 :(得分: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)可让您影响主舞台。使用此属性,您可以从导航栏内部生成对象。

相关问题