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

11sept/085

Flex ActionScript – ActionScript Nested et blocs mx:Script

ActionScript Nested

Vous pouvez inclure du code ActionScript dans des tags MXML. Vous pouvez les inclure comme vous le feriez pour les propriétés. Vous devez placer le code dans un bloc CDATA.

Voici un exemple:

<mx:Button>
	<mx:click>
		<![CDATA[
			mx.controls.Alert.show("Exemple");
		]]>
	</mx:click>
</mx:Button>

 Scripts MXML <mx:Script>

Vous pouvez aussi ajouter du code à une application en le plaçant dans un bloc script. Un script MXML apparaît dans un document à l'intérieur d'un élément Script.

Puisque le code ActionScript pourrait utiliser des caractères spéciaux qui pourraient être interprétés pas le compilateur MXML, vous devez placer le code ActionScript dans un tag script, mais aussi dans un bloc CDATA, comme dans l'exemple suivant:

<mx:Script>
	<![CDATA[
		import mx.controls.Alert;

		private function exemple():void{
			Alert.show("Exemple");
		}
	]]>
</mx:Script>

Vous pouvez aussi placer les blocs de code ActionScript dans des fichiers séparés, et vous pouvez les inclure dans un bloc Script en utilisant l'attribut "source" d'un tag Script:

 <mx:Script source="code.as"/>

Articles similaires

Commentaires (5) Trackbacks (1)
  1. Merci encore pour ces explications. C'est le meilleur cours de Flex que j'ai vu! C'est mieux que la documentation d'Adobe. Grace à ce cours je réalise que Flex est vraiment simple.

  2. Merci,
    manque juste une explication sur le trace avec mxml.
    J'ai une version avec debugger de flashplayer10 mais les trace ne fonctionnent pas ??Et j'utilise FD et flexsdk compiler.
    @+

  3. Salut,
    assures-toi que tu compiles bien en debug (-debug=true), que ta version est debugger:
    http://www.flex-tutorial.fr/2008/07/15/flex-debug-debugger-avec-le-flash-debug-player/
    Et que ton mm.cfg soit bien configuré (+ redémarrage du navigateur):
    http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/

    Fabien

  4. Salut,

    Je ne sais ou mettre ce poste n'ayant pas trouvé d'article sur le composant repeater...(En espérant que ce commentaire sois redirigé au bon endroit, si cela est possible. Désolé d'avance)

    J'obtiens cette erreure : '{identifiant+RP.currentIndex}' is not a valid identifer
    Je ne comprends pas pourquoi ...

    Voici mon code : (l'actionScript est placé dans une balise script).

    Actionscript:
    1. [Bindable]
    2. private var tab:Array = new Array("un", "deux","trois","quatre")

    MXML:
    1. <mx:Script>
    2.         <![CDATA[
    3.         [Bindable]
    4.         private var tab:Array = new Array("un", "deux","trois","quatre")
    5.         ]]>
    6.     </mx:Script>
    7.     <mx:Repeater id="RP" dataProvider="{tab}">
    8.         <mx:Button id="{'identifiant'+RP.currentIndex}" label="{RP.currentIndex}"/>
    9.     </mx:Repeater>

  5. Salut,
    le code MXML est mal passé mais je vois, je pense, l'erreur que tu as faite. Tu as essayé de mettre comme "id" de ton composant repeaté, id="{identifiant+RP.currentIndex}". Tu ne peux pas faire un Binding sur un id. Etant donné qu'il doit être unique, il est crée une seule fois et ne peux pas être modifié à la volée. Si tu faisais un binding, c'est ce qu'il pourrait potentiellement se passer.
    Si tu as vraiment besoin de passer ton identifiant à toi dans un Repeater, crée un composant personnalisé pour le composant repeaté et ajoute lui une propriété "monId" par exemple que tu pourras remplir dynamiquement. Après, il ne te restera plus qu'a boucler pour le trouver.
    Sinon, n'utilises pas de Repeater, ça apporte beaucoup de problème, fait la répétition à la main tu auras plus de contrôle (je te le conseille) :)

    Fabien


Leave a comment

(required)