IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Changement de taille de l'objet Application et navigateur.


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut Changement de taille de l'objet Application et navigateur.
    Bonjour à tous,

    Je cherchais à augmenter la hauteur de l'application Flash dans le navigateur Internet. J'ai constaté que cela ne pose aucun problème : Il suffit de modifier la propriété "height" de l'objet "Application".

    Mais il se pose alors un problème :

    Lorsque la hauteur de l'objet dépasse la hauteur de la page affichée par le navigateur, ce dernier n'affiche pas de barre de défilement verticale. De sorte qu'il est impossible de voir "le bas" de l'objet Flash.

    Mon propos n'est peut-être pas très clair. Aussi, le petit code ci-dessous illustre ce qui se passe. Il vous suffit de cliquer plusieurs fois sur le bouton "Add" pour comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application	xmlns:mx="http://www.adobe.com/2006/mxml"
    				layout="horizontal"
    				borderStyle="solid"
    				borderThickness="3"
    				backgroundColor="#FFFFFF"
    				borderColor="#000000"
    				width="600">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.containers.Box;
    			private function Add(event:Event):void
    			{
    				var newBox:Box = new Box();
    				newBox.width  = 500;
    				newBox.height = 200;
    				IdVboxMain.addChild(newBox);
    				this.height = this.height + 250;
    			}
    		]]>
    	</mx:Script>
     
    	<mx:VBox id="IdVboxMain">
    		<mx:Button label="Add" click="Add(event)"/>
    		<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    		<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    		<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    		<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    	</mx:VBox>
    </mx:Application>
    Je suppose que ce comportement vient du fait que la page HTML qui contient l'objet Flash n'est pas rafraîchie lorsque la taille de l'objet Flash change.

    Il existe certainement une "astuce JavaScript" ou "Ajax" pour forcer le navigateur à rafraîchir la page sans recharger l'objet Flash. Si l'objet Flash est rechargé, alors il reviendrait à son état de départ (réinitialisation)...

    Avez-vous déjà été confronté à ce problème? Existe-t-il une solution propre et portable pour régler ce problème?

    Merci pour votre aide,

    Denis

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Je vois plutot le probleme dans l'autre sens moi

    Pourquoi ne pas faire grandir un container enfant de ton application plutot que directement ton application?

    qq chose de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application	xmlns:mx="http://www.adobe.com/2006/mxml"
    				layout="horizontal"
    				borderStyle="solid"
    				borderThickness="3"
    				backgroundColor="#000CCC"
    				borderColor="#000000"
    				width="600">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.containers.Box;
    			private function Add(event:Event):void
    			{
    				var newBox:Box = new Box();
    				newBox.width  = 500;
    				newBox.height = 200;
    				IdVboxMain.addChild(newBox);
    				monCanvas.height = monCanvas.height + 250;
    			}
    		]]>
    	</mx:Script>
    	<mx:Canvas id="monCanvas" width="600">
    		<mx:VBox id="IdVboxMain">
    			<mx:Button label="Add" click="Add(event)"/>
    			<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    			<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    			<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    			<mx:Box width="500" height="200" backgroundColor="#ffee88"/>
    		</mx:VBox>	
    	</mx:Canvas>
     
    </mx:Application>
    ainsi tu gardes la main sur tes enfants-parents et leurs contraintes restent interne au swf

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Salut Jim,

    Oui, tu as raison, c'est une solution envisageable. Cela dit, il y a un point vers lequel je désire attirer ton attention : Il s'agit des mouvements relatifs entre le contenu du fichier HTML et le contenu de l'interpréteur Flash.

    Je m'explique :

    • Si la barre de défilement est intégrée au contenu HTML, alors lorsque le contenu HTML défile, le contenu Flash défile aussi (puisque l'objet Flash fait partie du contenu HTML). Dans ce cas, il n'y a qu'un seul "référentiel de défilement" (le conteneur HTML).
    • Si la barre de défilement est intégrée au contenu Flash, alors lorsque le contenu Flash défile, le contenu HTML reste fixe. Dans ce cas, il y a deux "référentiels de défilement" (les conteneurs HTML et Flash).


    Par conséquent :

    • Si mon application WEB se compose d'un unique objet Flash (qui intègre toute la présentation), alors oui, je peux envisager d'intégrer la barre de défilement au contenu Flash
    • En revanche, si mon application WEB se compose d'un conteneur HTML et d'un objet Flash, alors je serais confronté à un problème de défilement relatif si la barre de défilement est intégrée au contenu Flash.


    Si je n'ai pas le choix, alors j'envisage de développer une application Flash qui intègre "toute la présentation". De sorte qu'il n'y ait qu'un seul référentiel : le conteneur Flash.

    Mais, de ce cas, je me pose la question suivante :

    Y a-t-il un avantage à déporter une partie de la présentation dans le contenu HTML?

    Bien entendu, il me semble préférable de charger les images pendant l'exécution (run time), plutôt que de les intégrer au SWF lors de la compilation. Cela permet de tirer profit des tampons (caches) gérés par le serveur et le client : Cela soulage le serveur et accélère le chargement des pages.

    Qu'en penses-tu?

    A+ Denis

  4. #4
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    as tu tenté simplement d'agrandir l'objet HTML également?
    genre utiliser ExternallInterface pour appeler une méthode JavaScript, qui va aller modifier à la volée le height de l'objet flash HTML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private function Add(event:Event):void
    {
    	var newBox:Box = new Box();
    	newBox.width  = 500;
    	newBox.height = 200;
    	IdVboxMain.addChild(newBox);
    	monCanvas.height = monCanvas.height + 250;
            ExternallInterface.call("taFonctionJS"); 
    }
    la syntaxe exact est a vérifier, tu peux passer en paramètre la valeur que tu souhaites lui donner par exemple.

    Je ne sais pas ce que cela va donner mais tu peux toujours tester

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Merci Jim,

    C'est justement ce que je cherchais : Je cherchais un moyen d'agir "à la volée" sur la hauteur du document HTML.

    Je viens du monde "backend' sous UNIX (C, C++, Perl, PHP, Python). Je connais HTML et CSS, mais je ne me suis jamais mis sérieusement à JavaScript : Je n'aime pas l'idée d'écrire du code pour chaque navigateur, et pour chaque version de navigateur... C'est pourquoi je me suis intéressé à Flex. Le "Flash Player" permet de s'affranchir des différences entre les navigateurs. Résultat : Un seule code pour IE, Firefox, Safari,...

    Je vais creuser dans la direction que tu m'as indiquée.

    A+ Denis

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2014, 21h50
  2. Réponses: 0
    Dernier message: 19/01/2009, 10h09
  3. Taille d'un objet
    Par DeusXL dans le forum DirectX
    Réponses: 7
    Dernier message: 02/09/2004, 11h21
  4. Réponses: 2
    Dernier message: 17/03/2004, 13h58
  5. Réponses: 2
    Dernier message: 18/12/2003, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo