我是 Flex 的新手,所以为我的愚蠢道歉。我一直在寻找答案,但没有找到任何似乎可以解决问题的东西。
我想做的事:移植这个例子http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase_print.html http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase_print.html到 Flash Builder 4。
一切似乎都很好,但有一件事。当我使用Air应用程序的原始代码时
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="onApplicationComplete()">
<fx:Script>
<![CDATA[
private static const neededForCompilation:AirGeneralImplementation = null;
private function onApplicationComplete():void
{
var can:MainCanvas = new MainCanvas();
this.addChild(can);
can.labelMessage = "Loaded in an AIR Application ";
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:WindowedApplication>
我收到此运行时错误
错误:addChild() 不可用
这个班。相反,使用 addElement()
或者修改皮肤(如果有的话)。
在
Spark.components.supportClasses::SkinnableComponent/addChild()[E:\dev\4.0.0\frameworks\projects\spark\src\spark\components\supportClasses\SkinnableComponent.as:1038]
如果我用代码替换
this.addElement(can)
;
一切都加载良好,但第一次尝试按主画布上的任何按钮时,出现以下运行时错误
ArgumentError:错误#2025:提供的 DisplayObject 必须是调用者的子级。
在 flash.display::DisplayObjectContainer/getChildIndex()
在 mx.managers::SystemManager/getChildIndex()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:1665]
在 mx.managers.systemClasses::ActiveWindowManager/mouseDownHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\systemClasses\ActiveWindowManager.as:437]
这是主画布的超级简单代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="init();">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script source="main.as" />
<mx:Label id="lblMessage" text="The UI from the shared Flex app BothCode" x="433" y="112"/>
<s:Button x="433" y="141" click="saveFile();" label="Save File"/>
<s:Button x="601" y="141" click="GeneralFactory.getGeneralInstance().airOnlyFunctionality();" label="Air Only"/>
</s:Application>
任何帮助将不胜感激。任何关于如何设置一个可以在 Air 和 Flash 中编译同时共享相同代码(全部针对 Flex 4)的项目的指示也将受到极大的赞赏。
谢谢你!