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

ActionScript 3 Discussion :

Naviguer dans les frames d'un MovieClip qui se trouve dans un Bouton


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut Naviguer dans les frames d'un MovieClip qui se trouve dans un Bouton
    Bonjour.
    Je travaille sur un jeu de plate-forme en 2D.

    J'ai créé un bouton qui permet de passer le jeu en mode plein écran.
    L'instance de ce bouton (qui ce trouve sur le stage) est nommé "btn_fullsc".

    Dans ce bouton, un même MovieClip est utilisé pour chaque frame/état du bouton (Up, Over, Down).
    Ce MovieClip est lié à l'Action Script en tant que Class nommé "fullScreenClip".

    Remarque: Il est peut être préférable d'utiliser un nom d'instance pour le MovieClip au lieu d'une Class ActionScript. A vous de me le dire.

    Dans ce MovieClip se trouvent 2 frames: frame 1 et frame 2.
    Frame 1 est l'image que j'aimerais afficher lorsque la dimension du jeu est en mode normal (stageDisplayState.NORMAL).
    Frame 2 est l'image que j'aimerais afficher lorsque la dimension du jeu est en mode plein écran (stageDisplayState.FULL_SCREEN).

    Toujours dans ce MovieClip, la ligne de code "stop();" se trouve sur chaque frame.

    Voici le code pour la fonction plein écran dans la scene principale:
    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
     
    import flash.display.StageDisplayState;
     
     
     
    function toggleFullScreen():void
    {
        if (stage.displayState == StageDisplayState.NORMAL) 
        {
        stage.displayState=StageDisplayState.FULL_SCREEN;
        } else 
            {
                stage.displayState=StageDisplayState.NORMAL;
            }
    }
     
    btn_fullsc.addEventListener(MouseEvent.CLICK, buttonOnClick)
     
    function buttonOnClick(event:MouseEvent):void
    {
        toggleFullScreen();
    }
    J'ai fais plusieurs tentatives mais rien ne fonctionne.
    Les problèmes sont les suivants:
    - Quand je passe ma souris sur le bouton, le clip interne démarre automatiquement pour s'arrêter sur la frame 2. Si je repasse à nouveau, le clip bascule sur la frame 1.
    - J'ai tenté d'accéder aux frames à l'aide de méthodes tels que gotoAndStop avec le MovieClip instancé (btn_fullsc.FullScreenClip.gotoAndStop(2)) ou avec le MovieClip sous forme de class (FullScreenClip.gotoAnsStop(2)).

    Examples en code:

    MovieClip Instancé:
    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
     
    import flash.display.StageDisplayState;
     
     
     
    function toggleFullScreen():void
    {
        if (stage.displayState == StageDisplayState.NORMAL) 
        {
        stage.displayState=StageDisplayState.FULL_SCREEN;
        btn_fullsc.fullScreenClip.gotoAndStop(2);
        } else 
            {
                stage.displayState=StageDisplayState.NORMAL;
                btn_fullsc.fullScreenClip.gotoAndStop(1);
            }
    }
     
    btn_fullsc.addEventListener(MouseEvent.CLICK, buttonOnClick)
     
    function buttonOnClick(event:MouseEvent):void
    {
        toggleFullScreen();
    }
    Erreur obtenue:
    Scene 1, Layer 'Script', Frame 1, Line 11 & 15 1119: Access of possibly undefined property fullScreenClip through a reference with static type flash.display:SimpleButton.

    MovieClip sous forme de Class:
    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
     
    import flash.display.StageDisplayState;
     
     
     
    function toggleFullScreen():void
    {
        if (stage.displayState == StageDisplayState.NORMAL) 
        {
        stage.displayState=StageDisplayState.FULL_SCREEN;
        fullScreenClip.gotoAndStop(2);
        } else 
            {
                stage.displayState=StageDisplayState.NORMAL;
                fullScreenClip.gotoAndStop(1);
            }
    }
     
    btn_fullsc.addEventListener(MouseEvent.CLICK, buttonOnClick)
     
    function buttonOnClick(event:MouseEvent):void
    {
        toggleFullScreen();
    }
    Erreur Obtenue:
    Scene 1, Layer 'Script', Frame 1, Line 11 & 15 1061: Call to a possibly undefined method gotoAndStop through a reference with static type Class.

    Ces tentatives sont veines et je me rends bien compte qu'il y a pas mal de choses qui m'échappent.
    Quelqu'un aurait-t-il une méthode intelligente et efficace pour résoudre ce problème ?

    Merci pour votre lecture.

  2. #2
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    bonjour
    j'aurais pas fais comme toi. car quand on créer un bouton avec les outil flash ca revient a créer un objet de class SimpleButton. qui a 3 ou 4 état stable.

    toi tu veux 6 état stable.
    un quand tu es en plein ecran et souris en dehors bouton
    un quand tu es en plein ecran et souris au dessus bouton
    un quand tu es en plein ecran et souris click
    un quand tu n' es en pas plein ecran et souris en dehors bouton
    un quand tu n' es en pas en plein ecran et souris au dessus bouton
    un quand tu n' es en pas en plein ecran et souris click

    oui non?
    @+gustave02

  3. #3
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    il y a plusieurs solutions.
    celle que je vois comme la plus simple

    c'est de mettre deux bouton l'un au dessus de l'autre

    btn_Plein.addEventlistener(MouseeVENT.click, modeEcran);// avec image pour le mode plein ecran
    btn_normal.addEventlistener(MouseeVENT.click, modeEcran);//avec une autre image

    btn_normal.visible =true;
    btn_Plein.visible = false;

    function modeEcran(event:MouseEvent):void{
    if (plei ecran){
    tu revient en normal et tu montre le bouton btn_normal
    } else {
    l'inverse
    }
    }
    ok?

    @+gustave02

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    Citation Envoyé par gustave02 Voir le message
    il y a plusieurs solutions.
    celle que je vois comme la plus simple

    c'est de mettre deux bouton l'un au dessus de l'autre

    btn_Plein.addEventlistener(MouseeVENT.click, modeEcran);// avec image pour le mode plein ecran
    btn_normal.addEventlistener(MouseeVENT.click, modeEcran);//avec une autre image

    btn_normal.visible =true;
    btn_Plein.visible = false;

    function modeEcran(event:MouseEvent):void{
    if (plei ecran){
    tu revient en normal et tu montre le bouton btn_normal
    } else {
    l'inverse
    }
    }
    ok?

    @+gustave02
    bonne idée.
    Je test et je te tiens au jus.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    Ca marche impeccable!

    Code Résolu:
    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
     
    import flash.display.StageDisplayState;
     
    function toggleFullScreen():void
    {
        if (stage.displayState == StageDisplayState.NORMAL) {
            stage.displayState=StageDisplayState.FULL_SCREEN;
    		btn_normalsc.visible=false;
    		btn_fullsc.visible=true;
        } else {
            stage.displayState=StageDisplayState.NORMAL;
    		btn_normalsc.visible=true;
    		btn_fullsc.visible=false;
        }
    }
     
    //btn_fullsc.buttonMode = true;
    btn_fullsc.addEventListener(MouseEvent.CLICK, buttonOnClick)
    btn_normalsc.addEventListener(MouseEvent.CLICK, buttonOnClick)
     
    btn_fullsc.visible=false;
    btn_normalsc.visible=true;
     
    function buttonOnClick(event:MouseEvent):void
    {
        toggleFullScreen();
    }
    PS: Par défaut, La touche "ESC" permet de quitter le mode plein écran en utilisant flash.display.StageDisplayState;
    Ici, la function qui écoute le listener de type Mouse ne s'execute donc pas quand on revient en mode normal avec le clavier (conflit de boutons).

    J'ai simplement utilisé mon gameloop (ENTER_FRAME listener) pour resoudre le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function ButtonGlitchFullScreenFixer (){
    	if (stage.displayState == StageDisplayState.NORMAL) {
    		btn_normalsc.visible=true;
    		btn_fullsc.visible=false;
        } 
    }
    Encore une fois,
    merci gustave02

  6. #6
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut
    plus simple
    utiliser l'evenement resize


    stage.addEventListener(Event.RESIZE, tafonction);

    @+gustave02

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/05/2010, 16h36
  2. [MySQL] Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 21/03/2008, 15h59
  3. Naviguer sur les frames d'un autre SWF
    Par paricilas dans le forum Flash
    Réponses: 1
    Dernier message: 12/06/2007, 09h35
  4. probleme de redirection dans les frames
    Par paricard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/02/2006, 01h57
  5. Son dans les frames
    Par mr.t dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 03/01/2005, 17h29

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