Actionscript 3 重用不同对象的实例名称
简单的问题:如何为不同的对象重用实例名(显然是在不同的帧上)?我真的希望能够为我的所有场景使用相同的实例名“ground”,即使这些ground实例属于不同的类。我真的不想把它们命名为“ground0”、“ground1”等等。我知道有很多方法可以解决这个问题,但我不想浪费所有额外的工作。那么,我如何重用实例名“ground”,而不向我抛出此警告呢Actionscript 3 重用不同对象的实例名称,actionscript-3,flash,Actionscript 3,Flash,简单的问题:如何为不同的对象重用实例名(显然是在不同的帧上)?我真的希望能够为我的所有场景使用相同的实例名“ground”,即使这些ground实例属于不同的类。我真的不想把它们命名为“ground0”、“ground1”等等。我知道有很多方法可以解决这个问题,但我不想浪费所有额外的工作。那么,我如何重用实例名“ground”,而不向我抛出此警告呢 Menu, Layer 'ground', Frame 1 Warning: The instance name 'ground' is dec
Menu, Layer 'ground', Frame 1 Warning: The instance name 'ground' is declared on an object of type Ground but there is a conflicting use of the instance name 'ground' on an object of type Ground2.
顺便说一句,我意识到一个实例应该是一个特定对象的实例,但老实说,我不太明白不允许在适当的时候重用实例名称的意义。任何帮助都将不胜感激。如果我记得Flash有多挑剔,可能与您如何在这些框架上创建“地面”实例有关 我的意思是:
- 您是先创建一个实例,然后再创建新的关键帧(意思是:相同的实例将用于所有关键帧),还是
- 是否首先创建空关键帧,然后在每个帧中拖放/粘贴一个“地面”实例?(意思是:在这种情况下,它可能被视为3个单独的实例)
.getChildByName(“ground”)
方法一样工作(老实说,我不确定该方法是否能立即工作,您可以尝试)。您需要for循环给定MovieClip的子项(在您的情况下,我相信是在菜单的子项中),并检查if(child.name==theNameInQuestion)返回child代码>。
尽管如此,我不能保证这是正确的解决方案(未测试),因为我不知道在运行时如何导航帧(play/stop/gotoAndPlay/gotoAndStop/etc),这可能会影响在给定时间可用的“地面”实例。在内部,Flash在帧间循环时,通过addChild/removeChild
来交换这些不同的“地面”实例,这不是一个简单的visible=true/false
切换(AFAIK)
编辑2:
这可能是你需要的
如果有任何编程语言,如果要重用实例名称变量,只需使用最顶层的超类类型键入即可。在您的情况下,这将是:
var ground:DisplayObject;
ground = new Ground!();
ground = new Ground2();
//etc ....
编辑:如果使用“属性面板”,则不能对两个对象使用相同的名称,因为无法区分它们。因此将正确抛出一个错误。
现在,如果您只想在代码中使用一个名称,则上述相同原则适用:
var ground:DisplayObject;
ground = ground0;
ground = ground1;
//etc ....
然后,您可以安全地在可变背景中使用代码。感谢@bigp的快速响应。我知道创意层在其中起了作用,这很吸引人。至于你关于这些物体是如何形成的问题,我从第一个场景中的一个mc“Ground”开始,然后我复制了这个类,并将其命名为“Ground2”。但是,我试图让两个对象共享相同的实例名“ground”。但是Flash不会有这样的功能,因为它们是不同的类。啊,是的,可以这样做(因为它们是不同的符号实例,或者你所说的类)。但是,如果仍然希望访问每个地面实例(不管它们是实例的类/符号项),也可以通过编程方式按实例或类名查找实例。我可以在我的答案中详细说明(将进行编辑)。理解起来很难,但我会尝试:)-换句话说,在代码中,您希望能够存储对“地面”实例指向的任何引用(第一次),同时保持对时间轴的playhead在任何给定时间落在哪个“地面”实例的引用?我明白了,这可能与高级AS3设置有关。。。屏幕抓取/稍后发布……其效果应该是,即使您在代码中声明了公共变量/属性ground
,它也不会与舞台上的“ground”实例有任何关联。开发人员有责任将所需的“地面”movieclip的引用存储到Ground
属性。我不认为OP指的是AS3语言(类的)实例本身,而是通过Flash Pro(CS#/CC)中的属性检查器面板输入的实例名。是否有办法删除一个实例