* 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.
* xb
*/
/**
* Initialise un clip.
* >
* _parametres:_
* - soit le clip directement. la fonction InitMC_standart sera appelée.
* - soit un objet p :
* - - p.mc : clip à initialiser
* - - p.fonction : postfix de la fonction à appeler : "dragdrop" appelle InitMC_dragdrop()
* On peut crer dans ce fichier autant de fonctions de configuration que l'on veut. chaque nom de fonction doit commencer par "InitMC".
* >
* _ Exemple: _
* > InitMC({mc:monClip, fonction:"dragdrop"});
* >
* Pour surcharger les comportement prédéfinis, on creé les fonctions OnPress, OnRollOver,... (/!\ majuscule en 1er).
* >
* _Exemple :_
* (code)
* InitMC(monClip);
* monClip.OnPress=function(){
* ('je suis '+this._name);
* }
* (end)
*/
import flash.geom.Point;
import mx.utils.Delegate;
/**
* yo.
*/
function InitMC(p){
trace ('InitMCo() '+ p.mc);
var mc =(typeof (p) == "movieclip") ?p : p.mc;
// si p.level existe on change le niveau proprement (sans probleme de conflit avec mc existant dans le fla)
if (p.level != undefined){
var ceMC_name_old = mc._name+"_old";
var ceMC_name = mc._name;
mc._name = ceMC_name_old;
mc.duplicateMovieClip(ceMC_name,p.level);
mc._visible = false;
mc = this[ceMC_name];
}
// Si premiere initialisation, on mémorise l'état du clip(telle que dans le fla).
if (mc.OriginalMC == undefined)
{
mc.OriginalMC = { };
mc.OriginalMC._x = mc._x;
mc.OriginalMC._y = mc._y;
mc.OriginalMC._xscale = mc._xscale;
mc.OriginalMC._yscale = mc._yscale;
mc.OriginalMC._width = mc._width;
}
var fonction=(p.fonction==undefined)?InitMC_standart:eval("InitMC_"+p.fonction);
mc.InitMC = fonction;
InitMC_reccurent(mc);
mc.InitMC(p);
}
_global.InitMC = InitMC;
function InitMC_reccurent(mc)
{
mc.oriX = mc._x;
mc.oriY = mc._y;
mc.oriW = mc._width;
mc.oriH = mc._height;
mc.BackToInitialPos = function()
{
this._x = this.oriX;
this._y = this.oriY;
}
mc.BackToInitialSize = function()
{
this._width = this.oriW;
this._height = this.oriH;
}
}
_global.InitMC_reccurent = InitMC_reccurent;
function ResetMC(p):Void
{
var mc:MovieClip = p.mc;
delete mc.onPress;
delete mc.onRollOver;
delete mc.onRollOut;
delete mc.onRelease;
delete mc.onReleaseOutside;
delete mc.BTN.onPress;
delete mc.BTN.onRollOver;
delete mc.BTN.onRollOut;
delete mc.BTN.onRelease;
delete mc.BTN.onReleaseOutside;
}
_global.ResetMC = ResetMC;
/**
* Comportement "standart".
* >
* - au roll : curseur doigt + frame 'E2'. Retour à la fleche et à E1 pour les autres.
* - au press: frame E3
*
* _parametres (* facultatifs) ::_
* - p.son* = nom du bruitage à jouer (defaut : aucun)
* - p.goto* = nom de la frame à aller lors du clic
* - p.reposFrame* = Frame de repos appelée directement à l'initialisation. /!\ si absent le clip est laissé sur sa frame en cours
* - p.blockOnPress* = Laisse le clip bloqué sur la position E3 après clic (enabled mis sur false, reactivable par enabled=true)
* - p.BTN* = true|false : utilise le sous-clip 'BTN' du clip comme bouton au lieu du clip lui-même. (défaut = false);
* - p.UseLabels* = true|false : active les allers auto vers les lables lors des actions. si false : désactive cela.
* - p.useHandCursor* = true|false : applique useHandCursor sur le mc ou BTN.
* 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).
*/
function InitMC_standart(p) {
trace("InitMC_standart : " + InitMC_standart);
if (p.IB!=undefined){
if (typeof (p.IBrep) =="movieclip"){
var IBrepere = p.IBrep;
}
else if (typeof (_MOD_['IBrep_'+p.IB]) =="movieclip" && p.IBrep!=false){
* idem "standart" mais avec un bouton nommé BTN intégré au clip
* >
* - au roll : curseur doigt + frame 'E2'. Retour à la fleche et à E1 pour les autres.
* - au press: frame E3
*
* _parametres (* facultatifs) ::_
* - p.son* = nom du bruitage à jouer (defaut : aucun)
* - p.goto* = nom de la frame à aller lors du clic
*
* 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).
* - 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.
* - - au Release: curseur mainO+frame 'E2'+ plus appel fonction mc.ApresDrag() si relaché sur un clip de la liste CiblesDrag.
* - - pendant le drag, appelle la fonction mc.PendantDrag() si passe sur un clip de la liste CiblesDrag.
* - - lorsque l'on survole avec le drag un clip surveillé, il va automatiquement sur à sa frame 'E2' pour simuler le survol.
* >
* *L'utilisation type de la fonction StartDrag est celle-ci :*
*
* (code)
*
* InitMC({mc:monClipDrag, fonction:"dragddrop"});
*
* monClipDrag.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop); // clips devant surveiller les drag & drop
*
* monClipDrag.PendantDrag=function(){
* // ...
* }
*
* monClipDrag.ApresDrag=function(){
* // ...
* }
* (end)
* >
* - PressLevel:Number = niveau du clip lors du press (debut drag). defaut = 15832.
* - 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.
* - - au Release: curseur mainO+frame 'E2'+ plus appel fonction _global.ApresDrag(mc_cible) si relaché sur un clip de la liste CiblesDrag.
* - - pendant le drag, appelle la fonction _global.PendantDrag(mc_cible) si passe sur un clip de la liste CiblesDrag.
* - - lorsque l'on survole avec le drag un clip surveillé, il va automatiquement sur à sa frame 'E2' pour simuler le survol.
* >
* *L'utilisation type de la fonction StartDrag est celle-ci :*
*
* (code)
* #include "prod/mc_actions_modeles.as" // à appeler une seule fois dans le fla
*
* InitMC({mc:monClipDrag, fonction:"dragddrop"});
*
* _global.CiblesDrag = new Array(_root.mc2,_root.bip,_root.yop); // clips devant surveiller les drag & drop