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

  1. #1
    Membre à l'essai
    [FLASH MX2004] Retarder le lancement d'impression
    Bonjour,

    j'ai un flash dédié à l'impression.
    Celui-ci charge un fichier XML pour modifier des informations et des textes dans l'animation.
    Je lance ensuite automatiquement une impression.

    Mon problème est que l'impression se lance avant le raffraichissement des textes dynamiques, et ma feuille s'imprime avec des champs vides.

    J'ai essayé sans succès de faire une tempo avec setInterval, mais sans succès (l'impression se lance tout de suite).

    quelqu'un aurait-il une idée ?

  2. #2
    Membre confirmé
    Hello

    Utilise un setInterval ou sur flash 8 un setTimeout Cela te permettra de laisser le temps à tes champs de se remplir

    EKA+

  3. #3
    Membre habitué
    sinon tu tests en boucle

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    tant que tous mes champs pas remplis
       attendre
    fin tant que
    imprimer

  4. #4
    Membre confirmé
    cela revient au même Mais faut pas utiliser de boucle for on while dans flash pour tester un truc dans le temps !! c'est important car les boucles for, while etc.. sont limités à 256 récursions et 12 à 16 secondes d'éxécutions
    EKA+

  5. #5
    Expert éminent
    Salut,

    Citation Envoyé par JavaSearch
    J'ai essayé sans succès de faire une tempo avec setInterval, mais sans succès (l'impression se lance tout de suite).
    tu dis que tu as essayé sans succès le setInterval. Peux-tu nous faire voir le code que tu as mis ?


    Citation Envoyé par ekameleon
    cela revient au même Mais faut pas utiliser de boucle for on while dans flash pour tester un truc dans le temps !! c'est important car les boucles for, while etc.. sont limités à 256 récursions et 12 à 16 secondes d'éxécutions
    EKA+
    Tiens c'est interressant ça.
    Mais j'ai mal compris les "256 récursions". Qu'est que tu entends pas là ?
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  6. #6
    Membre confirmé
    hello

    une récursion c'est quand une fonction s'appelle elle même... pour pas avoir une boucle infinie (si on se trompe dans son code...) et donc figer tout l'ordinateur, macromedia a limité les boucles de flash (for, while etc..) à 256 récursions ou quelques secondes... (on peut traffiquer ce délais avec une application swf scriptlimits Injector de burak : http://www.buraks.com/swfsli/)

    si on lance une boucle trop longtemps... l'ordi et l'anim se fige et on a au bout d'un moment un message qui apparait avec "voulez vous continuer...."

    Du coup .. pour faire une boucle infinie... le seul moyen c'est d'utiliser un setInterval ou un onEnterFrame ... ainsi la boucle va être callée par rapport à la fréquence de l'animation au minimum et il n'y aura pas de problème... (si le setInterval a un interval <150ms .. on est en gros dans du onEnterFrame en vitesse...)

    EKA+

  7. #7
    Expert éminent
    Merci pour cette précision.
    En fin de compte , c'est juste la récursion sur n'importe quelle fonction qui est limitée à 256 niveaux.
    Moi j'essayais d'imaginer des while "récursifs" bref des trucs comme
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (x) {
      while(x) {
      }
      while(x) {
      }
      while(x) {
      }
      ...
      while(x) {
      }
    }

    ou
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while(x) {
     while(x) {
      while(x) {
       ...
      }
     }
    }

    Mais ca n'a rien à voir. J'ai besoin de vacances
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  8. #8
    Membre à l'essai
    C'est résolu...
    Je ne sais pas trop ce qui marchait pas lorsque j'ai essayé d'utilisé le setInterval...

    Bref, maintenant ça marche.

    Pour info, voici une partie de mon code :
    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
    if (_root.opt == "show" && _root.preset_id > 0){
    	load_preset(_root.preset_id);
    	preset.rotate="false";
    	var it=setInterval(appel_print,1000);
    	}
     
     
     
     
     
    function appel_print() {
    	clearInterval(it);
    	myColor = new Color(_root.typo);
    	myColor.setRGB(0x000000);
    	my_pj=new PrintJob();
    	my_pj.start();
    	my_pj.addPage(_root);
    	delete my_pj;
    }


    Merci à tous