2009-06-17 67 views
2

OK,在flash中编译swc用于flex,用flex编写的类

听起来很复杂,但事实并非如此。这里是: 我想使用一些资产(按钮等),我在Flash动画项目中创建。由于我的所有资产都低于10K,因此我不打算加载swf,等待其加载并创建界面。我想使用一个SWC,并只需要我需要的剪辑实例。另外,我想让我的Button类拥有一些额外的属性,这就是问题发生的地方。

如果在Flash IDE的链接属性中添加对自定义Button类的引用并跟踪Button MovieClip的子节点,我会得到正确的跟踪。如果我在Flex的Main类中使用生成的swc文件创建Button并跟踪Button MovieClip的同一个子元素,那么我会得到null。

这是为什么?无论如何要解决这个问题吗?我已经考虑过使用Flex组件工具包,但由于我正在处理一个简单的动作项目,并且我没有使用Flex框架,所以在这一点上我没有看到使用组件工具包的意图。

谢谢!

回答

3

我想我明白了。

我的按钮MovieClip链接到Flex actionscript项目中其余ActionScript脚本代码所在的同一个src文件夹中的类。 (as3类路径设置为“../”,从.fla文件所在的资源文件夹中,一级到src)

当编译Flash时,找到类并找到了.swc文件。这就是为什么我从闪存中获得符号的原因。 当Flex编译时,该类在src目录中找到,因此编译了同一类的新版本,尽管它已经存在于swc文件中。由于flex找到.as文件,但不知道我是否将它链接到了Flash IDE中的一个符号(我认为它不能这样做),Flex创建了它的版本,但由于没有链接符号对于那个班级,Button I的孩子正在追踪的是null。

我想使用包并保持Fla链接类的分离,所以Flex不会编译同一个类两次。

奇怪的是我没有得到任何警告或错误,所以我认为一切都很好。

一个快速且不太脏的解决方法是从文件系统中删除物理Button类,以便Flash可以在编译时生成它的版本并且引用Button元件的子元素。然后在Flex中创建一个扩展Button的类并添加我需要的代码。由于生成的类是在.swc文件中编译的,因此Flex可以看到这一点,而且我没有扩展问题。

就是这样!鲍勃你是舅舅!

我假设发生了什么,我不是100%确定。这是我的直觉通过观察理所当然的事情,所以我可能在技术上是错误的。 如果有人有任何更正,他们欢迎。

2

我不确定我是否正确地阅读了您的问题,但您是否本质上想要嵌入从一开始就可用的图像/资产,一旦应用程序初始化就会加载图像/资产?

如果是这种情况,请查看此链接。它解释了如何将任何资产嵌入到动作项目中。 http://kennethsutherland.com/2009/04/21/why-flex-why-actionscript-why-flash/

希望这是你以后的事情。

+0

是。你说对了。我想要嵌入一些资产以避免加载。感谢这篇文章。这很方便,但是这种情况(在Flash中将项目'编译'为flex)稍微与我的相反(编译flash中的swc以用于flex)。现在,我对编译flash中的swc再思考一下,并考虑使用swf中的[Embed]标记。尽管如此,我还是认为你可以将MovieClip链接到一个外部类,将其封装在一个swc中并在flex中使用它。这是一个我不认为会遇到的问题,我很好奇这个解决方案。 – 2009-06-17 08:53:08

+0

我会压下(我不是一个flash CS3的人),直到闪存IDE生成的SWC内实际包含的内容。当我为一个flash项目创建我的AS3项目时,我们的一位设计师解释说他们没有使用Embed(它不是flash的一部分),而是将任何资产放到舞台上以确保它们从一开始就在那里,但他们不能用脚本“嵌入”它们。所以我正在压制你的SWC包含代码,但不包括资产。尝试反编译SWC(使用winzip打开获取swf),然后使用decomiler打开swf http://www.flash-decompiler.com/ – kenneth 2009-06-17 09:45:38