Flash vers Javascript

Flash vers Javascript - Flash/ActionScript - Programmation

Marsh Posté le 14-10-2007 à 06:41:22    

Voilà un petit prog tout simple qui ne génére aucune erreur  mais qui ne fait pas ce que j'aimerai bien qu'il fasse  à savoir :
Quand on clique sur une pallette de couleur, on renvoit une popup donnant la valeur hexadécimale de la couleur séléctionée.
 
Etape 1: J'ai récupéré le code source de la palette flash qui renvoi la valeur hexa désirée mais DANS un objet flash : tSortie.text.
 
Etape 2 : Je repére tous les onRelease du code et j'insère un appel à la fonction Javascript RecupCouleur(string )qui génére la popup via la commande alert(string) :
ExternalInterface.call("RecupCouleur", tSortie.text);
 
Merci de votre aide précieuse car ça fait bien 1 sem que je gallère dessus :
 

Code :
  1. import flash.external.*;
  2. this.createEmptyMovieClip("nCouleur",6);
  3. this.createEmptyMovieClip("aCouleur",7);
  4. this.createEmptyMovieClip("degra3",2);
  5. this.Couleur = [255, 0, 0];
  6. CP_creationCarre = function () {
  7. this.createEmptyMovieClip("MASK",0);
  8. this.MASK.beginFill(0xFFFFFF);
  9. this.MASK.lineTo(100,0);
  10. this.MASK.lineTo(100,100);
  11. this.MASK.lineTo(0,100);
  12. this.MASK.lineTo(0,0);
  13. this.endFill();
  14. curseur.setMask(this.MASK);
  15. degrade.onRollOver = function() {
  16.  this.useHandCursor = false;
  17. };
  18. degrade.onPress = function() {
  19.  Mouse.hide();
  20.  curseur.startDrag(true,0,0,100,100);
  21.  duplicateMovieClip(curseur, "curseur2", 10);
  22.  curseur2._x = curseur._x;
  23.  curseur2._y = curseur._y;
  24.  curseur2._alpha /= 2;
  25.  curseur._x = _xmouse;
  26.  curseur._y = _ymouse;
  27.  curseur.onEnterFrame = function() {
  28.   var couleur1 = CP_getCouleur1(this._x);
  29.   this._parent.Couleur = CP_melange(couleur1, [128, 128, 128], this._y);
  30.   this._parent.CP_creationRectangle();
  31.  };
  32. };
  33. degrade.onRelease = degrade.onReleaseOutside=function () {
  34.  delete curseur.onEnterFrame;
  35.  Mouse.show();
  36.  curseur.stopDrag();
  37.  this._parent.aCouleur.clear();
  38.  this._parent.aCouleur.clear();
  39.  this._parent.aCouleur.moveTo(-65,30);
  40.  this._parent.aCouleur.beginFill(this._parent.couleurFinal);
  41.  this._parent.aCouleur.lineTo(-5,30);
  42.  this._parent.aCouleur.lineTo(-5,60);
  43.  this._parent.aCouleur.lineTo(-65,60);
  44.  this._parent.aCouleur.lineTo(-65,30);
  45.  this._parent.aCouleur.endFill();
  46.  removeMovieClip("curseur2" );
  47.  ExternalInterface.call("RecupCouleur", tSortie.text);
  48. };
  49. this.CP_creationRectangle();
  50. };
  51. CP_creationRectangle = function () {
  52. this.degra3.clear();
  53. var c = RGBtoHEXA(this.Couleur[0], this.Couleur[1], this.Couleur[2]);
  54. this.degra3.lineStyle(1,0x000000);
  55. this.degra3.beginGradientFill("linear",[0xFFFFFF, c, 0x000000],[100, 100, 100],[0, 0xFF/2, 0xFF],{matrixType:"box", w:15, h:100, x:0, y:0, r:Math.PI/2});
  56. this.degra3.moveTo(105,0);
  57. this.degra3.lineTo(123,0);
  58. this.degra3.lineTo(123,100);
  59. this.degra3.lineTo(105,100);
  60. this.degra3.lineTo(105,0);
  61. this.degra3.endFill();
  62. this.degra3.onRollOver = function() {
  63.  this.useHandCursor = false;
  64. };
  65. this.degra3.onPress = function() {
  66.  Mouse.hide();
  67.  Fleche.startDrag(true,125,0,125,100);
  68.  duplicateMovieClip(Fleche, "Fleche2", 10);
  69.  Fleche2._x = Fleche._x;
  70.  Fleche2._y = Fleche._y;
  71.  Fleche2._alpha /= 2;
  72.  Fleche._y = this._ymouse;
  73.  Fleche.onEnterFrame = function() {
  74.   this._parent.CP_couleurSortie();
  75.  };
  76. };
  77. this.degra3.onRelease = this.degra3.onReleaseOutside=function () {
  78.  delete Fleche.onEnterFrame;
  79.  this._parent.aCouleur.clear();
  80.  this._parent.aCouleur.clear();
  81.  this._parent.aCouleur.moveTo(-65,30);
  82.  this._parent.aCouleur.beginFill(this._parent.couleurFinal);
  83.  this._parent.aCouleur.lineTo(-5,30);
  84.  this._parent.aCouleur.lineTo(-5,60);
  85.  this._parent.aCouleur.lineTo(-65,60);
  86.  this._parent.aCouleur.lineTo(-65,30);
  87.  this._parent.aCouleur.endFill();
  88.  removeMovieClip("Fleche2" );
  89.  Mouse.show();
  90.  Fleche.stopDrag();
  91.  ExternalInterface.call("RecupCouleur", tSortie.text);
  92. };
  93. this.CP_couleurSortie();
  94. };
  95. CP_couleurSortie = function () {
  96. if (Fleche._y>50) {
  97.  var blackAndWhite = [0, 0, 0];
  98. } else {
  99.  var blackAndWhite = [255, 255, 255];
  100. }
  101. this.cF1 = CP_melange(this.Couleur, blackAndWhite, Math.abs((Fleche._y-50)*2));
  102. this.couleurFinal = RGBtoHEXA(cF1[0], cF1[1], cF1[2]);
  103. this.nCouleur.clear();
  104. this.nCouleur.moveTo(-65,0);
  105. this.nCouleur.beginFill(this.couleurFinal);
  106. this.nCouleur.lineTo(-5,0);
  107. this.nCouleur.lineTo(-5,30);
  108. this.nCouleur.lineTo(-65,30);
  109. this.nCouleur.lineTo(-65,0);
  110. this.nCouleur.endFill();
  111. tSortie.text = "#"+this.getHEXA();
  112. };
  113. function CP_melange(f, d, p) {// f pour FOND
  114. // d pour DESSUS
  115. // p pour POSITION ou POURCENTAGE
  116. var eR = d[0]-f[0];
  117. var eG = d[1]-f[1];
  118. var eB = d[2]-f[2];
  119. var R = eR*p/100+f[0];
  120. var G = eG*p/100+f[1];
  121. var B = eB*p/100+f[2];
  122. R = Math.round(R);
  123. G = Math.round(G);
  124. B = Math.round(B);
  125. return [R, G, B];
  126. }
  127. function CP_getCouleur1(x) {
  128. var a = 255;// x est donné entre 0 et 100. Il nous le faut entre 0 et 1530
  129. x *= 1530/100;// D'abord on traite le ROUGE
  130. if (x<a || x>=5*a) {
  131.  var R = 255;
  132. } else if (x>=a && x<2*a) {
  133.  var R = 2*a-x;
  134. } else if (x>=2*a && x<4*a) {
  135.  var R = 0;
  136. } else if (x>=4*a && x<5*a) {
  137.  var R = x-4*a;
  138. }
  139. // Puis le VERT  
  140. if (x<a) {
  141.  var G = x;
  142. } else if (x>=a && x<3*a) {
  143.  var G = 255;
  144. } else if (x>=3*a && x<4*a) {
  145.  var G = 4*a-x;
  146. } else if (x>=4*a) {
  147.  var G = 0;
  148. }
  149. // Et enfin le BLEU  
  150. if (x<2*a) {
  151.  var B = 0;
  152. } else if (x>=2*a && x<3*a) {
  153.  var B = x-2*a;
  154. } else if (x>=3*a && x<5*a) {
  155.  var B = 255;
  156. } else if (x>=5*a) {
  157.  var B = 6*a-x;
  158. }
  159. // On arrondit tout ça, valeure ENTIERE uniquement pour le RGB  
  160. R = Math.round(R);
  161. G = Math.round(G);
  162. B = Math.round(B);// On retourne la valeure Hexa (sans le 0x ou le # devant)
  163. return [R, G, B];
  164. }
  165. function HEXAtoRGB(HEXA) {
  166. var caractere = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
  167. HEXA = HEXA.split("" );
  168. for (var i = 0; i<HEXA.length; i++) {
  169.  for (var j = 0; j<caractere.length; j++) {
  170.   if (HEXA[i] == caractere[j]) {
  171.    HEXA[i] = j;// En gros, si on a F, tu mets 15 à la place, et ainsi de suite...
  172.    break;// Stop la seconde boucle "for" !
  173.   }
  174.  }
  175. }
  176. var R = HEXA[0]*16+HEXA[1];
  177. var G = HEXA[2]*16+HEXA[3];
  178. var B = HEXA[4]*16+HEXA[5];
  179. return {R:R, G:G, B:B};
  180. }
  181. function RGBtoHEXA(R, G, B) {
  182. return (R*Math.pow(16, 4)+G*Math.pow(16, 2)+B);
  183. }
  184. getHEXA = function () {
  185. var caractere = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
  186. var R1 = caractere[Math.floor(cF1[0]/16)];
  187. var R2 = caractere[cF1[0]%16];
  188. var G1 = caractere[Math.floor(cF1[1]/16)];
  189. var G2 = caractere[cF1[1]%16];
  190. var B1 = caractere[Math.floor(cF1[2]/16)];
  191. var B2 = caractere[cF1[2]%16];
  192. return (R1+R2+G1+G2+B1+B2);
  193. };
  194. this.CP_creationCarre();


 
Voici le code de la page HTML qui essaye de faire un alert en donnant la valeur hexa de la couleur cliquée ...
 

Code :
  1. <script language="javascript">
  2. function RecupCouleur(couleur) {alert(couleur);}
  3. </script>
  4. <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','195','height','106','src','COLORPICKER/ColorpickerMX','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','COLORPICKER/ColorpickerMX' ); //end AC code
  9. </script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="195" height="106">
  10.   <param name="movie" value="COLORPICKER/ColorpickerMX.swf" />
  11.   <param name="quality" value="high" />
  12.   <embed src="COLORPICKER/ColorpickerMX.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="195" height="106"></embed>
  13. </object></noscript>
  14. </body>
  15. </html>

Reply

Marsh Posté le 14-10-2007 à 06:41:22   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed