[FLASH 8] Migration AS1 -> AS2
Salut,
je suis le conseil de Jean Philippe et je passe à AS2.
J'ai vu la nouvelle structuration objet, elle est bien plus proche de ce que l'on a l'habitude de trouver lorsque l'on développe en dot Net par exemple. C'est beaucoup plus propre qu'avant et le fait de pouvoir définir un fichier de classe est bien pratique puisque ça évite d'avoir à créer des images et des calques dédiés au code.
Ma première question concerne le
Code:
1 2
|
Object.registerClass("nomClip",nomClasse); |
Quelle est le nouvel usage, dans la doc, je trouve bien cette référence pour AS1 mais il n'y a pas de lien type "Nouvelle syntaxe"...
Pourriez-vous m'aider à ce sujet ?
D'avance merci
Laurent
[AS2] Menu hiérarchique XML (Etape1)
Re,
J'ai fini de porter le travail que j'avais déja effectué de AS1 vers AS2 en tenant compte des explications données dans la page que tu m'as indiquée.
J'ai donc
- Menus.xml
- clMenu.as
- TestMenu.fla
Menus.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<Root_Element>
<Menus>
<Menu caption="Accueil" open="clpPannel001Accueil"/>
<Menu caption="Tchat" open="clpPannel002Tchat"/>
<Menu caption="Messagerie" open="clpPannel003Messagerie">
<SousMenus>
<Menu caption="Envoyés" open="clpPannel003Messagerie01"/>
<Menu caption="Reçus" open="clpPannel003Messagerie02"/>
</SousMenus>
</Menu>
</Menus>
</Root_Element> |
clMenu.as
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
/*
Class : clMenu
Auteur : Laurent Jordi
Modifée le : 24/09/2006
Copyright : Laurent Jordi - EZ Logic Monaco - <a href="http://www.ezlogic.mc" target="_blank">http://www.ezlogic.mc</a>
*/
class clMenu extends MovieClip
{
//Variables de liaison
public static var id:String
= "__Packages.clMenu";
private static var _isSymbolLinked:Boolean
= Object.registerClass(id, clMenu);
//Variables d'occurence privée
private var __index:Number;
private var __caption:String;
private var __link:String;
private var __childrenMenus:Array;
//Constructeur
//********************************************
public function clMenu() {
var intTop:Number;
var tf = this.createTextField("txtCaption",this.getNextHighestDepth(),0,intTop,this._parent._width,10);
tf.autoSize = "left";
}
//********************************************
public function get index():Number {
return this.__index;
}
public function set index(value:Number):Void {
this.__index = value;
}
//********************************************
public function get caption():String {
return this.__caption;
}
public function set caption(value:String):Void{
this.__caption = value;
//Mise à jour du champ texte
this["txtCaption"].text = value;
}
//********************************************
public function get link():String {
return this.__link;
}
public function set link(value:String):Void{
this.__link = value;
}
//********************************************
} |
TestMenu.fla
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
import clMenu;
//Variables globales
var maxIndex:Number = -1;
// Chargement du XML
var menuXML:XML = new XML();
var szSourceXLM:String = "Menus.xml"
menuXML.onLoad = menuXML_onLoad;
menuXML.load(szSourceXLM);
function menuXML_onLoad(success) {
var currentNode;
_root.createEmptyMovieClip("clpMainMenu01",1);
var parentMenu:MovieClip = _root["clpMainMenu01"];
var currentMenu:MovieClip;
var currentMenuName:String;
var previousMenu:Number;
if (success) {
currentNode = menuXML.firstChild.childNodes[1].childNodes [1]; // Liste des menus
while (currentNode!=null) {
switch (currentNode.nodeName) {
case "Menu":
_root.maxIndex++;
currentMenuName = "MenuItem" + _root.maxIndex;
currentMenu = parentMenu.attachMovie (clMenu.id,currentMenuName,parentMenu.getNextHighestDepth());
currentMenu.index = _root.maxIndex;
currentMenu.caption = currentNode.attributes.caption;
currentMenu.link = currentNode.attributes.open;
if(currentMenu.index>0){
previousMenu = currentMenu.index - 1;
trace(currentMenu._parent ["MenuItem" + previousMenu]._y);
currentMenu._y = parentMenu ["MenuItem" + previousMenu]._y + parentMenu["MenuItem" + previousMenu]._height;
} else {
currentMenu._y = 0;
}
break;
case "SousMenus":
//ToDo
break;
}
currentNode = currentNode.nextSibling.nextSibling;
}
}
} |
Etape suivante : Instauration de la récursivité pour charger les sous menus en cascade.
Laurent Jordi
Création de la structure récursive
Re,
Donc, avant de poursuivre et d'ajouter les listeners qui permettront de rendre ce système de menus dynamiques, nous devons faire en sorte qu'il soit possible d'ajouter simplement des menus ou des sous-menus à notre structure.
Je pense qu'il faut d'abord créer une collection de menu. Ce sera le clip racine qui contiendra les menus de premier niveau. Ce clip racine pourra être personnalisé couleurs, définition des polices en fonction des niveaux, dimensions etc.
La classe comportera donc un tableau de menus qui pourront eux mêmes contenir une collection de sous menus.
Prochain post à venir.
Laurent Jordi
[Question] Utilisation des classes en cascade
Re,
La question est de savoir comment on utilise les classes en cascade. Doit-on importer la classe dans la collection ET dans le clip de test ?
@+
Laurent