Forums Développement Multimédia

Aller au contenu

multiple d'un nombre ?

CODE Actionscript

14 réponses à ce sujet

#1 centaure-net

  • Members
  • PipPipPipPipPipPipPipPip
  • 521 messages

Posté 19 August 2005 - 17:24 PM

Bonjour,

je cherche à créer une variable qui peut avoir plusieurs valeurs

par exemple

Code

ac = _parent.planet1.angle;
ma = MULTIPLE de angle; //c'est à dire 360/0 ou 360/1 ... ou 360/8
for (i=ac; i=ma; i++) {
speed = ac-ma;
}


peut être avec un tableau (array, c'est ça ?)

merci d'avance pour votre aide

#2 ben1024

  • Members
  • PipPipPipPipPipPipPipPip
  • 1167 messages

Posté 19 August 2005 - 21:16 PM

j'ai rien compris X-D
regarde "%" dans l'aide
c'est pour le modulo de l'angle
trace(360%360);
// 0
trace(90%360);
// 90

sinon repose ta question smile.gif

#3 tabin.cedric

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 9372 messages

Posté 19 August 2005 - 21:44 PM

Salut,

voici un petit script te permettand de récupérer tous les chiffres pouvant diviser un nombre smile.gif

ActionScript
var m:Number = 360;
var l:Number = Math.sqrt(m);
var s:Array = [];
 
for (var i:Number=0 ; i<=l ; i++)
{
if (m%i == 0)
{
s.push(i);
s.push(m/i);
}
}
 
trace(s);


@++ smile.gif

#4 toojee_mat

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 280 messages

Posté 19 August 2005 - 22:40 PM

une variable qui peut avoir plusieur valeurs, c'est soit un tableau:
var tableau:Array=new Array()

ou un objet auquel tu lui donne des variable ou meme un clip d'ailleurs!

var monObject:Object=new Object()
monObject.ma_variable1=360
monObject.ma_variable2=3120

pareil pour les clip
clip_mc.ma_variable1=180

voilà j'espere que c'été ta question...



#5 ben1024

  • Members
  • PipPipPipPipPipPipPipPip
  • 1167 messages

Posté 19 August 2005 - 23:53 PM

icon_biggrin.gif
j'ai pas codé depus un ptit moment c'est quoi le «var truc:typeDeVar» ?
c'est pour mx2004 ?



#6 grgrdvrt

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3135 messages

Posté 20 August 2005 - 01:26 AM

ouaip
on appelle ça typage fort

#7 ben1024

  • Members
  • PipPipPipPipPipPipPipPip
  • 1167 messages

Posté 20 August 2005 - 10:14 AM

hi,

c'est trop court comme réponse (msn style wink.gif)
le ouaip c'est "oui c'est pour mx2004 ?"

#8 grgrdvrt

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3135 messages

Posté 20 August 2005 - 10:57 AM

elle est classe ma réponse! icon_rolleyes.gif

le typage fort est un des apports de l'as2, c'est donc quelque chose qui a été introduit dans flash mx2004, cela permet de signaler une erreur lorsqu'une variable contient une donnée qui n'est pas du type initialement prévu ce qui permet d'eviter plein d'erreurs icon_smile.gif

c'est meiux comme ça? icon_biggrin.gif

#9 ben1024

  • Members
  • PipPipPipPipPipPipPipPip
  • 1167 messages

Posté 20 August 2005 - 11:04 AM

parfait ThE_StArMoNkEy_811
wink.gif Centre de formation Flash > Programmation Flash > ActionScript 1 icon_mrgreen.gif


#10 tabin.cedric

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 9372 messages

Posté 20 August 2005 - 11:12 AM

Salut,

navré les gars, c'est moi qui me suis planté en mettant de l'as2 ! Mais il suffit de virer les :Type et le code est bon wink.gif

@++

#11 centaure-net

  • Members
  • PipPipPipPipPipPipPipPip
  • 521 messages

Posté 22 August 2005 - 09:04 AM

Bon, merci pour vos réponses et merci thecaptain pour ton script,
voilà ce que j'en ai tiré :

Code

var m = 360;
var l = 8;
var s = [];
var unit = m/l;
for (var i = l; i>0; i--) {
var val = unit*i;
s.push(val);
if (s[i] == 90) {
 trace("super");
}
}
trace(s);


et le résultat de trace (s) qui m'intéresse :

360,315,270,225,180,135,90,45

Mais ce qui ne fonctionne pas c'est :

Code

if (s[i] == 90) {
trace("super");
}


quand je lui demande trace(s[i]) il me renvoi "undefined"

voilà, en fait ce qu'il me faut c'est ce test qui permettrai de savoir si dans le tableau il y a la valeur qui m'intéresse.

merci d'avance pour votre aide

#12 sandrinecade

    Ceinture Blanche

  • Members
  • Pip
  • 1 messages

Posté 22 August 2005 - 09:18 AM

Salut smile.gif

Code


var m = 360;
var l = 8;
var s = [];
var unit = m/l;
for (var i = l; i>0; i--) {
var val = unit*i;
s.push(val);
trace(val+"     "+i+"        "+s[i]);

if (s[i] == 90) {
trace("super");
}
}
trace(s);


Regarde le trace que je t'ai rajouté. Il devrait t'aider à comprendre pourquoi ton test ne fonctionne pas. Tu as en sortie: la valeur de val puis la valeur de i puis la valeur de s[i]. smile.gif

#13 centaure-net

  • Members
  • PipPipPipPipPipPipPipPip
  • 521 messages

Posté 22 August 2005 - 09:28 AM

merci pour ton aide

mais je ne comprends pas pourquoi pour les premières valeurs il n'enregistre rien dans le tableau :

360 8
315 7
270 6
225 5
180 4 180
135 3 225
90 2 270
45 1 315
360,315,270,225,180,135,90,45

où est l'erreur?

#14 didouche

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 4461 messages

Posté 22 August 2005 - 09:39 AM

Tu commence par remplir ton tableau avec les valeurs correspondant à i=8.
Donc s[0] est la valeur correspondant à i=8.
Lorsque tu teste s[i] lors du premier passage, s[8] n'existe pas encore.

Puis tu rempli s[1] et tu teste s[7] qui n'existe toujours pas.

Puis tu remplis s[2] et tu teste s[6]

Puis s[3] et tu teste s[5]

Puis s[4] et tu teste s[4] qui existe.

IL faudrait que tu inverse ton remplissage en augmentant la valeur de i pour tester celle que tu viens de créer. smile.gif

#15 centaure-net

  • Members
  • PipPipPipPipPipPipPipPip
  • 521 messages

Posté 22 August 2005 - 09:43 AM

ok dac, je suis bê^te ...

pfff ... bon je change cette erreur et je continue sur ma lancée

merci beaucoup



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)