是否有关于Flash如何跨关键帧管理命名实例的文档?

我正在寻找关于Flash如何跨关键帧管理具有相同名称的对象实例的技术文档。 到目前为止,我已经注意到当播放头移动到另一个帧时,如果具有相同名称的对象具有相同的类型,则实例将与其动态设置的属性一起保留。 另一方面,一旦播放头转到命名实例是不同类型的帧,则它创建新类型的新实例(具有原始名称),并且旧类型的原始实例是永久丢弃并且命名实例上的所有动态设置属性都将丢失(因为它是一个新实例)。 如果您返回到原始帧,它不会还原原始实例,而是将其视为另一个更改,并再次构造新实例。是否有描述此行为的文档? 关于“时间轴实例的连续性”的类似问题:http://www.kirupa.com/forum/showthread.php?t = 316612 财产继续存在,我也感到惊讶。它似乎是一个运行时功能,Flash将创建一个新实例,只有当(实例名称/符号类型)对在下一个关键帧中发生更改时(即,如果命名实例“obj”指的是两个中的“球”)关键帧,然后它将保持相同的实例;但如果“obj”指的是下一个关键帧中的“方形”,则将创建一个新的“方形”实例)。这是有道理的,但这种行为是否得到保证?     
已邀请:
自从我在Flash 5中开始使用AS以来,我从未见过这种正式记录。 您的观察结果与我的相符,但另一种情况是“同名,相同类型,新关键帧,不同图层”,它们重新初始化AVM1中的对象。我不确定AVM2做了什么,因为我真的试图避免这些情况,但如果你需要,这可以是一个让你在时间轴上重新启动MC的好方法。     
这在评论中发布太长了,但我发现了使用框架脚本的各种其他行为。 到目前为止,在不同的关键帧上具有相同实例名称的对象仅在我们具有以下情况时才会创建新实例: 不同的符号类型或 相同的符号类型和不同的层 导航到不包含该对象的中间关键帧 换句话说,只要实例名称,符号类型和对象所在的层在帧与帧之间保持不变,并且每个帧包含命名实例,则单独的过滤器和变换不会导致创建新实例。 涉及ActionScript时,事情变得有趣。 ---如果你用脚本删除对象:--- 相同的实例名称,相同的符号类型,相同的图层: 如果在第1帧上使用removeChild删除对象,则在第2帧上不会创建新对象。实际上,旧对象仍然存在,但它不可见,并且应用了来自第2帧的变换的无(即,对象保留其原始大小,过滤器等)。 如果在第1帧上使用removeChild删除对象,然后立即重新添加该对象,则它会保留并在第2帧中可见,但仍然会应用第2帧中的NONE(即对象保留其原始大小,过滤器等)。 相同的实例名称,相同的符号类型,不同的层: 如果删除对象,则会按预期在第二帧上创建一个新对象,因为它位于不同的图层上。处于不同的层上几乎可以保证创建一个新对象,您将从下一个语句中看到... 如果你删除了对象然后立即重新添加它(removeChild(obj); addChild(obj);),那么你最终得到一个DUPLICATE,因为仍然创建了在第2帧上具有新变换的新实例并且原始对象仍然存在(如果你没有删除/添加它,关键帧的改变会破坏它)。 摘要 在关键帧中,唯一会触发创建具有相同实例名称的新对象的事情是,如果对象具有不同的符号类型或位于不同的层上,或者您访问的是不包含该对象的关键帧,然后回到那个。其他任何东西都不会导致创建新实例。使用ActionScript删除对象(即使您立即重新添加它)将导致播放器不向对象应用新的关键帧转换,但其本身不会触发创建新实例。     
这不是记录在案的行为,但您的观察是正确的。但是,如果您的两个共享相同实例名称的对象属于不兼容类型,则可能会发生这种情况,因为Flash可能会尝试将第二个(或所有后续内容)强制转换为“正在”或尝试像第一个那样行事一发现。这可能是fp9特有的,但行为是“疤痕”,足以告诉你不应该有两个不同的对象在同一时间轴上共享相同的实例名称。 您可能希望查看关于该主题的时间轴和实例名称的此博客条目,以获得更多启发。 我可能或可能没有充分触及的另一件事是,如果您在任何动画片段中嵌套时间轴声音,如果您使用gotoAndStop / Play来“跳过”,则此行为也会造成大规模破坏“围绕时间表。     

要回复问题请先登录注册