Je suis totalement novice en matière de Flex, alors je vous prie de m'excuser pour mon ignorance. J'ai cherché une réponse mais je n'ai rien trouvé qui semble faire l'affaire.
Ce que j'essaie de faire : porter cet exemple http://www.adobe.com/devnet/air/flex/articles/flex_air_codebase_print.html à Flash Builder 4.
Tout semble aller bien, sauf pour une chose. Lorsque j'utilise le code original de l'application 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>
J'obtiens cette erreur d'exécution
Erreur : addChild() n'est pas disponible dans cette classe. A la place, utilisez addElement() ou modifiez le skin, si vous en avez un. à l'adresse spark.components.supportClasses::SkinnableComponent/addChild()[ E:\dev\4.0.0\frameworks\projects\spark\src\spark\components\supportClasses\SkinnableComponent.as :1038]
Si je remplace le code par
this.addElement(can)
;
Tout se charge bien, mais la première fois que j'essaie d'appuyer sur l'un des boutons de la toile principale, j'obtiens l'erreur d'exécution suivante
ArgumentError : Erreur n°2025 : Le DisplayObject fourni doit être un enfant de l'appelant. at flash.display::DisplayObjectContainer/getChildIndex() at mx.managers::SystemManager/getChildIndex()[ E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\SystemManager.as :1665] at mx.managers.systemClasses::ActiveWindowManager/mouseDownHandler()[ E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\systemClasses\ActiveWindowManager.as :437]
voici le code super simple pour le canevas principal
<?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>
Toute aide serait immensément appréciée. Et toute indication sur la manière de configurer un projet pouvant être compilé à la fois dans Air et dans Flash tout en partageant le même code, le tout pour Flex 4, serait également très appréciée.
Merci !