我已经开发了一段时间的移动应用程序。它可以在 iOS 和 Android 以及桌面上作为 AIR 应用程序运行。这很棒,我对此感到非常兴奋。但是,上周有人问我为什么我无法导出在 Web 浏览器中运行的应用程序版本。我说我认为我可以,我会调查一下。
但是为什么要在桌面上运行移动代码呢?
几个原因:
那么我发现了什么?好吧,从我到目前为止的尝试来看......它......不起作用。或者更确切地说,我一直无法让它发挥作用。
我首先为所有共享代码创建了一个 Flex 库项目。然后我创建了 2 个引用它的应用程序项目 - 一个用于移动设备,一个用于 Web。移动项目工作正常,但网络项目不行。到目前为止,这是我为使其工作所做的尝试:
VerifyError: Error #1014: Class flash.text::StageText could not be found
.我已经 found very little about this error ,我找到的一个技巧(添加 --swf-version=13
编译器选项)不起作用。 所以到目前为止,这些方法都没有对我有用……但是你们呢?你有没有遇到过这个问题?您是否能够使其发挥作用,或者您能否发现我在上面提到的尝试方法中所做的任何明显疏忽?如果可以的话,提前致谢。
更新:问题已解决
我已经能够在上面提到的第一条路线上取得进展:将 mobilecomponents.swc 和 mobile.swc 主题添加到我的 web 项目中
事实证明,Flash Builder 在这方面让我错了。使用“合并到代码”设置将移动 SWC 添加到您的库项目会导致编译器警告:
swc '/Applications/Adobe Flash Builder
4.6/sdks/4.6.0/frameworks/themes/Mobile/mobile.swc' has style defaults and is in the library-path, which means dependencies will be linked in without the styles. This can cause applications, which use the output swc, to have missing skins. The swc should be put in the external-library-path.
第一次看到这个,我将我的链接类型更改为“外部”,警告消失了。然后在我的 web 项目中,我还添加了移动 SWC 并将链接类型设置为“合并到代码中”。 Flash Builder 似乎对这种方法很满意,但是在运行我的应用程序时,我遇到了奇怪的运行时错误(如上所述)。
事实证明,我的第一次尝试是正确的方法。将库项目上的链接类型设置为“合并到代码中”,然后不要从您的 Web 项目重新链接。 Flash Builder 会警告您,但忽略该警告。现在大多数情况下,事情似乎都运行得很好!我有一两个问题需要研究(例如列表组件不滚动),但总体而言,事情看起来很有希望!
最佳答案
为带有移动皮肤的网络版找到了一个简洁的解决方案
对于所有 TextInput 使用 skinClass="spark.skins.mobile.TextInputSkin"
这避免了 StageText
截至目前,FlashPlayer 中缺少 StageText
仅存在于 AIR 中
关于flash - 移动和 Web 应用程序的共享代码库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486578/