【问题标题】:ActionScript 3 Workflow using SWCs with linked external classes使用带有链接外部类的 SWC 的 ActionScript 3 工作流
【发布时间】:2010-12-17 07:28:30
【问题描述】:

我正在开发一个使用大量不同 FLA 的内容的图形密集型应用程序。不过,我是一名编码员,所以我想在 Flash Builder 中完成所有编码,但是我想让我的设计师仍然使用一些时间线操作,例如 stop();甚至一些简单的按钮处理程序来更改视图。我一直在尝试为这种设置找到最佳工作流程;我尝试过使用 Embed,但这会剥离时间线代码,我尝试过 Loader,但它没有给我任何代码完成或编译时检查,我目前正在使用 SWC 以及自定义类来子类化里面的元素SWC,这似乎是迄今为止最好的组合 - 你可以完成代码并且时间线脚本仍然可以工作。我遇到的问题是我在 Flash 中有一个相当复杂的视图,我想将真实的类分配给库中的其他一些资产,但是在 SWC 中导出时它们不会保持它们的类关联。

作为一个例子,假设我有一个 FLA,在名为 View 的库中有一个符号。我给它一个“com.company.view.design.ViewDesign”的链接类。此视图内有 3 个帧,每个帧上都有一个不同的符号,称为“content1”、“content2”和“content3”。我给这些类似的链接类“com.company.view.design.Content1”等。在我的主代码库中,我有一个名为 com.company.view.View 的类,它扩展了 com.company.view.design.ViewDesign。这让我可以完全访问 View 符号中的所有内容,这很棒,而且 View 中的所有时间线脚本仍然有效。

问题在于 - 这 3 个内容符号非常复杂,并且是链接到他们自己的外部类(com.company.view.Content1 等)的主要候选者,但如果我尝试在 Flash 中这样做,当我实例化 com.company.view.View 我收到错误“类型强制失败:无法将 flash.display::MovieClip@20bec5e1 转换为 com.company.view.Content1”。

那么是否有任何解决方案,或者我只需要将我的 SWC 更多地视为一个库并以编程方式构建视图,对内容窗格使用与视图相同的继承模式?我希望我的设计师能够处理尽可能多的布局,但是随着越来越复杂的视图,我不想将单个视图的所有功能放入一个整体类(com.company .view.View)。

【问题讨论】:

  • 您使用的是 Flash Builder(与新版 flex builder 一样)还是 Adob​​e Flash®
  • 我也有同样的问题,所以我感受到了你的痛苦。这将在新版本的 flash builder(新的、不那么容易混淆的名称)和 flash 创作(这次是 cs5)中得到部分解决。但与此同时,这很麻烦。
  • 我正在使用 Flash Builder 4 Beta 2。@grapefrukt:很好奇,但是如何解决这个问题?对我来说,这更像是一个语言/格式问题?

标签: flash actionscript-3 workflow swc


【解决方案1】:

正如你所说,SWC 是要走的路。 我想我遇到了非常相似的情况,我建议你 check this question out.Here 是一个采用这种方法的虚拟项目。

另外,如果它可以加快开发时间,我已经创建了这个tiny extension,它声明了阶段实例,初始化它们并将它们放入剪贴板,这样你就可以将它添加到你的链接类中。您最初需要做的就是在 Flash 面板中设置一个命名方案,然后您所需要的只是生成按钮。

我希望你的设计师有 SVN 设置。设计师讨厌SVN!你可以用在 Mac 上看起来很可爱的东西来欺骗他们,比如 VersionsCornerstone

祝你好运!

【讨论】:

  • George,感谢您的链接,实际上我之前阅读了您的帖子,并且遇到了与您相同的“共享类路径”问题,因此这是非常有用的信息!不幸的是,我的问题更复杂,因为我无法链接嵌套的自定义类。我可以将库中的一个符号链接到自定义类,导出 SWC 并获取功能。但是,如果该符号内部有另一个符号,例如具有类似链接类的自定义按钮,则不会在 ActionScript 中键入该按钮。我认为解决方案将是简化 FLA,以便没有任何嵌套,并在脚本中组装我的布局。
  • 哦,忘了补充,我总是让我的设计师使用 SVN :)
  • 这有点像鸡和蛋。如果链接到 flash 中的类并编译 swcs,则会遇到 Type Coercion 错误。另一方面,如果您使用带有 swc 的 flash 生成的默认 as3 类,并且您将其子类化:您将得到虚无。swc 包含预编译的类,这些类在子类化时会表现得很奇怪。正如你所说,拆分它可能是前进的方向。可能每个组件都有不同的 swc,并使用代码重做一些菜单动画。 Adobe 似乎在谈到 flex 框架时主要考虑与 flash 集成 :( 基础呢?
【解决方案2】:

您的 com.company.view.Content1 类是否扩展了 MovieClip ? 如果不是,它们无法添加到舞台,Flash 会抛出该错误。

【讨论】:

    【解决方案3】:

    在运行时加载剪辑时,所有类信息都会丢失。那是你问题的根源。在这种情况下,我成功使用了以下technique。这种技术有助于加载电影和重构类信息。 Grant Skinner 前段时间对此进行了详细介绍,这也适用于纯 Flash 应用程序,尽管文章谈到了 Flex。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2011-04-21
      • 2010-12-06
      • 1970-01-01
      • 2014-12-13
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多