[as3 / classe - stc pr] interfacemanager : gérez le positionnement des elements de vos interfaces redimentionnables

Soyez le premier à donner votre avis sur cette source.

Vue 7 050 fois - Téléchargée 501 fois

Description

Il y a quelques temps, le problème s'est posé pour moi de réaliser une application dont l'interface utilisateur pouvait s'adapter à toutes tailles d'écran sans problèmes d'agrandissement ou de marges désagréables sur le côté.
La fonctionnalité de flash player sur ce point n'étant pas satisfaisante, je me suis donc tourné vers le développement d'un procédé pour replacer et redimentionner des éléments selectionnés au préalable à la suite d'une modification de la taille de la fenetre du player.

C'est ce que je vous propose ici : un objet est à créer pour ensuite pouvoir y déclarer des displayObjects appartenant directement à la scene ou à un mc lambda. Le redimentionnement automatique pour s'adapater à l'écran n'est pas automatique : en effet, il faut appliquer un écouteur d'evenement à l'objet Stage éxécutant une methode de interfaceManager (elle-meme replaçant tous les éléments à la bonne place). Plus de précisions dans la source ci-dessous.

Bien que j'ai essayé de faire de mon mieux pour commenter et documenter un maximum ma classe, je reste biensur disponible pour toute question ou même des idées pour améliorer mon travail. Merci à vous.

Source / Exemple :


//Import de la classe (qui est dans le zip).
import STCDevlib.UI.interfaceManager;

//Creation de l'objet et declaration de deux elements de l'UI
var uimngr = new interfaceManager (this.Stage, true); //On applique le gestionnaire directement à la scene qui est un objets dont les dimentions sont les mêmes que celles de la fenetre (d'ou le true en deuxieme paramètre).

uimngr.registerElement (this.mc_1, {align:"left", vAlign:"top"}); // l'objet sera aligné en haut à gauche
uimngr.registreElement (this.mc_2, {align:"right", vALign:"bottom", rightPoint:true}; // L'objet sera aligné en bas à droite en tenant compte de ses dimentions.

//Ajout de l'ecouteur et situation initiale
this.stage.addEventListener(Event.RESIZE, uimngr.resizeInterface);
uimngr.resizeInterface(); // Execution de la fonction pour mettre en place l'interface.

Conclusion :


Rien à déclarer.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
96
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 janvier 2012

Bonjour,

J'ai l'erreur suivante ???

1084: Erreur de syntaxe : rightparen est attendu devant semicolon.
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Re-bonsoir,

Effectivement, c'est un problème de version. Cette classe est rédigée en AS3, il me semble que flash 8 est encore en AS2. Mettez à jour votre version de flash pour supprimer toutes erreurs.

Bon courage.
Messages postés
4
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
12 avril 2008

Je crois que c un problème d'action script ou flash, moi je travaille avec
flash8.
a+
Messages postés
4
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
12 avril 2008

Merci pour la répense;
j'ai plus qu'une séquence dans mon animation et j'ai mis ton code
dans la séquence principale et le dossier qui contient la classe dans le même repertoire que celui du fichier .fla et voici les erreurs que j'ai:

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 13 : Erreur de syntaxe.
package STCDevlib.UI {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 27 : Attribut utilisé en dehors de la classe.
public class interfaceManager{

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 44 : Impossible de charger la classe ou l'interface 'DisplayObject'.
public function interfaceManager(stageObj:DisplayObject, isGlobal:Boolean) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 73 : Impossible de charger la classe ou l'interface 'DisplayObject'.
public function registerElement(element_mc:DisplayObject, opts:Object) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 110 : Impossible de charger la classe ou l'interface 'DisplayObject'.
public function unregisterElement(element_mc:DisplayObject) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 124 : Impossible de charger la classe ou l'interface 'Event'.
public function resizeInterface(e:Event = undefined) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 128 : Instruction interdite dans une définition de classe.
if (this.isGlobal && stageObj.stageWidth != undefined && stageObj.stageHeight != undefined){

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 134 : Instruction interdite dans une définition de classe.
for (var i in this.elementsArray) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 215 : Attribut utilisé en dehors de la classe.
public function toogleInterfaceElement(element_mc:DisplayObject, visibleState:Boolean) {

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 225 : Attribut utilisé en dehors de la classe.
public function unregister():void{

**Erreur** C:\Bureau\memoire\STCDevlib\UI\interfaceManager.as: Ligne 235 : Les scripts de classe ActionScript 2.0 peuvent définir uniquement des éléments de classe ou d'interface.
}

Total des erreurs ActionScript : 11 Erreurs signalées : 11

Bonne soirée
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Bonsoir,

Il suffit de placer le code a la racine pour que tout fonctionne.

Si vous rencontrez des erreurs, merci de venir en reparler ici.

Bonne fin d'après midi.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.