OVH Cloud OVH Cloud

Quelle syntaxe pour plus petit que / plus grand que

4 réponses
Avatar
Digipole
Bonjour

Sur flash 2004, j'ai fait le code suivant

if ( length(dtel) < 81 )
{
vtel121 = dtel ;
}
if ( 80 < length(dtel) < 87 )
{
vtel118 = dtel ;
}
if ( 86 < length(dtel) < 93 )
{
vtel115 = dtel ;
}
if ( 92 < length(dtel) < 110 )
{
vtel107 = dtel ;
}
if ( 109 < length(dtel) < 117 )
{
vtel100 = dtel ;
}

Or quand j'active le flash, les 5 blocs texte (vtel121, vtel118, etc.) sont
remplis du texte dtel.

J'ai du faire une erreur dans la syntaxe lui indiquant qu'il ne doit activer
que si la longueur est inf?rieur ? x et sup?rieure ? Y, mais je ne vois pas
laquelle.

Je pourrais travailler avec des "else" en poup?e russes, mais je suis certain
qu'il y a une solution plus propre.

4 réponses

Avatar
ekameleon
Hello :)

1 - En flash (ou ECMASCript ...) la syntaxe x < value < y n'existe pas :)

2 - Par contre tu peux faire une petite classe dans ce genre :

// ----o Constructor

_global.Range = function (min, max) {
if (max < min) throw new Error("ArgumentOutOfBoundsError, 'max'
argument is < of 'min' argument") ;
this.min = min ;
this.max = max ;
}

// ----o Methods

Range.prototype.clamp = function (value) {
return Math.max(Math.min(value, this.max), this.min) ;
}

Range.prototype.isOutOfRange = function (value:Number):Boolean {
return (value >this.max ) || (value < this.min) ;
}

Range.prototype.overlap = function ( r /*Range*/ ):Boolean {
return (this.max > r.min) && (r.max > this.min) ;
}

Range.prototype.toString = function () {
return "[" + this.min + "," + this.max + "]" ;
}

Copie ce code sur un calque à part sur ta timeline principal, que tu
peux appeler par exemple "Range" :)

Ensuite plus loin dans ton code faudrait faire un truc du style :

var len = dtel.length ; // pas besoin de calculer la longueur à chaque fois

var r1 = new Range(0, 80) ; // rang1 [0,80]
var r2 = new Range(81,86) ; // rang2 [81,86]
var r3 = new Range(87,92) ; // rang3 [87,92]
var r4 = new Range(93,110) ; // rang4 [93, 110]

if (!r1.isOutOfRange(len))
{
trace("r1 : " + len) ;
field1.text = dtel ;
}
else if (!r2.isOutOfRange(len))
{
trace("r2 : " + len) ;
field2.text = dtel ;
}
else if (!r3.isOutOfRange(len))
{
trace("r3 : " + len) ;
field3.text = dtel ;
}
etc....

3 - A noter que tu calcules à chaque fois la longueur avec length() ..
autant le faire une fois au début avec une petite variable temporaire !
cela facilite ainsi les calculs.

4 - A noter qu'il est préférable d'utiliser un champ de texte dynamique
en pensant qu'il appartient à la classe TestField et que depuis flashMX
il faut leur donner des noms d'occurence dans le panneau de propriété
(est plus un nom de variable) et utiliser la propriété TextField.text
comme je le fais dans mon exemple au dessus :)

5 - la syntaxe length(truc) ... comme tu l'écris dans ton code... tu
cherches à calculer la longueur de quoi exactement ?? une chaine de
caractère ?
Dans tous les cas je sais pas quelle version de flash tu utilises ? Mais
ce type de syntaxe ne s'écrit plus depuis Flash5 ! :)

EKA+ :)





Digipole a écrit :
Bonjour

Sur flash 2004, j'ai fait le code suivant

if ( length(dtel) < 81 )
{
vtel121 = dtel ;
}
if ( 80 < length(dtel) < 87 )
{
vtel118 = dtel ;
}
if ( 86 < length(dtel) < 93 )
{
vtel115 = dtel ;
}
if ( 92 < length(dtel) < 110 )
{
vtel107 = dtel ;
}
if ( 109 < length(dtel) < 117 )
{
vtel100 = dtel ;
}

Or quand j'active le flash, les 5 blocs texte (vtel121, vtel118, etc.) sont
remplis du texte dtel.

J'ai du faire une erreur dans la syntaxe lui indiquant qu'il ne doit activer
que si la longueur est inf?rieur ? x et sup?rieure ? Y, mais je ne vois pas
laquelle.

Je pourrais travailler avec des "else" en poup?e russes, mais je suis certain
qu'il y a une solution plus propre.



Avatar
ykar
"Digipole" a écrit dans le message de news:
dqqgcf$hig$

if ( 80 < length(dtel) < 87 )
{
vtel118 = dtel ;
}



tu devrais utiliser plutot des opérateurs logiques
( 80 < length(dtel) < 87)
deviendrait :
(80 < length(dtel) ET length(dtel)< 87

ce qui s'ecrit en Flash avec le signe &&

if ( 80 < length(dtel) && length(dtel)< 87 )
{
vtel118 = dtel ;
}

Voila

sinon tu pourrais tester aussi la fonction (switch)
avec (dtel)
cas 1
cas 2

Yannick
cas 3
etc...
Avatar
ykar
Ekameleon a raison,

Tu devrais calculer le length(dtel) une fois pour toute avant de faire
ta serie de tests.

Yannick
Avatar
Digipole
Non, ?a c'est sur que quand on a un employeur dont le principe, pour faire
imag?, est de continuer ? foncer droit devant quand un pneu ?clate car ?a
prendrait trop de temps de s'arr?ter pour le changer, on ne fait pas toujours
dans la dentelle et parfois on pare au plus press? sans approfondir.
Cela dit, si ?a peut te rassurer, pour mes r?alisations personnelles, je vais
au fond des choses (comme tu l'as lu, je fabriques mes sites en html sur simple
text, ? l'?re des wysiwyg gratuits, c'est une sorte de foi absolue que de
continuer ? coder son html ? mains nues).