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 :

Appeler une fonction Javascript depuis un AS3


Sujet :

ActionScript 3

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 28
    Points
    28
    Par défaut Appeler une fonction Javascript depuis un AS3
    Bonjour,

    J'ai une animation flash qui permet de créer un dessin. Lorsque l'utilisateur clique sur le bouton enregistrer, j'appelle un script php qui crée une image jpeg sur le serveur et crée un enreg dans la base de données (l'enreg donne le lien de l'image pour cet utilisateur)

    J'aimerais que la page ou se trouve l'anim flash charge en vignette le(s) dessin(s) qui vien(nen)t d'être créé(s)

    Au début je pensais utiliser sur cette meme page un script JS et Ajax pour appeler un script php qui lit la BDD et recherche une nouvelle image. Si trouvé alors ce script renvoit l'image et la page de l'anim flash l'affiche

    Seulement le pbm est que je ne vois pas comment faire une sorte de "listener" permanent sur ma page flash ?

    Alors est il possible depuis flash d'appeler un script JS qui se trouve sur la meme page que l'anim flash sanzs recharger la page ?

    Si oui alors des que l'utilisateur clique sur le bouton enregistrer je pourrais faire cela :
    1- appeller le script de créatio, de l'image et d'un enreg dans la BDD
    2- appeller le script JS qui est sur la meme page que l'anim pour charger cette nouvelle image via Ajax

    Quand pensez vous ?
    Quelle serait la meilleure solution ?
    Est il possible d'appeler un script JS sur ma page ou se trouve l'anim flash depuis cette appli flash ?
    Auriez vosu des exemples ?

    Par avance merci

    Pascal

    ps voici le code de l'anim flash et du script php (qui pour l'instant ne fait que afficher l'image pour vérifier que cela fonctionne) cela peut toujours servir !

    Code Flash AS3
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    import fl.controls.ProgressBar;
    import fl.controls.ProgressBarMode;
     
    var bData:BitmapData = new BitmapData(520,360,false,0xFFFFFF);//(560,490);
    var bMap:Bitmap = new Bitmap(bData);
    var bitmapX:uint = 95;
    var bitmapY:uint = 5;
    bMap.x = bitmapX;
    bMap.y = bitmapY;
    addChild(bMap);
     
     
    var sourisPress:Boolean = false;
    var spr:Sprite = new Sprite();
     
    var pb = new ProgressBar();
    pb.move(123, 399);
    pb.mode = ProgressBarMode.MANUAL;
     
    stage.addEventListener(MouseEvent.MOUSE_DOWN,cliqueSouris);
    stage.addEventListener(MouseEvent.MOUSE_UP,relacheSouris);
    stage.addEventListener(MouseEvent.MOUSE_MOVE,bougeSouris);
    //btEffacer.addEventListener(MouseEvent.CLICK,effaceEcran);
    btEnregistrer.addEventListener(MouseEvent.CLICK,capture);
     
    function cliqueSouris(evt:MouseEvent):void{
    	spr.graphics.clear();
    	spr.graphics.lineStyle(epaisseur.value);
    	spr.graphics.moveTo(mouseX-bitmapX,mouseY-bitmapY);
    	sourisPress = true;
    	}
     
    function bougeSouris(evt:MouseEvent):void{
    	if(sourisPress){
    		spr.graphics.lineTo(mouseX-bitmapX,mouseY-bitmapY);
    		bData.draw(spr);
    	}
    }
     
    function relacheSouris(evt:MouseEvent):void{
    	sourisPress = false;
    }
     
    function effaceEcran():void{
    	bData.fillRect(bData.rect,0xFFFFFF);
    	message_text.text="";
    	removeChild(pb); 
    }
     
    function capture(evt:MouseEvent):void{
        var pixels:Array = new Array();
        var largeur:Number = bMap.width;
        var hauteur:Number = bMap.height;
     
    	addChild(pb);
     
    	//Sauvegarde de chaque pixel dans un tableau
        for (var a = 0; a<=largeur; a++) {
            for (var b = 0; b<=hauteur; b++) {
    			var tmp = bData.getPixel(a, b).toString(16);
    			if(tmp=="ffffff") {
    				tmp="";
    			}
    			var taux = int((a*b*100)/(largeur*hauteur));
                pixels.push(tmp);
    			pb.setProgress(taux, 100);
            }
    		taux = int((a*100)/largeur);
    		pb.setProgress(taux, 100);
        }
       	// Debug pour vérifier le contenu du tab de pixels
    	//trace(pixels);
     
    	//Envoie à PHP
    	envoiphp(hauteur, largeur, pixels);
    }
     
    function envoiphp(hauteur:Number, largeur:Number, pixels:Array):void{
        var url:String = "http://127.0.0.1/save_jpg.php";
        var requete:URLRequest = new URLRequest(url);
     
        var variables:URLVariables = new URLVariables();
        requete.data = variables;
        variables.img_hauteur = hauteur;
    	variables.img_largeur = largeur;
    	variables.image_flash = pixels.toString();
    	requete.method = URLRequestMethod.POST;
     
        navigateToURL(requete); 
    	message_text.text="Sauvegardé !";
    	effaceEcran();
    }
    et voci mon code PHP qui crée l'image JPEG (et qui l'affiche mais qui enregistrera l'image)

    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
     
    <?php
    $imgChaine = explode(",", $_POST['image_flash']);
    $largeur = $_POST['img_largeur'];
    $hauteur = $_POST['img_hauteur']; 
    $image = imagecreatetruecolor ($largeur ,$hauteur );
    imagefill($image, 0, 0, 0xFFFFFF);
    $i=0;
    for($x=0; $x<=$largeur; $x++){
    	for($y=0; $y<=$hauteur; $y++){
    		$value=$imgChaine[$i];
    		if($value != ""){
    			$hex = $value;
    			while(strlen($hex) < 6){
    				$hex = "0" . $hex;
    			}
    			// convert value from HEX to RGB
    			$r = hexdec(substr($hex, 0, 2));
    			$g = hexdec(substr($hex, 2, 2));
    			$b = hexdec(substr($hex, 4, 2));
    			$test = imagecolorallocate($image, $r, $g, $b);
    			imagesetpixel($image, $x, $y, $test);		
    		}
    		$i++;
    	}
    }
    header( "Content-type: image/jpeg" );
    imagejpeg($image, "", 90);
    imagedestroy($image);
    ?>
    Et le code HTML d'affichage de l'anim. C'est dans CETTE PAGE que j'aimerais affiché les iimages créees en vignette en lisant la BDD et SANS RECHARGER la page
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>appli_dessin</title>
    <script language="javascript">AC_FL_RunContent = 0;</script>
    <script src="AC_RunActiveContent.js" language="javascript"></script>
    </head>
    <body bgcolor="#cccccc">
    <!--URL utilisées dans l'animation-->
    <!--texte utilisé dans l'animation-->
    <!--
    <p align="center"></p>
    -->
    <!-- saved from url=(0013)about:internet -->
    <script language="javascript">
    	if (AC_FL_RunContent == 0) {
    		alert("Cette page nécessite le fichier AC_RunActiveContent.js.");
    	} else {
    		AC_FL_RunContent(
    			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
    			'width', '650',
    			'height', '490',
    			'src', 'appli_dessin',
    			'quality', 'high',
    			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
    			'align', 'middle',
    			'play', 'true',
    			'loop', 'true',
    			'scale', 'showall',
    			'wmode', 'window',
    			'devicefont', 'false',
    			'id', 'appli_dessin',
    			'bgcolor', '#cccccc',
    			'name', 'appli_dessin',
    			'menu', 'true',
    			'allowFullScreen', 'false',
    			'allowScriptAccess','sameDomain',
    			'movie', 'appli_dessin',
    			'salign', ''
    			); //end AC code
    	}
    </script>
    <noscript>
    	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="650" height="490" id="appli_dessin" align="middle">
    	<param name="allowScriptAccess" value="sameDomain" />
    	<param name="allowFullScreen" value="false" />
    	<param name="movie" value="appli_dessin.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#cccccc" />	<embed src="appli_dessin.swf" quality="high" bgcolor="#cccccc" width="650" height="490" name="appli_dessin" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    	</object>
    </noscript>
    </body>
    </html>

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    arff que suis je bete !
    ben oui c'est possible !

    Il suffit que j'ajoute un truc du style dans mon AS3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	ExternalInterface.call("test", "Coucou");
    J'aurais alors
    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
    function envoiphp(hauteur:Number, largeur:Number, pixels:Array):void{
    	var url:String = "http://127.0.0.1/save_jpg.php";
        var requete:URLRequest = new URLRequest(url);
                
        var variables:URLVariables = new URLVariables();
        requete.data = variables;
        variables.img_hauteur = hauteur;
    	variables.img_largeur = largeur;
    	variables.image_flash = pixels.toString();
    	requete.method = URLRequestMethod.POST;
                
        navigateToURL(requete); 
    	message_text.text="Sauvegardé !";
    	effaceEcran();
    	//nom de la fonction à appeler et le paramètre à passer
    	ExternalInterface.call("test", "Coucou");}
    bon ok

    donc
    -1- mon AS appelle le script php qui crée l'image en jpeg et crée un enreg dans la BDD
    -2- mon AS appelle un code javascript qui insere l'image en vignette

    Mais la je sais pas faire ça en JS.

    Pensez vous que la bonne solution pourrait être de mettre dans le JS de l'ajax qui appelerait un script php qui lirait la BDD, recupererait l'image créé, la tranformerait en vignette et retournerait le code html pour afficher cette vignette ?

    Par avance merci

    Pascal

  3. #3
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    Tu peux envoyer l'url de ton image à ta fonction javascript et afficher une balise img non ? Ca me parait un peu tuer-une-mouche-avec-un-missile-nucléaire ta méthode d'insérer de l'ajax pour ca

    @++

Discussions similaires

  1. appeler une fonction javascript depuis une extension firefox
    Par ____22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2011, 16h46
  2. Appeller une fonction Javascript depuis le Code VB
    Par chrislcf dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/08/2008, 12h41
  3. Réponses: 10
    Dernier message: 24/05/2007, 11h14
  4. [WebForms]Comment appeler une fonction ASP depuis une JavaScript ?
    Par flagadda dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 11/08/2006, 14h24
  5. Comment appeler une fonction JavaScript depuis Delphi ?
    Par Alfred12 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 17/06/2005, 18h15

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