Cas particulier, avez vous une idée ? (AS2)

eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010 - 14 mai 2010 à 10:35
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 20 mai 2010 à 11:00
Bonjour,

Idée pour développer ce cas :

Exp :
J'ai un interrupteur général et 3 ampoules, chacune de ces ampoules ont un interrupteur on/off

But :
Les ampoules passent de on à off au clic.
L'interrupteur général contrôle toutes les ampoules et au clic elles passent de on à off.

Ps : j'espère avoir été clair.

19 réponses

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
14 mai 2010 à 17:18
Hello,

tout dépend comment tu comptes créer tes ampoules, si tu fais des ampoules qui sont gérées par exemple sur 2 frames (1ère : ampoule éteinte, 2ème frame : ampoule allumée), tu peux faire un truc du genre :
interrupteurGeneral.onRelease = function(){
ampoule1.gotoAndStop(1);
ampoule2.gotoAndStop(1);
ampoule3.gotoAndStop(1);
}


A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
docodoc Messages postés 1671 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 21 juillet 2013 4
15 mai 2010 à 09:07
salut
oui la methode de BBFUNK01 est tout a fait utilisable et pratique
une alternative dans ce cas serait de passer par une variable booleenne
on est bien dans le jeu des _visible=true ou false non ?
bonne continuation
a+
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
15 mai 2010 à 20:17
Bonjour et merci pour vos réponses.
J'ai testé et ça marche plus ou moins, sauf que quand j'allume puis éteins toutes ampoules. Pour rallumer l'ampoule 1 par exemple, je suis obligé de double cliquer.

J'utilise le systeme des positions sur les boutons :


// BTN interrupteur
var position0 = false;
btn_interrupteur.onRelease = function() {
position0 = !position0;
if (position0) {
clip_ampoule.onEnterFrame = function() {
if (this._alpha<100) {
this._alpha += 10;
}else{
delete this.onEnterFrame;
}
};
} else {
clip_ampoule.onEnterFrame = function() {
if (this._alpha>0) {
this._alpha -= 10;
}else{
delete this.onEnterFrame;
}
};
}
};

// BTN ampoule
var position = false;
btn_ampoule.onRelease = function() {
position = !position;
if (position) {
clip_ampoule.onEnterFrame = function() {
if (this._alpha<100) {
this._alpha += 10;
}else{
delete this.onEnterFrame;
}
};
} else {
clip_ampoule.onEnterFrame = function() {
if (this._alpha>0) {
this._alpha -= 10;
}else{
delete this.onEnterFrame;
}
};
}
};
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
16 mai 2010 à 10:42
Hello,

essaie peut-être de gérer tes ampoules avec setInterval(), tu pourras plus facilement intervenir sur la durée que mettra l'ampoule à s'allumer ou à s'éteindre :

//Fonctions pour allumer ou éteindre une ampoule
//Le bouton qui allume/éteint l'ampoule n'est pas cliquable si
//l'ampoule n'est pas complètement allumée ou éteinte
//Fonctions à dupliquer autant de fois que tu as d'ampoules

function Ampoule1Allumage(){
btn_ampoule1.enabled = false;
clip_ampoule1._alpha += 10;
if (clip_ampoule1._alpha == 100){
clearInterval(Amp1All);
btn_ampoule1.enabled = true;
}
}

function Ampoule1Eteindre(){
btn_ampoule1.enabled = false;
clip_ampoule1._alpha -= 10;
if (clip_ampoule1._alpha == 0){
clearInterval(Amp1Et);
btn_ampoule1.enabled = true;
}
}

//Gestion des boutons ampoules
//1 bouton à assigner à chaque ampoule avec les mêmes paramètres

btn_ampoule1.onRelease = function(){
if (clip_ampoule1._alpha == 0){
//lancement de l'intervalle contenant la fonction Allumage
//ton ampoule sera complètement allumée au bout d'une seconde
Amp1All = setInterval(Ampoule1Allumage, 100);
}else if (clip_ampoule1._alpha == 100){
//lancement de l'intervalle contenant la fonction Eteindre
//ton ampoule sera complètement éteinte au bout d'une seconde
Amp1Et = setInterval(Ampoule1Eteindre, 100);
}
}

//Gestion de l'interrupteur général

btn_interrupteur.onRelease = function(){
if (clip_ampoule1._alpha == 100){
//lancement de l'intervalle contenant la fonction Eteindre
Amp1Et = setInterval(Ampoule1Eteindre, 100);
}
if (clip_ampoule2._alpha == 100){
//lancement de l'intervalle contenant la fonction Eteindre
Amp2Et = setInterval(Ampoule2Eteindre, 100);
}
if (clip_ampoule3._alpha == 100){
//lancement de l'intervalle contenant la fonction Eteindre
Amp3Et = setInterval(Ampoule3Eteindre, 100);
}
}



BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
16 mai 2010 à 19:56
J'ai testé pour script, je n'arrive pas à rallumer l'ampoule une fois éteinte, ni en cliquant sur l'interrupteur de l'ampoule, ni sur le général. Les interrupteurs doivent être sans arrêt cliquable.
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
16 mai 2010 à 20:16
Et j'ai combiné ton script au mien, et j'ai toujours ce problème de double clic pour rallumer ou éteindre.

C'est possible de joindre un fichier ? ça sera plus simple.
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
16 mai 2010 à 21:58
Re,

pour joindre un fichier ; uploade ton fichier sur un serveur et mets le lien dans le post.

A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
17 mai 2010 à 11:54
J'ai mis la source à cette adresse
Tapez le texte de l'url ici.
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 mai 2010 à 15:52
Hello,

je n'ai pas flash sous la main, je regarderai ce soir.

A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 mai 2010 à 22:42
Hello,

problème résolu, ci-joint le lien pour récupérer le fichier :
ampoule
... j'ai revu un peu le design

A plus,


BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
18 mai 2010 à 09:08
Merci d'avoir pris le temps pour m'aider, il y a juste "Un truc", l'interrupteur général doit être capable d'allumer ou d'éteindre les ampoules des le début, tu vois, c'est la que je coince.
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
18 mai 2010 à 10:17
Hello,

et bien là je pense que tu peux t'en sortir avec le code que je t'ai donné ; essaie d'améliorer la fonction contenue lors du clic sur l'interrupteur en rajoutant des conditions ;tu passes en revue tous les cas de figures ; exemple : si l'ampoule 1 et 2 sont allumées et que l'ampoule 3 est éteinte, en cliquant ça allume l'ampoule 3, ensuite vu que les 3 ampoules sont allumées, en recliquant ça éteint les ampoules.

Tu vas y arriver , à plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
18 mai 2010 à 11:03
Merci encore,
Je te tiendrais au courant,

A+++
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
18 mai 2010 à 15:25
Bonjour
voici un petit bout de code pour le cas envisagé.
Il suffit d'attribuer en plus la bonne couleur en fonction des variables.

th = this;

amp1 = -1;
amp2 = -1;
amp3 = -1;
gen = -1;

interG.onRelease = function() {
amp1 = -1;
amp2 = -1;
amp3 = -1;
};

function ofon(no) {
th["amp"+no] *= -1;
trace("amp"+no+" = "+th["amp"+no]);
}

inter1.onRelease = function() {
ofon(1);
};

inter2.onRelease = function() {
ofon(2);
};

inter3.onRelease = function() {
ofon(3);
};


Pi'ère2
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
18 mai 2010 à 17:56
Re,

le code de Pi'ère2 est une autre manière pertinente de solutionner le problème, si tu ne parviens pas à faire marcher l'interrupteur général tiens-moi au courant.

A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
18 mai 2010 à 22:11
Re,

je te file la solution pour la gestion de l'interrupteur général, tu peux bien entendu modifier le code suivant comment tu souhaites gérer les ampoules, mais dans l'idée je pense que tu peux te baser dessus :

interrupteur.onRelease = function(){
if (TraceAmp1 "eteint" && TraceAmp2 "eteint" && TraceAmp3 == "eteint"){
clearInterval(Amp1Et);
clearInterval(Amp2Et);
clearInterval(Amp3Et);
TraceAmp1 = "allume";
TraceAmp2 = "allume";
TraceAmp3 = "allume";
Amp1All = setInterval(Ampoule1Allumage, 50);
Amp2All = setInterval(Ampoule2Allumage, 50);
Amp3All = setInterval(Ampoule3Allumage, 50);
}
else if (TraceAmp1 "allume" && TraceAmp2 "allume" && TraceAmp3 == "eteint"){
clearInterval(Amp3Et);
 TraceAmp3 = "allume";
Amp3All = setInterval(Ampoule3Allumage, 50);
}	
else if (TraceAmp2 "allume" && TraceAmp3 "allume" && TraceAmp1 == "eteint"){
clearInterval(Amp1Et);
 TraceAmp1 = "allume";
Amp1All = setInterval(Ampoule1Allumage, 50);
}
else if (TraceAmp1 "allume" && TraceAmp3 "allume" && TraceAmp2 == "eteint"){
clearInterval(Amp2Et);
 TraceAmp2 = "allume";
Amp2All = setInterval(Ampoule2Allumage, 50);
}
else if (TraceAmp1 "allume" && TraceAmp2 "allume" && TraceAmp3 == "allume"){
clearInterval(Amp1All);
clearInterval(Amp2All);
clearInterval(Amp3All);
TraceAmp1 = "eteint";
TraceAmp2 = "eteint";
TraceAmp3 = "eteint";
Amp1Et = setInterval(Ampoule1Eteindre, 50);
Amp2Et = setInterval(Ampoule2Eteindre, 50);
Amp3Et = setInterval(Ampoule3Eteindre, 50);
}
else if (TraceAmp1 "eteint" && TraceAmp2 "eteint" && TraceAmp3 == "allume"){
clearInterval(Amp3All);
 TraceAmp3 = "eteint";
Amp3Et = setInterval(Ampoule3Eteindre, 50);
}	
else if (TraceAmp2 "eteint" && TraceAmp3 "eteint" && TraceAmp1 == "allume"){
clearInterval(Amp1All);
 TraceAmp1 = "eteint";
Amp1Et = setInterval(Ampoule1Eteindre, 50);
}
else if (TraceAmp1 "eteint" && TraceAmp3 "eteint" && TraceAmp2 == "allume"){
clearInterval(Amp2All);
 TraceAmp2 = "eteint";
Amp2Et = setInterval(Ampoule2Eteindre, 50);
}
}


A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
18 mai 2010 à 22:29
Cooool je testerais demain,

A+++
0
eysnaik Messages postés 26 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 09:41
Slt BBFUNK01,

ça marche nickel, franchement j'aurais pas trouvé tout seul. Je vais étudier ça à fond.

Merci bien,

A la prochaine,

Eysnaik
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
20 mai 2010 à 11:00
Hello,

en fait tout est régi par les conditions, bosses les conditions et les différentes fonctions possibles dans flash et tout sera clair. Un truc pour faire les tests : n'hésite pas à mettre des trace() dans ton code pour tester et suivre le déroulement du code.

A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
Rejoignez-nous