Actionscript 3 加载SWF上的3D变换不是';行不通

Actionscript 3 加载SWF上的3D变换不是';行不通,actionscript-3,3d,flash,flash-cs5,Actionscript 3,3d,Flash,Flash Cs5,以下是场景: 我们的创作团队在Flash CS5创作工具中制作SWF动画,我们(工程师)在运行时将其加载到使用Flex SDK构建的项目中。不使用“3D旋转工具”的动画效果很好 使用三维旋转工具的动画具有以下行为: 使用3D旋转工具应用3D Tween的MovieClips显示在舞台的左上角,就好像它们根本没有变换一样(即,就好像它们的矩阵X3D被忽略了,它们的矩阵是同一的) 具有正常2D tweens的MovieClips将正确设置动画 Alpha和其他非仿射性质 在浏览器选项卡或独立fl

以下是场景:

我们的创作团队在Flash CS5创作工具中制作SWF动画,我们(工程师)在运行时将其加载到使用Flex SDK构建的项目中。不使用“3D旋转工具”的动画效果很好

使用三维旋转工具的动画具有以下行为:

  • 使用3D旋转工具应用3D Tween的MovieClips显示在舞台的左上角,就好像它们根本没有变换一样(即,就好像它们的矩阵X3D被忽略了,它们的矩阵是同一的)
  • 具有正常2D tweens的MovieClips将正确设置动画
  • Alpha和其他非仿射性质
在浏览器选项卡或独立flash player中加载3D和非3D动画时,它们都可以正常播放。3D只有在加载到我们的代码生成的SWF中时才会被破坏

因此,对于CS5创作环境中应用了3D转换的MovieClips,当我们的代码SWF加载SWF时,这些转换似乎没有得到应用/尊重

这是我第一次涉足3D,所以我不确定是什么原因导致了这种情况,但以下是我测试/检查/尝试过的内容,但都没有用:

  • 我已经确保在创作环境中选择了actionscript 3和Flash Player 10/10.1
  • 我曾尝试将动画加载到Flash player版本10.0、10.1、10.2和11中使用Flex 4.1、4.5和4.6构建的代码SWF中
  • 我已经将Matrix3D应用于加载SWF动画(标识和旋转)的容器。我可以看到旋转的容器在透视图中使用3D,所以我知道我的代码SWF支持3D

我希望有一些简单的技巧,一些我错过的设置。谢谢你的帮助

这可能是Flex代码中正在发生的事情,例如停止动画或不启动动画。您可以发布用于加载SWF的代码吗


这也可能是一种竞赛条件。在使用SWF之前,您可能必须等待SWF加载(例如,AddedStatage事件等)

这可能是Flex代码中正在发生的事情,例如停止动画或不启动动画。您可以发布用于加载SWF的代码吗


这也可能是一种竞赛条件。在使用SWF之前,您可能必须等待SWF加载(例如,AddedStatage事件等)

我遇到了你的问题,因为我遇到了完全相同的问题。。。经过反复摸索,解决方案(对我来说)归结为:

如果在任何时候,您将您的子swf强类型化到一个类中,或者使用父类的点语法引用它的任何变量,那么它将中断。即使只是一条跟踪消息

我必须替换这个:

var stoneVideo:StoneVideo = loader.content as StoneVideo;
stoneVideo.stoneText = model.stoneText;
为此:

loader.content["stoneText"] = model.stoneText;

它开始正常工作。希望这有帮助

我遇到了你的问题,因为我遇到了完全相同的问题。。。经过反复摸索,解决方案(对我来说)归结为:

如果在任何时候,您将您的子swf强类型化到一个类中,或者使用父类的点语法引用它的任何变量,那么它将中断。即使只是一条跟踪消息

我必须替换这个:

var stoneVideo:StoneVideo = loader.content as StoneVideo;
stoneVideo.stoneText = model.stoneText;
为此:

loader.content["stoneText"] = model.stoneText;

它开始正常工作。希望这有帮助

我无法发布代码,但事实证明,这是我们的加载程序代码中一个过度谨慎的微妙之处,我们以前从未发现过:

我们有一个自定义类,可以为我们加载所有图像(包括一些内置的实用程序和通用功能)。加载完成后,此代码获取loader.content,将其作为子对象添加到自身中,然后——这里是kicker——使用close()和unloadAndStop()清理不再需要的加载程序

我认为以这种方式清理加载程序似乎是合理的,而且它一直工作到现在(使用静态图像、静态SWF和SWF动画),但它在加载3D SWF时导致了上述问题(事实证明,这也导致加载视频SWF时出现奇怪的URL not found错误)


禁用过度谨慎的加载程序清理修复了我的问题。

我无法发布代码,但事实证明,这是我们的加载程序代码中一个过度谨慎的微妙之处,我们以前从未发现过:

我们有一个自定义类,可以为我们加载所有图像(包括一些内置的实用程序和通用功能)。加载完成后,此代码获取loader.content,将其作为子对象添加到自身中,然后——这里是kicker——使用close()和unloadAndStop()清理不再需要的加载程序

我认为以这种方式清理加载程序似乎是合理的,而且它一直工作到现在(使用静态图像、静态SWF和SWF动画),但它在加载3D SWF时导致了上述问题(事实证明,这也导致加载视频SWF时出现奇怪的URL not found错误)


禁用过于谨慎的加载程序清理修复了我的问题。

谢谢您的提示。这不是我的问题的原因,但很高兴有记录在案。谢谢你的留言。这不是我问题的原因,但记录在案很好。