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

Actionscript 3 移动MovieClip及其包含的所有内容,actionscript-3,flash,Actionscript 3,Flash,我有一个叫做navbar的MovieClip,上面有按钮。如何将按钮连接到MovieClip,以便在移动MovieClip时按钮也随之移动?我已经能够使导航栏可拖动,但按钮不能随它拖动 我尝试了以下方法: navbar.addChild(button1); 这只会使按钮消失。您的方法是正确的:将按钮作为子项添加到MovieClip将允许它们作为一个项目移动 按钮消失的原因可能有很多,例如现在相对于新父级的x和y(即,将按钮y设置为600现在距离导航栏600像素,而不是舞台或旧父级) 尝试注释掉

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

我尝试了以下方法:

navbar.addChild(button1);

这只会使按钮消失。

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

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

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

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

var button1:Button = new Button();
navbar.addChild(button1);
var diff1:int = navbar.x - example_button1.x;
    stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
example_button1.x=navbar.x-diff1;
    });

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

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

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

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

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

var button1:Button = new Button();
navbar.addChild(button1);
var diff1:int = navbar.x - example_button1.x;
    stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
example_button1.x=navbar.x-diff1;
    });

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

如您所想,如果希望
导航栏
和按钮像一个独特的元素一样工作,则需要将按钮放在
导航栏
内,而不仅仅放在其上

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

您应该在Designer中的
导航栏中放置按钮,或者将其导出为AS,然后动态地对其进行实例,如下所示:

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

类名
Button1
在库的MovieClip属性窗口中为ActionScript导出下指定。

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

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

您应该在Designer中的
导航栏中放置按钮,或者将其导出为AS,然后动态地对其进行实例,如下所示:

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

类名
Button1
在库的MovieClip属性窗口中的导出操作脚本下分配。

您可以计算MovieClip的X,Y到按钮的距离,您可以编写如下代码:

var button1:Button = new Button();
navbar.addChild(button1);
var diff1:int = navbar.x - example_button1.x;
    stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
example_button1.x=navbar.x-diff1;
    });
您可以复制示例按钮和差异变量

或者您可以使用相同的事件侦听器
startDrag()
sametime

navbar.addEventListener(someEvent.some, function(event:someEvent):void{
MovieClip(root).navbar.startDrag();
MovieClip(root).example_button1.startDrag();
});

MovieClip(root)
允许您影响主舞台。例如,使用此属性,您可以从导航栏内部影响对象。

您可以计算从Movieclip的X、Y到按钮的距离,您可以编写如下代码:

var button1:Button = new Button();
navbar.addChild(button1);
var diff1:int = navbar.x - example_button1.x;
    stage.addEventListener(Event.ENTER_FRAME, function(event:Event):void{
example_button1.x=navbar.x-diff1;
    });
您可以复制示例按钮和差异变量

或者您可以使用相同的事件侦听器
startDrag()
sametime

navbar.addEventListener(someEvent.some, function(event:someEvent):void{
MovieClip(root).navbar.startDrag();
MovieClip(root).example_button1.startDrag();
});

MovieClip(root)
允许您影响主舞台。例如,使用此属性,您可以从导航栏内部影响对象。

您能否解释一下我如何在Designer中的
navbar
内部放置按钮?只需双击舞台上(或库中)的导航栏实例即可。开始MovieClip编辑模式,现在只需将按钮添加到navbar。您能解释一下我是如何在Designer中的
navbar
中放置按钮的吗?只需双击舞台上(或库中)的navbar实例即可。开始MovieClip编辑模式,现在只需将按钮添加到导航栏。