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

Flash Discussion :

[FLASH MX] Ouverture d'une fenetre a la taille de l'image.


Sujet :

Flash

  1. #1
    Invité
    Invité(e)
    Par défaut [FLASH MX] Ouverture d'une fenetre a la taille de l'image.
    Bonjour,
    Je voudrais savoir, comment, dans mon code flash, je peux lui dire qu'au clic de la souris sur un apercu, il ouvre une nouvelle fenetre à la taille de l'image.
    Pour l'instant j'utilise la fonction go to url, pasque j'ai rien trouvé d'autre dans les actions que propose MX, mais ce n'est pas tres esthetique...
    Merci pour vos futurs eclaircissements.

  2. #2
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Hellop !!

    Si c'est des images jpg, tu pourrais les charger dans ton animation, dans un clip vide, via la méthode LoadMovie...

    ex :

    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
     
    var mc:MovieClip = this.createEmptyMovieClip( 'mc', 1 );
    mc.loadMovie( './monImage.jpg' );
     
    this.onEnterFrame = function()
    {
    mc._visible = false;
    if( mc.getBytesLoaded() < mc.getBytesTotal() )
    trace( 'loading' );
    else
    {
    trace( 'loaded' );
    delete this.onEnterFrame;
    displayPicture();
    }
    }
     
    function displayPicture()
    {
    trace( mc._width );
    trace( mc._height );
    }

    Normalement, lorsque tu passes dans displayPicture, tu devrai obtenir les dimensions de ton image, donc tu peux créer une fenêtre à l'arrière-plan de ton image qui prenne ses dimensions + 10 px de chaque côté, pour avoir l'impression de faire un cadre...


    Bon, c'est juste un exemple... après, on peut faire mieux, mais c'est déjà une base pour s'inspirer.

    A++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oki, jvais essayer, mirci titouille !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Yup, alors j'ai essayé ton code exactement tel que tu me l'as donné (en changeant quand meme le nom de l'image bien sur), mais il m'affiche un message d'erreur quand je test...
    Le voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 1: Statement must appear within on handler
         var mc:MovieClip = this.createEmptyMovieClip( 'mc', 1 );
     
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 2: Statement must appear within on handler
         mc.loadMovie( 'Doigt.jpg' );
     
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 4: Statement must appear within on handler
         this.onEnterFrame = function()
     
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 17: Statement must appear within on handler
         function displayPicture()
    Ma scene se prenomme illustration, et mon image que je voudrais agrandir sur la frame 36. L'image s'appelle "doigt.jpg"
    Sachant que j'ai fait un copier coller du code que tu m'a mis, les lignes sont les memes que les tiennes.
    Voila, comme je ne sais po ce que signifie le "
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 4: Statement must appear within on handler", je vous demande encore un peu d'aide siouplait...
    Mirci (L)

  5. #5
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Hellop !!


    Statement must appear within on handler
    ça veut dire que tu as mis du code sur un symbole (non pas sur la scène) et que ce n'est pas correct... Si tu veux mettre du code sur un symbole, tu dois le placer dans un gestionnaire "on(...)"... tel que on(press), on(release), etc...

    Tu ne peux pas placer de code sur un symbole si ce n'est pas un gestionnaire d'évenement.

    Il faut bien distinguer le fait de mettre du code "sur" quelque chose ou mettre du code "dans" quelque chose...

    Si tu sélectionne un objet puis que tu prend le panneau action, tu mets du code "sur" ton objet.

    Si tu double-click pour rentrer dans l'objet, rajoute un calque et y met du code, la tu mets du code dans ton objet.

    Bon courage, a++

  6. #6
    pom
    pom est déconnecté
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 128
    Points
    128
    Par défaut
    Tu as mis ton code sur un bouton, c'est pour ça que ça part en sucette. Le code de Titouille était censé être mis dans une image-clé. Donne un nom d'occurrence à ton bouton et mets ce code dans la timeline qui contient ton bouton:
    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
    tonBouton.onPress = function () {
      var mc:MovieClip = this.createEmptyMovieClip( 'mc', 1 ); 
      mc.loadMovie( './monImage.jpg' ); 
     
      this._parent.onEnterFrame = function() 
      { 
        mc._visible = false; 
        if( mc.getBytesLoaded() < mc.getBytesTotal() ) 
        trace( 'loading' ); 
      else 
      { 
        trace( 'loaded' ); 
        delete this.onEnterFrame; 
        displayPicture(); 
      } ;
    } ;
     
    function displayPicture() 
    { 
      trace( mc._width ); 
      trace( mc._height ); 
    };

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oki...Alors, j'ai essayé ta methode pom...et voila mes resultats ->
    - en theorie, tu as oublié dans ton code une parenthese comme ca "}". J'ai donc pris l'initiative de completer le code, et de la rajouter a la fin...il ne me met alors plus de code d'erreur...
    - mais quand je clic sur mon bouton donc, il m'ouvre une fenetre toute belle "Output" avec ceci dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    loaded
    undefined
    undefined
    Est ce qu'il ne trouve pas l'image ??? pourtant, il met loaded, donc en theorie il l'a trouvé ? dans ce cas, qu'est ce que signifient ces "undefined" ...?

    - derniere petite chose, j'ai un vieux doute d'un coup : lorsqu'on a l'image voulue dans le meme dossier (au meme niveau) que la page, on a pas besoin de mettre de "./", n'est ce pas ?
    Moi, j'ai mis mon image au meme niveau que le .fla, donc j'ai remplacé le petit bout de code par
    'monImage.jpg'
    Ca m'etonnerais que ce soit ca qui bug, mais on sait jamais.
    Mirci pour votre attention encore pom et titouille.

  8. #8
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    en fait, il faut attendre encore un peu avant de tester les valeurs... une fois que ton image est chargée, tu dois encore laisser un temps d'attente (par exemple encore 2 ou 3 entrées de frames) pour permettre l'initialisation finale de ton mc.

    Donc en fait, tu devrai faire un switch dans le onEnterFrame... ex :

    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
     
    var index:Number = 0;
     
    mc.loadMovie( 'img.jpg' );
     
    onEnterFrame = function()
    {
    switch( index ) :
    {
    mc._visible = false;
    case 0 :
    // ici, tu teste le chargement, comme avant
        if( mc.getBytesLoaded() < mc.getBytesTotal() )
            trace( 'loading' );
        else
            {
            trace( 'loaded' );
            index++;
            }
        break;
     
    case 5 :
        delete this.onEnterFrame;
        displayPicture();
        break;
    default :
        index ++
        break;
    }
    }
    Dès que le chargement est terminé, je passe index à 2, et vu que je n'ai pas de "case" avant 5, il passe par "default" et incrémente index à chaque fois. Ce qui me permet de laisser un petit temps d'attente avant la suite des opérations, pour que tout soit ok.

    Bon courage, a++

  9. #9
    Invité
    Invité(e)
    Par défaut
    ... Heu, j'ai pas compris l'utilisation des "cases", et apparement l'ordi aussi ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 8: '{' expected
         switch( index ) :
     
    Scene=Illustration, Layer=Fenetres, Frame=36: Line 11: 'case' statements can only be used inside of a 'switch' statement
         case 0 :
    Mais pourquoi la methode de pom ne marchait pas ? une fois que l'image est chargé, il ne devrait pas avoir de probleme a l'afficher...

  10. #10
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    oups... la ligne

    doit se trouver hors du switch, juste en dessus...

    Mais pour ta question, j'y ai répondu juste avant... c'est à cause du temps d'initialisation de l'objet une fois que son contenu est totalement chargé.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Pfiouuu...heu, ia plusieurs choses que je ne comprend pas. Deja, j'ai interpreté ta derniere phrase comme un "juste en dessous", mais bien que j'ai essayé en dessous, au dessus, dans, le switch, en dehors, ca marque toujours le meme message d'erreur que j'avais precisé.
    Alors j'ai repris ton premier code, je l'ai mis au bon endroit, et j'ai relu ton post, et je me suis demandé si je m'étais bien fait comprendre. => j'aimerais que ca m'affiche directement l'image, alors que ton premier code affiche les dimensions de mon image.


    Bon, alors vus que mon cerveau n'accepte apparement pas ce probleme qui n'a pas l'air si dur que ca, est ce que vous pourriez me preciser exactement tout ce que j'ai a faire etape par etape ?
    Chuis desolé, jsais que c'est pas forcement agreable...
    Mirci

  12. #12
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Oui, mon code fait un simple trace des dimensions de l'image, mais après, tu peux en faire ce que tu veux... c'est à toi de complèter, on est pas là pour faire les animations à ta place, non plus :p


    voici un code qui devrai à première vue fonctionner... je tappe à l'oeil, donc pas testé, y a peut être des bugs...


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    var index:Number = 0;
     
    mc.loadMovie( 'img.jpg' );
     
    this.onEnterFrame = function()
    {
    mc._visible = false;
     
    switch( index ) :
    {
    case 0 :
    // ici, tu teste le chargement, comme avant
        if( mc.getBytesLoaded() < mc.getBytesTotal() )
            trace( 'loading' );
        else
            {
            trace( 'loaded' );
            index++;
            }
        break;
     
    case 5 :
        delete this.onEnterFrame;
        displayPicture();
        break;
    default :
        index ++;
        break;
    }
    }
     
    function displayPicture()
    {
    mc._visible = true;
     
    // là je trace les valeurs, pour les tester...
    // ensuite, j'en fais ce que j'en veux, 
    // par exemple créer un mc en dessous pour faire office de "cadre"
    trace( mc._height );
    trace( mc._width );
    }

    Vala, bon courage, a++

Discussions similaires

  1. [SWING] Ouverture d'une fenetre à partir d'une autre.
    Par VinceTlse dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 02/05/2008, 21h47
  2. ouverture d'une fenêtre
    Par pitchounette13 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/06/2006, 15h32
  3. Ouverture d'une fenetre en fullscreen
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/11/2005, 16h22
  4. Réponses: 47
    Dernier message: 24/10/2005, 09h43
  5. Réponses: 2
    Dernier message: 24/03/2004, 10h22

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