Pour faire des appels JS->Flex ou Flex-JS on utilise ExternalInterface
exemple d’allers-retours JS->Flex->JS
<SCRIPT LANGUAGE="JavaScript">
function fromFlexToJavascript(obj) {
alert("id = "+obj.id+" username="+obj.username);
return "Bonjour, votre nom est "+obj.username;
}
function fromJavascriptToFlex(numero){
alert(numero);
var retour = document.getElementById("js").fromJavascriptToFlex(numero);
alert("Double:" + retour);
}
</SCRIPT>
et la partie Flex associée:
// ActionScript file
import flash.external.ExternalInterface;
import mx.controls.Alert;
public function init():void {
ExternalInterface.addCallback("fromJavascriptToFlex",fromJavascriptToFlex);
}
public function fromJavascriptToFlex(numero:int):Number {
return numero*2;
}
public function callJS():void {
var s:String;
var obj:Object = new Object();
obj.id = 1;
obj.username = "yarek";
s = ExternalInterface.call("fromFlexToJavascript", obj);
Alert.show("s="+s);
}
Flex ne possède pas de composant flvplayback.
Copier simplement FLVPlaybackAS3.swc dans le dossier de flex /libs/
FLVPlaybackAS3.swc ne trouve, suivant la version de Flash qeu vous possédez :
- Flash CS3: \Adobe Flash CS3\en\Configuration\Components\Video\FLVPlaybackAS3.swc
- Flash CS4: \Adobe Flash CS4\Common\Configuration\Components\Video\FLVPlaybackAS3.swc
pour éviter de recompiler le framework de Flex après avoir corrigé un certain nombre de bugs dans les
composants d’ origine de Flex, il suffit de copier les fichiers sources .as dans le répertoire src de votre projet en respectant le package ainsi que les fichiers liés.
Par exemple voici ce que donne la disposition des fichiers si on décide de modifier la composant TabNavigator d’ origine.
<mx:Style>
.playButton {
down-icon: Embed(source=”assets/player_play.png”);
over-icon: Embed(source=”assets/player_play.png”);
up-icon: Embed(source=”assets/player_play.png”);
selected-disabled-icon: Embed(source=”assets/player_pause.png”);
selected-over-icon: Embed(source=”assets/player_pause.png”);
selected-up-icon: Embed(source=”assets/player_pause.png”);
}
</mx:Style>
Comment afficher une icône suivant la valeur d’ une variable sous Flex ?
Il fait utiliser les opérateurs : ?
icon=“{(variable==1)?class1:class2}”
ex: si variable==1 alors l’ icône sera class1 sinon elle sera de classe2
Pour ceux qui essayent de compiler sous Flex du AS3 fait pour Flash9 et obtiennent souvent des erreurs de style:
“TypeError: Error #1034: Echec de la contrainte de type : conversion de flash.display::Shape @4bca0f9 en mx.core.IUIComponent impossible.”
Cette erreur vient du fait que l’ application d’ origine de Flex est un CANVAS qui n’ accepte que des composants dérivant de IUIComponent. Or Shape ou Sprite ne sont pas des composants ! Donc il ne faut pas utiliser le Canvas mais un autre composant qui accepte les sprites et shapes !
2 solutions :
1) faire hériter Shape de IUIComponent (lourd)
2) Créer un composant container à partir de UIComponent et le placer dans le stage, qu’on appellera “container” pas exemple
Ensuite il suffira de faire un container.addChild sur les shapes ou les sprites !
En Flex, il n’y pas de propriété TOP pour contraindre en actionscript un composant à être aligné vers le haut.
Pour le faire par l’actionscript, vous devez utiliser un style: par exemple
someComponent.setStyle("top", 0);
Mots clés Technorati :
flex,
toogleButtonBar
Voici la manière la plus simple de créer un toogleButtonBar
<mx:ToggleButtonBar width=“196″ height=“35″>
<mx:Array>
<mx:Object icon=“@Embed(’assets/couple.png’)”/>
<mx:Object icon=“@Embed(’assets/couple.png’)” label=“220″/>
<mx:Object icon=“@Embed(’assets/couple.png’)” label=“230″/>
</mx:Array>
</mx:ToggleButtonBar>
<mx:XMLList id=“penMenu”>
<menu label=“1px” value=“1″/>
<menu label=“2px” value=“2″/>
<menu label=“3px” value=“3″/>
<menu label=“4px” value=“4″/>
<menu label=“6px” value=“6″/>
<menu label=“8px” value=“8″/>
<menu label=“10px” value=“10″/>
<menu label=“14px” value=“14″/>
<menu label=“18px” value=“18″/>
<menu label=“20px” value=“20″/>
</mx:XMLList>
une fois le menu défini, insérer une comboBox comme:
<mx:ComboBox labelField=”@label” x=”144″ y=”2″ width=”64″ height=”32″ id=”pencil_cmb” dataProvider=”{penMenu}” selectedIndex=”5″></mx:ComboBox>
Vous n’avez plus qu’à lire le contenu de l’item choisi dans:
pencil_cmb.selectedItem.@value
ATTENTENTION à bien utiliser l’ opérateur @ pour spécifier une propriété XML.
Mots clés Technorati :
flex touches raccourcis
Ctrl-F11: EXECUTER
F11: Debug
Ctrl-Alt-Down: répéter ligne courante A
Ctrl-Click: Aller à la définition (comme F3)
Ctrl-D: Effacer ligne
Ctrl-Up: Scroll Haut
Ctrl-Down: Scroll Bas
commentaires récenets