我想这是一个真正的专家的问题只..AS3如何检测显示对象是否受补间动画影响?
我使用Flash Authoringtool来创建影片剪辑,但我用他们自己的引擎(它的行为更好的移动)播放它们。
然而,为了正确的行为,给定一个DisplayObject,我需要知道它的父代是否将其补充到它所属的MovieClip中。
我已经拿出蛮力和非优雅的方式做到这一点:
在创作工具中,添加前缀到任何影片剪辑,是受补间的名称。该名称前缀可以随时检查。当然,因为这个前缀是一个手动过程,所以很容易忘记或错误输入一个。
在代码中,播放其所有帧的主动画片段的每个子动画片段,并为其所有子帧检测这些帧中的任何帧的转换矩阵是否更改。如果是,则自动为其名称加前缀。虽然已经自动化,但此解决方案可能会占用较大的影片剪辑的显着时间。
那么,我希望的是存在像其他一些方式:
if((dpo.parent) as MovieClip) != null)
{
bDpoIsBeingTweened = ((dpo.parent) as MovieClip).someProperty;
}
期待任何优雅的解决方案。
我不知道你的动画应该有多灵活......使用精灵表会有意义吗?此外,是从代码创建的动画还是Flash创作时间线? –
使用Flash创作时间轴创建动画(因为我喜欢所见即所得的方法)。 我使用的唯一补间动画是补间动画。然后,我自己的软件将其转换为我称之为“MovieClipInterpolator”对象。对于选定的帧率,它会计算所有插值采样点的所有位置/旋转/比例/ alpha。这里讨论的主题是如何找到动画子片段,以便低于最低片段的所有内容都可以自动缓存到位图中。 –
我开始了解更多。我猜你最好的办法是掀起一个[JSFL脚本](http://help.adobe。com/en_US/flash/cs/extend/flash_cs5_extending.pdf)脚本编写Flash Authoring,以递归方式向下钻取选定的影片剪辑的hirarchy,遍历时间线/帧并检查帧的tweenType属性(例如,如果它的值为'motion'与“形状”或“无”相反)。另外,我想以编程方式从补间动画中提取值,可能会发现[Motion XML结构](http://flashthusiast.com/2008/11/04/understanding-flash-cs4-motion-xml/)有用 –