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
et voci mon code PHP qui crée l'image JPEG (et qui l'affiche mais qui enregistrera l'image)Code:
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 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 pageCode:
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); ?>
Code:
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>