home *** CD-ROM | disk | FTP | other *** search
/ Mobiclic 174 / MOBICLIC174.ISO / mac / DATA / HOTE / libs / xlib1 / InitMC.as.bak next >
Text File  |  2015-04-27  |  33KB  |  1,023 lines

  1. /**
  2. * file: InitMC.as
  3.  * Sont r├⌐unies ici au fur et ├á mesure les fonctions utilis├⌐es lors des diff├⌐rents d├⌐veloppements, et pouvant ├¬tre utiles pour d'autres modules.
  4.  * xb
  5.  */
  6.  
  7.  /**
  8.  * Initialise un clip.
  9.  * >
  10.  * _parametres:_
  11.  * - soit le clip directement. la fonction InitMC_standart sera appel├⌐e.
  12.  * - soit un objet p :
  13.  * - - p.mc : clip ├á initialiser
  14.  * - - p.fonction : postfix de la fonction ├á  appeler : "dragdrop" appelle InitMC_dragdrop()
  15.  * On peut crer dans ce fichier autant de fonctions de configuration que l'on veut. chaque nom de fonction doit commencer par "InitMC".
  16.  * >
  17.  * _ Exemple: _
  18.  * > InitMC({mc:monClip, fonction:"dragdrop"});
  19.  * >
  20.  * Pour surcharger les comportement pr├⌐d├⌐finis, on cre├⌐ les fonctions OnPress, OnRollOver,... (/!\ majuscule en 1er).
  21.  * >
  22.  * _Exemple :_
  23.  * (code)
  24.  * InitMC(monClip);
  25.  * monClip.OnPress=function(){
  26.  *     ('je suis '+this._name);
  27.  * }
  28.  * (end)
  29.  */
  30.  
  31.  
  32. import flash.geom.Point;
  33. import mx.utils.Delegate;
  34.  
  35. /**
  36. * yo.
  37. */
  38. function InitMC(p){
  39.     trace ('InitMCo() '+ p.mc);
  40.     var mc =(typeof (p) == "movieclip") ?p : p.mc;
  41.     // si p.level existe on change le niveau proprement (sans probleme de  conflit avec mc existant dans le fla)
  42.     if (p.level != undefined){
  43.         var ceMC_name_old = mc._name+"_old";
  44.         var ceMC_name = mc._name;
  45.         mc._name = ceMC_name_old;
  46.         mc.duplicateMovieClip(ceMC_name,p.level);
  47.         mc._visible = false;
  48.         mc = this[ceMC_name];
  49.     }
  50.     
  51.     // Si premiere initialisation, on m├⌐morise l'├⌐tat du clip(telle que dans le fla).
  52.     if (mc.OriginalMC == undefined)
  53.     {
  54.         mc.OriginalMC = { };
  55.         mc.OriginalMC._x = mc._x;
  56.         mc.OriginalMC._y = mc._y;
  57.         mc.OriginalMC._xscale = mc._xscale;
  58.         mc.OriginalMC._yscale = mc._yscale;
  59.         mc.OriginalMC._width = mc._width;
  60.     }
  61.     
  62.     var fonction=(p.fonction==undefined)?InitMC_standart:eval("InitMC_"+p.fonction);
  63.     mc.InitMC = fonction;
  64.     
  65.     InitMC_reccurent(mc);
  66.     mc.InitMC(p);
  67. }
  68. _global.InitMC = InitMC;
  69.  
  70. function InitMC_reccurent(mc)
  71. {
  72.     mc.oriX = mc._x;
  73.     mc.oriY = mc._y;
  74.     mc.oriW = mc._width;
  75.     mc.oriH = mc._height;
  76.     
  77.     mc.BackToInitialPos = function()
  78.     {
  79.         this._x = this.oriX;
  80.         this._y = this.oriY;
  81.     }
  82.     
  83.     mc.BackToInitialSize = function()
  84.     {
  85.         this._width = this.oriW;
  86.         this._height = this.oriH;
  87.     }
  88. }
  89. _global.InitMC_reccurent = InitMC_reccurent;
  90.  
  91. function ResetMC(p):Void 
  92. {
  93.     var mc:MovieClip = p.mc;
  94.     
  95.     delete mc.onPress;
  96.     delete mc.onRollOver;
  97.     delete mc.onRollOut;
  98.     delete mc.onRelease;
  99.     delete mc.onReleaseOutside;
  100.     
  101.     delete mc.BTN.onPress;
  102.     delete mc.BTN.onRollOver;
  103.     delete mc.BTN.onRollOut;
  104.     delete mc.BTN.onRelease;
  105.     delete mc.BTN.onReleaseOutside;
  106.  
  107. }
  108. _global.ResetMC = ResetMC;
  109.  
  110. /**
  111.  *  Comportement "standart".
  112.  * >
  113.  * - au roll : curseur doigt + frame 'E2'. Retour ├á la fleche et ├á E1 pour les autres.
  114.  * - au press: frame E3
  115.  *
  116.  * _parametres  (* facultatifs) ::_
  117.  * - p.son*     = nom du bruitage ├á jouer (defaut : aucun)
  118.  * - p.goto*    = nom de la frame ├á aller lors du clic
  119.  * - p.reposFrame* = Frame de repos appel├⌐e directement ├á l'initialisation. /!\ si absent le clip est laiss├⌐ sur sa frame en cours
  120.  * - p.blockOnPress* = Laisse le clip bloqu├⌐ sur la position E3 apr├¿s clic (enabled mis sur false, reactivable par enabled=true)
  121.  * - p.BTN* = true|false : utilise le sous-clip 'BTN' du clip comme bouton au lieu du clip lui-m├¬me. (d├⌐faut = false);
  122.  * - p.UseLabels* = true|false : active les allers auto vers les lables lors des actions. si false : d├⌐sactive cela.
  123.  * - p.useHandCursor* = true|false : applique useHandCursor sur le mc ou BTN.
  124.  * Si p.goto est defini, le curseur apres le press, devient une fleche au lieu d'un doigt (cas courant d'un renvoi vers une frame n├⌐cessitant de cacher le doigt).
  125.  */
  126. function InitMC_standart(p) {
  127. trace("InitMC_standart : " + InitMC_standart);    
  128.  
  129.     if (p.IB!=undefined){
  130.         if (typeof (p.IBrep) =="movieclip"){
  131.             var IBrepere = p.IBrep;
  132.         }
  133.         else if (typeof (_MOD_['IBrep_'+p.IB]) =="movieclip" && p.IBrep!=false){
  134.             var IBrepere=_MOD_['IBrep_'+p.IB];
  135.         }
  136.         else{
  137.             var IBrepere=p.mc;
  138.         }
  139.         ////trace('IBREPERE '+IBrepere._x);
  140.         //trace ("GERE "+gereTextes+" "+_MOD_.gereTextes+" ");
  141.         this.afficheIB=    function(){_root.gereTextes.afficheIB({codeIB:p.IB,mc:IBrepere});};
  142.         this.masqueIB=function(){_root.gereTextes.masqueIB();}
  143.  
  144.     }
  145.  
  146.     if (p.UseLabels != false){
  147.         this.reposFrame = (p.reposFrame == undefined) ? "E1" : p.reposFrame;
  148.         this.pressFrame = (p.pressFrame == undefined) ? "E2" : p.pressFrame;
  149.         this.overFrame = (p.overFrame == undefined) ? "E2" : p.overFrame;
  150.         this.outFrame = (p.outFrame == undefined) ? "E1" : p.outFrame;
  151.         this.releaseFrame = (p.releaseFrame == undefined) ? "E1" : p.releaseFrame;
  152.         this.releaseOutFrame = (p.releaseOutFrame == undefined) ? "E1" : p.releaseOutFrame;
  153.         this.activeFrame = (p.activeFrame == undefined) ? undefined : p.activeFrame;
  154.         this.desactiveFrame = (p.desactiveFrame == undefined) ? undefined : p.desactiveFrame;
  155.     }
  156.  
  157.     if(p.reposFrame != undefined){this.gotoAndStop(p.reposFrame);}
  158.  
  159.     this.p = p;
  160.     this.joueson=(p.son!=undefined)?function(){ joueBruitage({nomSon:p.son, loopSon:p.loopSon,offset:p.son_offset,actionFin:p.actionFin,MC:this});}:undefined;
  161.     this.stopson=(p.nostop==undefined)?function(){    stopBruitage({nomSon:p.son});}:undefined;
  162.  
  163.     if (p.sonOnPress != undefined){
  164.         this.sonOnPress = p.sonOnPress;
  165.         this.sonOnPress_offset = (p.sonOnPress_offset == undefined) ? 0 :  Number(p.sonOnPress_offset);
  166.         this.sonOnPress_loopSon = (p.sonOnPress_loopSon == undefined) ? 0 :  Number(p.sonOnPress_loopSon);
  167.         this.jouesonOnPress = function() { joueBruitage( { nomSon:this.sonOnPress, offset:this.sonOnPress_offset, loopSon: this.sonOnPress_loopSon } ); }
  168.         this.stopsonOnPress=function(){stopBruitage({nomSon:this.sonOnPress});}
  169.     }
  170.     else{
  171.         this.jouesonOnMove=undefined;
  172.         this.stopsonOnMove=undefined;
  173.     }
  174.  
  175.     this.UseHandCursor = (p.useHandCursor == undefined) ? true : p.useHandCursor;
  176.     
  177.     if (p.UseCurseur != false)
  178.     {
  179.         this.curseur_after_press=(p.goto==undefined)?"doigt":"fleche";
  180.         this.curseur_on_roll=(p.curseurOnRoll==undefined)?"doigt":p.curseurOnRoll;
  181.         this.curseur_onRollOut=(p.curseur_onRollOut==undefined)?"fleche":p.curseur_onRollOut;
  182.         this.curseur_after_press = (p.curseurAfterPress == undefined)?"doigt":p.curseurAfterPress;
  183.         this.curseur_onRelease = (p.curseur_onRelease == undefined)?"doigt":p.curseur_onRelease;
  184.         this.curseur_onReleaseOutside = (p.curseur_onReleaseOutside == undefined)?"fleche":p.curseur_onReleaseOutside;
  185.     }
  186.     
  187.     this.goto=p.goto;
  188.  
  189.     this.Activer = function (){
  190.         if (this.Actif==true){return;}
  191.         this.enabled = true ;
  192.         this.BTN.enabled= true;
  193.         this.Actif = true;
  194.         this.gotoAndStop(this.activeFrame);
  195.     }
  196.     this.Desactiver = function (){
  197.         if (this.Actif==false){return;}
  198.         this.enabled = false ;
  199.         this.BTN.enabled= false;
  200.         this.Actif = false;
  201.         this.stopsonOnPress();
  202.         this.masqueIB();
  203.         this.gotoAndStop(this.desactiveFrame);
  204.     }
  205.  
  206.     this.SetUseHandCursor = function(flag:Boolean): Void
  207.     {
  208.         this.UseHandCursor = flag;
  209.         this.useHandCursor = this.UseHandCursor;
  210.         this.BTN.useHandCursor = this.UseHandCursor;
  211.  
  212.     }
  213.  
  214.     this.Activer();
  215.  
  216.     this.GS = this.gotoAndStop;
  217.  
  218.     this.MConPress = function() {
  219.         if (this.p.blockOnPress==true){
  220.             this.enabled = false;
  221.             this.BTN.enabled = false;
  222.         }
  223.         this.stopson();
  224.         this.jouesonOnPress();
  225.         this.masqueIB();
  226.         this.gotoAndStop(this.pressFrame);
  227.         gereCursor(this.curseur_after_press);
  228.         //trace (this.goto+' goto');
  229.         _root.gotoAndStop(this.goto);
  230.         var p = this.OnPress();
  231.     };
  232.     this.MConRollOver = function() {
  233.         this.joueson();
  234.         ////trace ("XXXXXX "+IBrepere._x+" "+IBrepere._y);
  235.         this.afficheIB();
  236.         this.gotoAndStop(this.overFrame);
  237.         gereCursor(this.curseur_on_roll);
  238.         var p = this.OnRollOver();
  239.     }
  240.     this.MConRollOut = function() {
  241.         this.stopson();
  242.         this.masqueIB();
  243.         this.gotoAndStop(this.outFrame);
  244.         gereCursor(this.curseur_onRollOut);
  245.         var p = this.OnRollOut();
  246.     };
  247.     this.MConRelease = function() {
  248.         this.gotoAndStop(this.releaseFrame);
  249.         gereCursor(this.curseur_onRelease);
  250.         var p = this.OnRelease();
  251.  
  252.     };
  253.     this.MConReleaseOutside = function() {
  254.         this.gotoAndStop(this.releaseOutFrame);
  255.         gereCursor(this.curseur_onReleaseOutside);
  256.         var p=this.OnReleaseOutside();
  257.     };
  258.  
  259.     if (this.BTN == undefined || p.BTN == false) { // Le clip lui-m├¬me est utilis├⌐ comme bouton
  260.         this.useHandCursor = this.UseHandCursor;
  261.         this.onPress = this.MConPress;
  262.         this.onRollOver = this.MConRollOver;
  263.         this.onRollOut = this.MConRollOut;
  264.         this.onRelease = this.MConRelease;
  265.         this.onReleaseOutside = this.MConReleaseOutside;
  266.     }
  267.     else{ // le clip BTN du clip est utilis├⌐ comme bouton
  268.         this.BTN.useHandCursor = this.UseHandCursor;
  269.         this.BTN.onPress = function(){this._parent.MConPress();};
  270.         this.BTN.onRollOver = function(){this._parent.MConRollOver();};
  271.         this.BTN.onRollOut = function(){this._parent.MConRollOut();};
  272.         this.BTN.onRelease = function(){this._parent.MConRelease();};
  273.         this.BTN.onReleaseOutside = function(){this._parent.MConReleaseOutside();};
  274.     }
  275.  
  276.     this.Refresh();
  277. }
  278. _global.InitMC_standart=InitMC_standart;
  279.  
  280. /**
  281.  *  idem "standart" mais avec un bouton nomm├⌐ BTN int├⌐gr├⌐ au clip
  282.  * >
  283.  * - au roll : curseur doigt + frame 'E2'. Retour ├á la fleche et ├á E1 pour les autres.
  284.  * - au press: frame E3
  285.  *
  286.  * _parametres  (* facultatifs) ::_
  287.  * - p.son*     = nom du bruitage ├á jouer (defaut : aucun)
  288.  * - p.goto*    = nom de la frame ├á aller lors du clic
  289.  *
  290.  * Si p.goto est defini, le curseur apres le press, devient une fleche au lieu d'un doigt (cas courant d'un renvoi vers une frame n├⌐cessitant de cacher le doigt).
  291.  */
  292. function InitMC_BTN(p){
  293.     //trace("BTN FUNC");
  294.     if (p.IB!=undefined){
  295.         if (p.IBrep==true){
  296.             var IBrepere=_MOD_['IBrep_'+p.IB];
  297.         }
  298.         else{
  299.             var IBrepere=p.mc;
  300.         }
  301.         ////trace('IBREPERE '+IBrepere._x);
  302.         this.afficheIB=    function(){gereTextes.afficheIB({codeIB:p.IB,mc:IBrepere});};
  303.         this.masqueIB=function(){gereTextes.masqueIB();}
  304.  
  305.     }
  306.     this.enabled=true;
  307.     this.joueson=(p.son!=undefined)?function(){_root.joueBruitage({nomSon:p.son, loopSon:p.loopSon,offset:p.son_offset,actionFin:p.actionFin,MC:this});}:undefined;
  308.     this.stopson=(p.nostop==undefined)?function(){    _root.stopBruitage({nomSon:p.son});}:undefined;
  309.     var curseur_after_press=(p.goto==undefined)?"doigt":"fleche";
  310.     this.goto=p.goto;
  311.     this.BTN.onPress = function() {
  312.         this._parent.stopson();
  313.         this._parent.masqueIB();
  314.         this._parent.gotoAndStop("E3");
  315.         gereCursor(curseur_after_press);
  316.         //trace (this.goto+' goto');
  317.         _root.gotoAndStop(this.goto);
  318.         var p = this._parent.OnPress();
  319.     };
  320.     this.BTN.onRollOver = function() {
  321.         //trace ("PARENT "+this._parent);
  322.         this._parent.joueson();
  323.         ////trace ("XXXXXX "+IBrepere._x+" "+IBrepere._y);
  324.         this._parent.afficheIB();
  325.         this._parent.gotoAndStop("E2");
  326.         gereCursor("doigt");
  327.         var p = this._parent.OnRollOver();
  328.     }
  329.     this.BTN.onRollOut = function() {
  330.         this._parent.stopson();
  331.         this._parent.masqueIB();
  332.         this._parent.gotoAndStop("E1");
  333.         gereCursor("fleche");
  334.         var p = this._parent.OnRollOut();
  335.     };
  336.     this.BTN.onRelease = function() {
  337.         this._parent.gotoAndStop("E2");
  338.         gereCursor("doigt");
  339.         var p = this._parent.OnRelease();
  340.  
  341.     };
  342.     this.BTN.onReleaseOutside = function() {
  343.         this._parent.gotoAndStop("E1");
  344.         gereCursor("fleche");
  345.         var p=this._parent.OnReleaseOutside();
  346.     };
  347. }
  348. _global.InitMC_BTN=InitMC_BTN;
  349.  
  350. /**
  351.  *  Comportement "dragdrop", gere le drag&drop
  352.  * >
  353.  * - au Roll : curseur mainO + frame 'E2'. Retour  ├á E1 pour les autres.
  354.  * - au Press: curseur mainF + frame E3 + debut drag
  355.  * - en cr├⌐ant une liste  nomm├⌐e CiblesDrag des clips ├á surveiller (ex: mc.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop);), on peut connaitre le clip actuellement survol├⌐ et celui sur lequel on drop.
  356.  * - - au Release: curseur mainO+frame 'E2'+ plus appel fonction mc.ApresDrag() si relach├⌐ sur un clip de la liste CiblesDrag.
  357.  * - - pendant le drag, appelle la fonction mc.PendantDrag() si passe sur un clip de la liste CiblesDrag.
  358.  * - - lorsque l'on survole avec le drag un clip surveill├⌐, il va automatiquement sur ├á sa frame 'E2' pour simuler le survol.
  359.  *  >
  360.  * *L'utilisation type de la fonction StartDrag est celle-ci :*
  361.  *
  362.  *     (code)
  363.  *
  364.  *    InitMC({mc:monClipDrag, fonction:"dragddrop"});
  365.  *
  366.  *     monClipDrag.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop); // clips devant surveiller les drag & drop
  367.  *
  368.  *     monClipDrag.PendantDrag=function(){
  369.  *         // ...
  370.  *     }
  371.  *
  372.  *     monClipDrag.ApresDrag=function(){
  373.  *        // ...
  374.  *     }
  375.  *     (end)
  376.  * >
  377.  * - PressLevel:Number = niveau du clip lors du press (debut drag). defaut = 15832.
  378.  */
  379. function InitMC_dragdrop(p){
  380.     trace ("InitMC_dragdrop_b");
  381.     if (p.IB!=undefined){
  382.         if (p.IBrep==true){
  383.             var IBrepere=_MOD_['IBrep_'+p.IB];
  384.         }
  385.         else{
  386.             var IBrepere=p.mc;
  387.         }
  388.         this.afficheIB=    function(){_root.gereTextes.afficheIB({codeIB:p.IB,mc:IBrepere});};
  389.         this.masqueIB=function(){_root.gereTextes.masqueIB();}
  390.  
  391.     }
  392.     this.pDepth = this.getDepth()
  393.     this.PressLevel = (p.PressLevel == undefined) ? 15832 : p.PressLevel;
  394.     //this.reposFrame = (p.reposFrame == undefined) ? "E1" : p.reposFrame;
  395.     this.pressFrame = (p.pressFrame == undefined) ? "E3" : p.pressFrame;
  396.     this.overFrame = (p.overFrame == undefined) ? "E2" : p.overFrame;
  397.  
  398.     this.CibleOverFrame = (p.CibleOverFrame == undefined) ? "E3" : p.CibleOverFrame;
  399.     this.CibleOutFrame = (p.CibleOutFrame == undefined) ? "E1" : p.CibleOutFrame;
  400.     // this.outFrame = (p.outFrame == undefined) ? "E1" : p.outFrame;
  401.     // this.releaseFrame = (p.releaseFrame == undefined) ? "E1" : p.releaseFrame;
  402.     // this.releaseOutFrame = (p.releaseOutFrame == undefined) ? "E1" : p.releaseOutFrame;
  403.     // this.activeFrame = (p.activeFrame == undefined) ? undefined : p.activeFrame;
  404.     // this.desactiveFrame = (p.desactiveFrame == undefined) ? undefined : p.desactiveFrame;
  405.  
  406.     this.joueson=(p.son!=undefined)?function(){_root.joueBruitage({nomSon:p.son, offset:p.son_offset});}:undefined;
  407.     this.stopson=(p.son!=undefined)?function(){    _root.stopBruitage({nomSon: p.son});}:undefined;
  408.     this.jouesonOnPress=(p.sonOnPress!=undefined)?function(){_root.joueBruitage({nomSon:p.sonOnPress, offset:p.son_offset});}:undefined;
  409.     this.stopsonOnPress=(p.sonOnPress!=undefined)?function(){    _root.stopBruitage({nomSon: p.sonOnPress});}:undefined;
  410.     this.jouesonOnOverCible=(p.sonOnOverCible!=undefined)?function(){_root.joueBruitage({nomSon:p.sonOnOverCible, offset:p.son_offset});}:undefined;
  411.     this.stopsonOnOverCible=(p.sonOnOverCible!=undefined)?function(){_root.stopBruitage({nomSon: p.sonOnPress});}:undefined;
  412.     var curseur_after_press=(p.goto==undefined)?"doigt":"fleche";
  413.     this.goto = p.goto;
  414.     this.ModeDrag = (p.ModeDrag == undefined) ? "lache_au_rollout" : p.ModeDrag;
  415.     this.CentrerOnStartDrag = (p.CentrerOnStartDrag == undefined) ? false : p.CentrerOnStartDrag;
  416.     this.ModeHitTest = (p.ModeHitTest == undefined) ? "bounds" : p.ModeHitTest;
  417.     
  418.     
  419.     this.MethodeDetecteDrag = (this.ModeHitTest == "mouse") ? "DetectDrag2" : "DetectDrag";
  420.     this.DragEnCours = false;
  421.  
  422.     this.DetectDrag = function() {
  423.  
  424.         this._x = _xmouse-this.ecart_mousex;
  425.         this._y = _ymouse-this.ecart_mousey;
  426.  
  427.         this.CiblesTouchees = [];
  428.         
  429.         for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  430.             if (this.hitTest(this.CiblesDrag[lp])) {
  431.                 this.CiblesDrag[lp].gotoAndStop(this.CibleOverFrame);
  432.                 this.CiblesTouchees.push(this.CiblesDrag[lp]);
  433.                 this.touche ++;
  434.             } else {
  435.                 this.CiblesDrag[lp].gotoAndStop(this.CibleOutFrame);
  436.             }
  437.         }
  438.         if (this.touche == 1){
  439.             this.jouesonOnOverCible();
  440.         }
  441.         if(this.CiblesTouchees.length<=0){
  442.             this.touche=0;
  443.             this.stopsonOnOverCible();
  444.         }
  445.         this.PendantDrag();
  446.         updateAfterEvent();
  447.  
  448.     };
  449.  
  450.     this.DetectDrag2 = function() {
  451.  
  452.         this._x = _xmouse-this.ecart_mousex;
  453.         this._y = _ymouse-this.ecart_mousey;
  454.  
  455.         this.CiblesTouchees = [];
  456.         for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  457.             if (this.CiblesDrag[lp].hitTest(_xmouse, _ymouse, true)) {
  458.                 this.CiblesDrag[lp].gotoAndStop(this.CibleOverFrame);
  459.                 this.CiblesTouchees.push(this.CiblesDrag[lp]);
  460.                 this.touche ++;
  461.             } else {
  462.                 this.CiblesDrag[lp].gotoAndStop(this.CibleOutFrame);
  463.             }
  464.         }
  465.         if (this.touche == 1){
  466.             this.jouesonOnOverCible();
  467.         }
  468.         if(this.CiblesTouchees.length<=0){
  469.             this.touche=0;
  470.             this.stopsonOnOverCible();
  471.         }
  472.         this.PendantDrag();
  473.         updateAfterEvent();
  474.  
  475.     };
  476.  
  477.     this.StartDrag = function() {
  478.         if (this.CentrerOnStartDrag!=true)
  479.         {
  480.             this.ecart_mousex = _xmouse - this._x;
  481.             this.ecart_mousey = _ymouse - this._y;
  482.         }
  483.         else
  484.         {
  485.             this._x = _xmouse;// - this._width/2;
  486.             this._y = _ymouse;// - this._height/2;
  487.             this.ecart_mousex = _xmouse - this._x;
  488.             this.ecart_mousey = _ymouse - this._y;
  489.         }
  490.     
  491.         
  492.         this.IntervalId = _global.SetInterval( { mcRef: this, methode:this.MethodeDetecteDrag,    interval:10 } );
  493.         //this.IntervalId = setInterval(Delegate.create(this, this.DetectDrag), 10);
  494.         this.swapDepths(this.PressLevel);
  495.         this.DragEnCours = true;
  496.     };
  497.  
  498.     this.ContinueDrag = function() {
  499.         this.gotoAndStop(this.pressFrame);
  500.         gereCursor("mainF");
  501.         this.ecart_mousex = _xmouse - this._x;
  502.         this.ecart_mousey = _ymouse - this._y;
  503.         this.IntervalId = _global.SetInterval( { mcRef: this, methode:this.MethodeDetecteDrag,    interval:10 } );
  504.         this.swapDepths(this.PressLevel);
  505.         this.DragEnCours = true;
  506.     };
  507.  
  508.     this.StopDrag = function() {
  509.         _global.ClearInterval(this.IntervalId);
  510.         this.swapDepths(this.pDepth);
  511.         this.DragEnCours = false;
  512.     };
  513.  
  514.     this.ComeBack = function(){
  515.         this._x = this.xOri;
  516.         this._y = this.yOri;
  517.         this.gotoAndStop("E1");
  518.         this.DragEnCours = false;    
  519.  
  520.     }
  521.     
  522.     this.Activer = function()
  523.     {
  524.         this.enabled = true;
  525.         this.BTN.enabled = true;
  526.     }
  527.     this.Desactiver = function()
  528.     {
  529.         this.enabled = false;
  530.         this.BTN.enabled = false;
  531.     }
  532.     this.CibleLaPlusProche = function(p)
  533.     {
  534.         if (this.CiblesTouchees.length == 0) { return null; }
  535.  
  536.         var distance:Number;
  537.         var primo = this.CiblesTouchees[0];
  538.         var x1:Number;
  539.         var y1:Number;
  540.         if (p.mcRef == undefined)
  541.         {
  542.             x1 = _xmouse;
  543.             y1 = _ymouse;
  544.         }
  545.         else if (p.mcRef == "center")
  546.         {
  547.             x1 = this._x + this._width / 2;
  548.             y1 = this._y + this._height / 2;
  549.         }
  550.         else
  551.         {
  552.             var pt:Point = new Point(p.mcRef._x, p.mcRef._y);
  553.             mcRef.localToGlobal(pt);
  554.             x1 = pt.x;
  555.             y1 = pt.y;
  556.         }
  557.         var last:Number = DistancePoints( { x1: x1, y1:y1, x2: this.CiblesTouchees[0]._x, y2: this.CiblesTouchees[0]._y } );
  558.  
  559.         for (var i:Number = 1; i < this.CiblesTouchees.length; i++)
  560.         {
  561.             distance = DistancePoints( { x1: x1, y1:y1, x2: this.CiblesTouchees[i]._x, y2: this.CiblesTouchees[i]._y } );
  562.             trace (this.CiblesTouchees[i] + " - " + distance);
  563.             if (distance < last)
  564.             {
  565.                 last = distance;
  566.                 primo = this.CiblesTouchees[i];
  567.             }
  568.         }
  569.  
  570.         trace("primo : " + primo);
  571.         return primo;
  572.     }
  573.  
  574.     this.MConPress = function() {
  575.         if (this.ModeDrag  == "lache_au_clic" && this.DragEnCours == true )
  576.         {
  577.             this.FirstPress = false;
  578.             this.DragEnCours = false;
  579.             gereCursor("mainO");
  580.             this.stopsonOnPress();
  581.             this.gotoAndStop("E2");
  582.             _global.ClearInterval(this.IntervalId);
  583.             this.CiblesTouchees=[];
  584.             if (this.ModeHitTest == "mouse")
  585.             {
  586.                 for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  587.                     if (this.CiblesDrag[lp].hitTest(_xmouse, _ymouse, true)) {
  588.                         this.CiblesTouchees.push(this.CiblesDrag[lp]);
  589.                     }
  590.                 }
  591.             }
  592.             else
  593.             {
  594.                 for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  595.                     if (this.hitTest(this.CiblesDrag[lp])) {
  596.                         this.CiblesTouchees.push(this.CiblesDrag[lp]);
  597.                     }
  598.                 }
  599.             }
  600.             this.swapDepths(this.pDepth);
  601.             this.ApresDrag();
  602.         }
  603.         else
  604.         {
  605.             this.FirstPress = true;
  606.             this.jouesonOnPress();
  607.             this.xOri = this._x;
  608.             this.yOri = this._y;
  609.             this.masqueIB();
  610.             this.gotoAndStop(this.pressFrame);
  611.             gereCursor("mainF");
  612.             this.StartDrag();
  613.             var p = this.OnPress();
  614.         }
  615.     };
  616.     this.MConRollOver = function() {
  617.         if (this.DragEnCours == true ) { return;}
  618.         this.joueson();
  619.         this.afficheIB();
  620.         this.gotoAndStop(this.overFrame);
  621.         gereCursor("mainO");
  622.         var p = this.OnRollOver();
  623.     }
  624.     this.MConRollOut = function() {
  625.         if (this.DragEnCours == true ) { return;}
  626.         this.stopson();
  627.         this.gotoAndStop("E1");
  628.         this.masqueIB();
  629.         gereCursor("fleche");
  630.         var p = this.OnRollOut();
  631.     };
  632.     this.MConRelease = function() {
  633.         if (this.ModeDrag != "lache_au_rollout") { return; }
  634.         this.DragEnCours = false;    
  635.         gereCursor("mainO");
  636.         this.stopsonOnPress();
  637.         this.gotoAndStop("E2");
  638.         _global.ClearInterval(this.IntervalId);
  639.         this.CiblesTouchees=[];
  640.         if (this.ModeHitTest == "mouse")
  641.         {
  642.             for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  643.                 if (this.CiblesDrag[lp].hitTest(_xmouse, _ymouse, true)) {
  644.                     this.CiblesTouchees.push(this.CiblesDrag[lp]);
  645.                 }
  646.             }
  647.         }
  648.         else
  649.         {
  650.             for (var lp = 0; lp<this.CiblesDrag.length; lp++) {
  651.                 if (this.hitTest(this.CiblesDrag[lp])) {
  652.                     this.CiblesTouchees.push(this.CiblesDrag[lp]);
  653.                 }
  654.             }
  655.         }
  656.         this.swapDepths(this.pDepth);
  657.         this.ApresDrag();
  658.  
  659.         var p = this.OnRelease();
  660.  
  661.     };
  662.     this.MConReleaseOutside = this.MConRelease;
  663.  
  664.     if (this.BTN == undefined || p.BTN == false){ // Le clip lui-m├¬me est utilis├⌐ comme bouton
  665.         this.onPress = this.MConPress;
  666.         this.onRollOver = this.MConRollOver;
  667.         this.onRollOut = this.MConRollOut;
  668.         this.onRelease = this.MConRelease;
  669.         this.onReleaseOutside = this.MConReleaseOutside;
  670.     }
  671.     else{ // le clip BTN du clip est utilis├⌐ comme bouton
  672.         this.BTN.onPress = function(){this._parent.MConPress();};
  673.         this.BTN.onRollOver = function(){this._parent.MConRollOver();};
  674.         this.BTN.onRollOut = function(){this._parent.MConRollOut();};
  675.         this.BTN.onRelease = function(){this._parent.MConRelease();};
  676.         this.BTN.onReleaseOutside = function(){this._parent.MConReleaseOutside();};
  677.     }
  678.  
  679. }
  680. _global.InitMC_dragdrop=InitMC_dragdrop;
  681.  
  682. /**
  683.  *  Comportement "dragdrop", gere le drag&drop
  684.  * >
  685.  * - au Roll : curseur mainO + frame 'E2'. Retour ├á la fleche et ├á E1 pour les autres.
  686.  * - au Press: curseur mainF + frame E3 + debut drag
  687.  * - en cr├⌐ant une liste globale nomm├⌐e _global.CiblesDrag des clips ├á surveiller (ex: _global.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop);), on peut connaitre le clip actuellement survol├⌐ et celui sur lequel on drop.
  688.  * - - au Release: curseur mainO+frame 'E2'+ plus appel fonction _global.ApresDrag(mc_cible) si relach├⌐ sur un clip de la liste CiblesDrag.
  689.  * - - pendant le drag, appelle la fonction _global.PendantDrag(mc_cible) si passe sur un clip de la liste CiblesDrag.
  690.  * - - lorsque l'on survole avec le drag un clip surveill├⌐, il va automatiquement sur ├á sa frame 'E2' pour simuler le survol.
  691.  *  >
  692.  * *L'utilisation type de la fonction StartDrag est celle-ci :*
  693.  *
  694.  *     (code)
  695.  *     #include "prod/mc_actions_modeles.as"  // ├á appeler une seule fois dans le fla
  696.  *
  697.  *    InitMC({mc:monClipDrag, fonction:"dragddrop"});
  698.  *
  699.  *     _global.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop); // clips devant surveiller les drag & drop
  700.  *
  701.  *     _global.PendantDrag=function(p){
  702.  *        //trace (p._name);
  703.  *         // ...
  704.  *     }
  705.  *
  706.  *     _global.ApresDrag=function(p){
  707.  *        //trace (p._name);
  708.  *         // ...
  709.  *     }
  710.  *     (end)
  711.  */
  712. function InitMC_slider(p){
  713.     //trace ("InitMC_slider "+ this);
  714.     //xlisteObj(p);
  715.     //this.enabled=true;
  716.     if (p.IB!=undefined){
  717.         if (p.IBrep==true){
  718.             var IBrepere=_MOD_['IBrep_'+p.IB];
  719.         }
  720.         else{
  721.             var IBrepere=p.mc;
  722.         }
  723.         ////trace2('IBREPERE '+IBrepere._x);
  724.         this.afficheIB=    function(){gereTextes.afficheIB({codeIB:p.IB,mc:IBrepere});};
  725.         this.masqueIB=function(){gereTextes.masqueIB();}
  726.  
  727.     }
  728.     this.joueson=(p.son!=undefined) ? function(){joueBruitage({nomSon:p.son, offset:p.son_offset});} : undefined;
  729.     this.stopson=(p.son!=undefined) ? function(){    soundObjects[gBruitageName + p.son].setVolume(0);} : undefined;
  730.     var curseur_after_press=(p.goto==undefined)?"doigt":"fleche";
  731.     this.goto=p.goto;
  732.     this.EnMouvement = false;
  733.  
  734.     if (p.sonOnMove != undefined){
  735.         this.sonOnMove = p.sonOnMove;
  736.         this.sonOnMove_offset = (p.sonOnMove_offset == undefined) ? 0 :  Number(p.sonOnMove_offset);
  737.         this.sonOnMove_loopSon = (p.sonOnMove_loopSon == undefined) ? 0 :  Number(p.sonOnMove_loopSon);
  738.         this.jouesonOnMove=function(){joueBruitage({nomSon:this.sonOnMove, offset:this.sonOnMove_offset, loopSon: this.sonOnMove_loopSon});}
  739.         this.stopsonOnMove=function(){stopBruitage({nomSon:this.sonOnMove});}
  740.     }
  741.     else{
  742.         this.jouesonOnMove=undefined;
  743.         this.stopsonOnMove=undefined;
  744.     }
  745.  
  746.     if (p.sonOnPress != undefined){
  747.         this.sonOnPress = p.sonOnPress;
  748.         this.sonOnPress_offset = (p.sonOnPress_offset == undefined) ? 0 :  Number(p.sonOnPress_offset);
  749.         this.sonOnPress_loopSon = (p.sonOnPress_loopSon == undefined) ? 0 :  Number(p.sonOnPress_loopSon);
  750.         this.jouesonOnPress=function(){joueBruitage({nomSon:this.sonOnPress, offset:this.sonOnPress_offset, loopSon: this.sonOnPress_loopSon});}
  751.         this.stopsonOnPress=function(){stopBruitage({nomSon:this.sonOnPress});}
  752.     }
  753.     else{
  754.         this.jouesonOnMove=undefined;
  755.         this.stopsonOnMove=undefined;
  756.     }
  757.  
  758.     
  759.     this.DragZoneLargeur= (p.DragZoneLargeur == undefined) ? 0 : p.DragZoneLargeur;
  760.     this.DragZoneHauteur= (p.DragZoneHauteur == undefined) ? 0 : p.DragZoneHauteur;
  761.     this.DragZoneLargeur_pourcent = p.DragZoneLargeur / 100;
  762.     this.DragZoneHauteur_pourcent = p.DragZoneHauteur / 100;
  763.  
  764.     
  765.     this.DragZone = {
  766.         left :     this._x,
  767.         right :     (this._x + this.DragZoneLargeur),
  768.         top:     this._y,
  769.         bottom:    (this._y + this.DragZoneHauteur)
  770.     };
  771.     
  772.     this.Activer = function()
  773.     {
  774.         this.enabled = true;
  775.     }
  776.     
  777.     this.Desactiver = function()
  778.     {
  779.         this.enabled = false;
  780.     }
  781.     
  782.     this.SetPosition  = this.SetPositionX  = function (pourcent)
  783.     {
  784.         this._x = this.DragZone.left + this.DragZoneLargeur_pourcent * pourcent;
  785.  
  786.     }
  787.     
  788.     this.SetPositionY = function(pourcent)
  789.     {
  790.         this._y = this.DragZone.top + this.DragZoneHauteur_pourcent * pourcent;
  791.     }
  792.     
  793.     this.GetPosition  = this.GetPositionX  = function ()
  794.     {
  795.         return (this._x - this.DragZone.left) / this.DragZoneLargeur_pourcent ;
  796.  
  797.     }
  798.  
  799.     this.GetPositionY  = function ()
  800.     {
  801.         return (this._y - this.DragZone.top) / this.DragZoneHauteur_pourcent ;
  802.  
  803.     }
  804.  
  805.     this.DetectDrag = function() 
  806.     {
  807.         ////trace ("detect____");
  808.         this._x=_root._xmouse-this.ecart_mousex;
  809.         this._y=_root._ymouse-this.ecart_mousey;
  810.         if (this._x<= this.DragZone.left){this._x=this.DragZone.left;}
  811.         if (this._y< this.DragZone.top){this._y=this.DragZone.top;}
  812.         if (this._x>= this.DragZone.right){this._x=this.DragZone.right;}
  813.         if (this._y> this.DragZone.bottom){this._y=this.DragZone.bottom;}
  814.         updateAfterEvent();
  815.         if (this._x == this.lastx && this._y == this.lasty){ // pas boug├⌐
  816.             if (this.EnMouvement == true){
  817.                 this.EnMouvement = false;
  818.                 this.stopsonOnMove();
  819.             }
  820.         }
  821.         else{ // boug├⌐
  822.             if (this.EnMouvement == false){
  823.                 this.EnMouvement = true;
  824.                 this.jouesonOnMove();
  825.             }
  826.         }
  827.         this.lastx = this._x;
  828.         this.lasty = this._y;
  829.         // for (var lp = 0; lp<_global.CiblesDrag.length; lp++) {
  830.         // if (this.hitTest(_global.CiblesDrag[lp])) {
  831.         // _global.CiblesDrag[lp].gotoAndStop("E2");
  832.         // _global.PendantDrag(_global.CiblesDrag[lp]);
  833.         // } else {
  834.         // _global.CiblesDrag[lp].gotoAndStop("E1");
  835.  
  836.         // }
  837.         // }
  838.         this.PendantSlide();
  839.     };
  840.  
  841.     this.StartDrag = function() {
  842.         ////trace("StartDrag");
  843.         this.ecart_mousex=_root._xmouse-this._x;
  844.         this.ecart_mousey=_root._ymouse-this._y;
  845.         this.lastx = this._x;
  846.         this.lasty = this._y;
  847.         this.IntervalId = _global.SetInterval( { mcRef: this, methode:"DetectDrag",    interval:1 } );
  848.         //startDrag(this);
  849.  
  850.     };
  851.  
  852.     this.onPress = function() {
  853.         this.jouesonOnPress();
  854.         this.masqueIB();
  855.         this.gotoAndStop("E3");
  856.         //var curseur=(p.curseur!=undefined)?p.curseur:"doigt";
  857.         gereCursor("mainF");
  858.         this.StartDrag();
  859.         var p = this.OnPress();
  860.     };
  861.     this.onRollOver = function() {
  862.         this.joueson();
  863.         //trace ('IB '+p.IB);
  864.         this.afficheIB();
  865.         this.gotoAndStop("E2");
  866.         //var curseur=(p.curseur!=undefined)?p.curseur:"doigt";
  867.         gereCursor("mainO");
  868.         var p = this.OnRollOver();
  869.     }
  870.     this.onRollOut = function() {
  871.         this.stopson();
  872.         this.stopsonOnPress();
  873.         this.stopsonOnMove();
  874.  
  875.         this.gotoAndStop("E1");
  876.         //var curseur=(p.curseur!=undefined)?p.curseur:"fleche";
  877.         this.masqueIB();
  878.         gereCursor("fleche");
  879.         var p = this.OnRollOut();
  880.     };
  881.     this.onRelease = function() {
  882.         this.gotoAndStop("E2");
  883.         _global.ClearInterval(this.IntervalId);
  884.         this.stopson();
  885.         this.stopsonOnPress();
  886.         this.stopsonOnMove();
  887.         //stopDrag();
  888.         ////trace( 'yyy '+ _global.CiblesDrag.length);
  889.         // for (var lp = 0; lp<_global.CiblesDrag.length; lp++) {
  890.         // ////trace('TOTOTOTOOTTO');
  891.         // if (this.hitTest(_global.CiblesDrag[lp])) {
  892.         // _//global.//trace("HITTTTT");
  893.         // //_global.DerniereCibleDrag = _global.CiblesDrag[lp];
  894.         // _global.ApresDrag({mc:_global.CiblesDrag[lp],mc_drag:this});
  895.         // }
  896.         // else{
  897.         // ////trace("HNOOITTTTT");
  898.         // _global.ApresDrag({mc:null,mc_drag:this});
  899.         // }
  900.         // }
  901.         //var curseur=(p.curseur!=undefined)?p.curseur:"doigt";
  902.         gereCursor("mainO");
  903.         var p = this.OnRelease();
  904.  
  905.     };
  906.     this.onReleaseOutside = function(){
  907.         this.onRelease();
  908.         gereCursor("fleche");
  909.         var p = this.OnReleaseOutside();
  910.     }
  911. // function() {
  912. // this.gotoAndStop("E1");
  913. // clearInterval(this.IntervalId);
  914. // stopDrag();
  915. // //var curseur=(p.curseur!=undefined)?p.curseur:"fleche";
  916. // gereCursor("fleche");
  917. // var p=this.OnReleaseOutside();
  918. // };
  919. }
  920. _global.InitMC_slider=InitMC_slider;
  921.  
  922. /**
  923.  * transforme un simple clip invisible en champs texte modifiable, via les lm
  924.  *_Initialisation :_
  925.  * p.offsetx *: decalage en pixel du bloc texte en largeur
  926.  * p.offsety *: decalage en pixel du bloc texte en hauteur
  927.  *>
  928.  *_ Utilisation:_
  929.  * > InitMC({fonction:"titre", mc:"TitreMC"});
  930.  * >
  931.  * > TitreMC.ChangeTexte({codeLM:"LM01"})
  932.  */
  933. function InitMC_titre(p){
  934.     //trace ("InitMC_titre()");
  935.     //xlisteObj(p);
  936.     this.LMaVider = [];
  937.     this.offsetx = (p.offsetx == undefined) ? 0 : Number(p.offsetx);
  938.     this.offsety = (p.offsety == undefined) ? 0 : Number(p.offsety);
  939.  
  940.     this.ChangeTexte = function(p){
  941.         this.viderLM();
  942.         _root.gereTextes.afficheLM({codeLM:p.codeLM,X:this._x+this.offsetx,Y:this._y+this.offsety,width:this._width,height:this._height});
  943.         this.LMaVider.push(p);
  944.     }
  945.     // function afficheLM_x2(p){
  946.     // viderLM_x2();
  947.     // _root.gereTextes.afficheLM({codeLM:p.codeLM,X:p.LMrep._x,Y:p.LMrep._y,width:p.LMrep._width,height:p.LMrep._height});
  948.     // LMaVider2.push(p);
  949.     // }
  950.  
  951.     this.viderLM = function(){
  952.         for (var lp=0;lp<this.LMaVider.length;lp++){
  953.             _root.gereTextes.masqueLM(this.LMaVider[lp]);
  954.         }
  955.     }
  956.  
  957. }
  958. _global.InitMC_titre=InitMC_titre;
  959.  
  960. /**
  961.  * transforme un simple clip invisible en champs texte modifiable
  962.  *_Initialisation :_
  963.  * p.offsetx *: decalage en pixel du bloc texte en largeur
  964.  * p.offsety *: decalage en pixel du bloc texte en hauteur
  965.  *>
  966.  *_ Utilisation:_
  967.  * > InitMC({fonction:"titre", mc:"TitreMC"});
  968.  * >
  969.  * > TitreMC.ChangeTexte({codeLM:"LM01"})
  970.  */
  971. function InitMC_texte(p){
  972.     trace ("InitMC_titre()");
  973.     xlisteObj(p);
  974.     this.LMaVider = [];
  975.     this.pere = (p.pere == undefined) ? _root : Number(p.pere);
  976.     this.offsetx = (p.offsetx == undefined) ? 0 : Number(p.offsetx);
  977.     this.offsety = (p.offsety == undefined) ? 0 : Number(p.offsety);
  978.     this.level = (p.level == undefined) ? this.pere.getNextHighestDepth() : Number(p.level);
  979.     this.texte = (p.texte == undefined) ? "" : p.texte;
  980.     this.MC = p.mc;
  981.     this.MC._visible = false;
  982.     if (p.style == undefined){
  983.         this.Style = {};
  984.     }
  985.     else{
  986.         this.Style = p.style;
  987.     }
  988.  
  989.     this.Style.multiline = (this.Style.multiline == undefined) ? true : this.Style.multiline;
  990.     this.Style.wordWrap = (this.Style.wordWrap == undefined) ? true : this.Style.wordWrap;
  991.     this.Style.border = (this.Style.border == undefined) ? false : this.Style.border;
  992.     this.Style.color = (this.Style.color == undefined) ? 0xFF0000 : this.Style.color;
  993.     this.Style.size = (this.Style.size == undefined) ? 12 : this.Style.size;
  994.     this.Style.font = (this.Style.font == undefined) ? "Comic Sans MS" : this.Style.font;
  995.     this.Style.align = (this.Style.align == undefined) ? "center" : this.Style.align;
  996.     this.Style.underline = (this.Style.underline == undefined) ? false : this.Style.underline;
  997.     this.Style.selectable = (this.Style.selectable == undefined) ? false : this.Style.selectable;
  998.  
  999.     var my_txt = this.pere.createTextField(this.MC._name+"_txt", this.level, this.MC._x, this.MC._y, this.MC._width, this.MC._height);
  1000.     my_txt.multiline = this.Style.multiline;
  1001.     my_txt.wordWrap = this.Style.wordWrap;
  1002.     my_txt.border = this.Style.border;
  1003.     my_txt.selectable = this.Style.selectable;
  1004.     my_txt.embedFonts = true;
  1005.     var my_fmt:TextFormat = new TextFormat();
  1006.     my_fmt.font = this.Style.font;
  1007.     my_fmt.size = this.Style.size;
  1008.     my_fmt.color = this.Style.color;
  1009.     my_fmt.align = this.Style.align;
  1010.     my_fmt.underline = this.Style.underline;
  1011.  
  1012.     my_txt.text = this.texte;
  1013.     my_txt.setTextFormat(my_fmt);
  1014.     this.TexteMC = my_txt;
  1015.  
  1016.     this.ChangeTexte = function(p){
  1017.         this.texte = p.texte;
  1018.         this.TexteMC.text = p.texte;
  1019.         this.TexteMC.setTextFormat(my_fmt);
  1020.  
  1021.     }
  1022. }
  1023. _global.InitMC_texte=InitMC_texte;