Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

15oct/090

Flex Modules – Communication Module vers Module

Vous pouvez accéder aux propriétés et aux méthodes d'autres modules en utilisant les références vers les autres modules de l'application parente. Pour cela, vous devez utiliser la propriété "child" de ModuleLoader. Cette propriété point vers une instance de la classe du module, ce qui vous permet d'appeler des méthodes et d'accéder aux propriétés.

L'exemple suivant définit une application qui charge 2 modules. Le module InterModule1 définit une méthode qui renvoie une String. Le module InterModule2 appelle cette méthode et remplace la valeur de son label par la valeur retournée par le module 1.

L'application principale

<?xml version="1.0"?>
<!-- modules/TitleModuleLoader.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:ModuleLoader url="InterModule1.swf" id="m1"/>
  <mx:ModuleLoader url="InterModule2.swf" id="m2"/>
</mx:Application>

Module 1

<?xml version="1.0"?>
<!-- modules/InterModule1.mxml -->
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" width="100%"
  height="100%">
  <mx:Script><![CDATA[
    // Defines the method that the other module calls.
    public function getNewTitle():String {
      return "New Module Title";
    }
   ]]></mx:Script>
</mx:Module>

Module 2

<?xml version="1.0"?>
<!-- modules/InterModule2.mxml -->
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"
           width="100%"
           height="100%">
  <mx:Script>
    <![CDATA[
      [Bindable]
      private var title:String;

// Call method of another module.
      private function changeTitle():void {
        title = parentApplication.m1.child.getNewTitle();
      }
    ]]>
  </mx:Script>
  <mx:HBox>
    <mx:Label id="l1"
              text="Title: "/>
    <mx:Label id="myTitle"
              text="{title}"/>
  </mx:HBox>
  <mx:Button id="b1"
             label="Change Title"
             click="changeTitle()"/>
</mx:Module>

Dans cet exemple, l'application permet de faire le pont entre les 2 modules. Vous pouvez, cependant, définit les méthodes et les propriétés accessibles à l'aide d'interfaces ActionScript. En effet, ici aussi on a un couplage fort entre les classes et on perd beaucoup de l'intérêt du module Flex.

Articles similaires