Augmenter le i++ en AS3

aerial9 Messages postés 25 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 23 décembre 2011 - 22 déc. 2011 à 01:33
aerial9 Messages postés 25 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 23 décembre 2011 - 23 déc. 2011 à 23:31
Bonjour à tous, ça fait quelques temps que je ne suis pas venu sur codes-sources.
Je demande votre aide sur ce sujet : Je souhaiterai attacher une variable au i++.
Je m'explique :

voici une variable qui devrait définir la vitesse de base d'un clip quand (par exemple) je reste appuyé sur la touche droite du clavier directionnel.

var augmentervitesse:int=1;

quand j’appuie sur cette touche, le clip perso_mc doit avancer grâce à l'incrémentation i++ :

var i:number=0;
perso_mc.x = i;
i++;

je veux multiplier i à une autre valeur (ib) alors je fais :

(i*ib)++;
ou dans la variable

var i:number= 0*ib;

et plein d'autre encore… mais sans résultat. Je n'arrive même pas à interagir avec la vitesse de déplacement.
Le But en fait est de augmenter ou de diminuer la vitesse de perso_mc par une variable.
Pour ceux que ça intéresse j'essaye de faire un jeu flash. Le perso peut grâce une amélioration augmenter sa vitesse de déplacement. mais certaines attaques ennemies doivent le ralentir.
Je précise que j'ai des bases en flash, mais TRES petites, voire infimes.
J'espère avoir été assez clair.
à Bientôt, cordialement,

AERIAL

4 réponses

aerial9 Messages postés 25 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 23 décembre 2011
22 déc. 2011 à 01:38
Bonjour à tous, ça fait quelques temps que je ne suis pas venu sur codes-sources.
Je demande votre aide sur ce sujet : Je souhaiterai attacher une variable au i++.
Je m'explique :

voici une variable qui devrait définir la vitesse de base d'un clip quand (par exemple) je reste appuyé sur la touche droite du clavier directionnel.

var i:number=0;

quand j'appuie sur cette touche, le clip perso_mc doit avancer grâce à l'incrémentation i++ :

var i:number=0; (j'ai essayé int,uint,number=0 ou =1)
perso_mc.x = i;
i++;

je veux multiplier i à une autre valeur (ib) alors je fais :

(i*ib)++;
ou dans la variable

var i:number= 0*ib;

et plein d'autre encore, mais sans résultat. Je n'arrive même pas à interagir avec la vitesse de déplacement.
Le But en fait est d'augmenter ou de diminuer la vitesse de perso_mc par une variable.
Pour ceux que ça intéresse j'essaye de faire un jeu flash. Le perso peut grâce une amélioration augmenter sa vitesse de déplacement. mais certaines attaques ennemies doivent le ralentir.
Je précise que j'ai des bases en flash, mais TRES petites, voire infimes.
J'espère avoir été assez clair.
à Bientôt, cordialement,

AERIAL
0
aerial9 Messages postés 25 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 23 décembre 2011
22 déc. 2011 à 01:40
désolé pour le flood, mais j'ai vu des erreurs de tapes et de sens. Le bon post est le deuxième.
0
docodoc Messages postés 1671 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 21 juillet 2013 4
22 déc. 2011 à 08:17
salut

d'abord, fais attention a ta synthaxe : var i:Number=1
puis tu incrementes ta variable i, c'est OK, a condition qu'elle soit bien integree dans un gestionnaire d'evenement tu obtiendras bien une "acceleration" de ton mc (bien que comme ca,au final tu arriverais a depasser la vitesse de la lumiere =acceleration continue !!)
ensuite tu definis une autre variable ib : pourquoi faire et aussi pourquoi la 'double-incrementation' (i*ib)++ ????
tu as deja ta variable i avec laquelle tu peu jouer en cas d'acceleration plus lente

petit conseil en passant : cree provisoirement un petit champ de texte dynamique sur la scene qui affiche les valeur de ta variable dans les differentes situation pour avoir un controle visuel de ce qui se passe
bonne continuation
a+
0
aerial9 Messages postés 25 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 23 décembre 2011
23 déc. 2011 à 23:31
Merci pour ta réponse Docodoc. Pour l'affichage de valeur, le trace me sffit, du moins pour le moment. Mon code ici est plus ou moins fonctionel car i*b augmente comme tu le dis la vitesse de façon folle : acceleration infini. Ce n'est pas du tout ce que je veux, mais au moins j'agis sur la vitesse. si je fais i+ib, rien ne se passe. Mëme si ib est = à 100 000, rien. C'est d'ailleur là que jje ne comprends plus.
Ça m'arrangerai bien, dans le cadre de mon jeu, d'avoir un "i" qui soit composé d'une foule variable : Terrain boueux, poison, upgrade, etc.
Le plus simple serai de faire : rond.x = (i+Mavar)++;
mais ça marche pas.

Pour être plus clair voici mon bout de code :

stop();

var acl:Number=1;
var i:Number=0;

rond.x = i;
rond.y = i;
var temoin:Boolean = false;
rond.addEventListener(Event.ENTER_FRAME, check_state);

function check_state(e:Event):void{
if(rond.hitTestObject(trait)){
temoin = true;
trace("touché");
}

if(temoin == true){
trace("réfraction");
rond.x = i;
rond.y -= 1;
rond.rotation=-90;
}else{
trace("i");
trace(i);
trace("acl");
trace(acl);
i= (i*acl);
rond.x = i;
rond.y = i;
}
i++;
}

boost_mc.addEventListener(MouseEvent.MOUSE_DOWN,booster);
function booster(me:MouseEvent):void{
acl*10
trace("lololo")
}


En appuyant sur boost, acl et donc i devrai être décuplés. Pourquoi ça marche pas ?
0