OVH Cloud OVH Cloud

probl?me dans un code tr?s simple

5 réponses
Avatar
SaluCseb
Salut ? tous,
je suis d?butant en ActionScript et j'ai un probl?me sur un code que je crois
a priori tr?s simple. Voila de quoi il s'agit :
Je veux afficher automatiquement n clips texte (4 en l'occurence) ? i*10 point
d'intervales en y. Vous me suivez ? Voila le code que j'ai pondu mais rien ne
s'affiche. Qqun saurait-il m'expliquer pourquoi ?

n=4
menu=;
for (var i=0; i<=n; i++){
var titre = this.createTextField("titre"+i,i,100,10*i,300,100);
titre.text = menu;
}

Merci pour votre aide !

5 réponses

Avatar
ekameleon
Hello :)

Tu es sur flash8 ou pas ? :) car tu peux pas récupérer de référence vers
un champ de texte dynamique créé via createTextField si tu n'est pas sur
Flash8 et si tu ne compiles pas pour le FP8 :)

Sinon pour être certain que tout fonctionne je te conseille de taper :

var n = 4 ;

var menu = "un texte" ; // tu aurais pas oublié de mettre une valeur à
ta variable ?

for (var i=0; i<=n; i++){
this.createTextField("titre"+i,i,100,10*i,300,100);
var titre = this["titre"+i] ; // marche sur tout Flash Player depuis
le 6
titre.text = menu + i ;
titre.border = true ; // petit test pour bien afficher le champ de
texte dans tous les cas.
}

EKA+ :)

SaluCseb a écrit :
Salut ? tous,
je suis d?butant en ActionScript et j'ai un probl?me sur un code que je crois
a priori tr?s simple. Voila de quoi il s'agit :
Je veux afficher automatiquement n clips texte (4 en l'occurence) ? i*10 point
d'intervales en y. Vous me suivez ? Voila le code que j'ai pondu mais rien ne
s'affiche. Qqun saurait-il m'expliquer pourquoi ?

n=4
menu=;
for (var i=0; i<=n; i++){
var titre = this.createTextField("titre"+i,i,100,10*i,300,100);
titre.text = menu;
}

Merci pour votre aide !




Avatar
SaluCseb
Salut kameleon,
merci beaucoup pour ta r?ponse. En effet je n'utilise pas Flash8 et je pr?f?re
compiler pour des versions ant?rieures ?FP8, pour de plus gdes chances de
compatibilit?.
Dans le code que tu m'as pass? une chose ne fonctionne pas :

titre = this. > le d?bugger me dit qu'il y a une erreur : "Un nom de champ est
attendu apr?s l?op?rateur '.' "

Sinon pour r?pondre a une autre question :
"var menu = "un texte" ; // tu aurais pas oubli? de mettre une valeur ?
ta variable ?" : ma variable est un tableau dans lequel je vais chercher mes
textes : menu=;

Voila. Qu'en penses-tu ?
Encore merci
Avatar
ekameleon
Hello :)

J'en pense que :

1. j'ai pas écrit titre = this. mais : var titre = this["titre"+i] !!!
Notation entre crochet, exemple :

var o = new Object ;
o.a = 1 ;
trace(o.a) ; // syntaxe pointée
trace(o["a"]) ; // pareil mais syntaxe entre crochet

2 - tu devrais appuyer sur F1 et lire un peu l'aide de flash à mon avis
car là tu as du rater pas mal de petite chose dedans ;) Et que tout
débutant se doit de la lire un minimum ;) Ce genre de problème est
expliqué dedans :)

3 - Si tu utilises un tableau dans menu ... je pouvais pas le savoir
quand tu ne le précise pas... en général quand tu parcours un tableau il
vaut mieux taper :

var menu = [ "accueil", "rubrique1", "rubrique2", "rubrique3"] ;

var n = menu.length ; // super important de bien calculer la taille du
tableau en dehors de la boucle for

for (var i=0; i<=n; i++){
this.createTextField("titre"+i,i,100,10*i,300,100);
var titre = this["titre"+i] ; // marche sur tout Flash Player depuis
le 6
titre.text = menu[i] ;
titre.border = true ; // petit test pour bien afficher le champ de
texte dans tous les cas.
}

EKA+ :)



SaluCseb a écrit :
Salut kameleon,
merci beaucoup pour ta r?ponse. En effet je n'utilise pas Flash8 et je pr?f?re
compiler pour des versions ant?rieures ?FP8, pour de plus gdes chances de
compatibilit?.
Dans le code que tu m'as pass? une chose ne fonctionne pas :

titre = this. > le d?bugger me dit qu'il y a une erreur : "Un nom de champ est
attendu apr?s l?op?rateur '.' "

Sinon pour r?pondre a une autre question :
"var menu = "un texte" ; // tu aurais pas oubli? de mettre une valeur ?
ta variable ?" : ma variable est un tableau dans lequel je vais chercher mes
textes : menu=;

Voila. Qu'en penses-tu ?
Encore merci



Avatar
Seb
Bonjour,

"ekameleon" a écrit dans le message de news:
dt5lbk$aik$

var n = menu.length ; // super important de bien calculer la taille du
tableau en dehors de la boucle for



pourquoi est-ce tellement "super important"

tu penses qu'on gagne en temps process (?) à faire
var n = menu.length
for (var i=0; i<=n; i++){
//...
}

plutôt que
for (var i=0; i<=menu.length; i++){
//...
}

--
Seb
Avatar
ekameleon
Hello :)

C'est vrai que l'on peut se dire que c'est inutile ! Sur des petits
tableau il est certain que tu vas pas gagné beaucoup ... mais faut
jamais oublier que flash est limité dans le temps au niveau de
l'utilisation des boucles for, while etc... et des récursions (256
récursions maxi) et si un jour tu te retrouves à coder sur une appli de
+ en + complexe et que d'un coup tu te rends compte que tu as cumulé des
erreurs d'optimisation depuis le départ et que ton swf se fige et te
renvoi une erreur de type "script limit"... tu devras alors reprendre
tout ton code pour changer ce genre de petit détail ;)

Du coup en prenant tout de suite l'habitude de bien déclarer la taille
de ton tableau une seule fois, tu verras que cela devient un réflexe et
que cela vaut vraiment le coup par la suite ;)

Exemple :

var timer:Number ;
var loop:Number = 200000 ;

var ar:Array = new Array ;
for (var i:Number = 0 ; i<loop ; i++) {
ar[i] = { index : i } ;
}


trace("--- test1") ;
timer = getTimer() ;
for (var i:Number = 0 ; i<ar.length ; i++) {
var index = ar[i].index ;
}
timer = getTimer() - timer ;
trace("result : " + timer + " ms") ;


trace("--- test2") ;
timer = getTimer() ;
var l:Number = ar.length ;
for (var i:Number = 0 ; i<l ; i++) {
var index = ar[i].index ;
}
timer = getTimer() - timer ;
trace("result : " + timer + " ms") ;

Panneau de sortie :

--- test1
result : 950 ms
--- test2
result : 898 ms

EKA+ :)



Seb a écrit :
Bonjour,

"ekameleon" a écrit dans le message de news:
dt5lbk$aik$

var n = menu.length ; // super important de bien calculer la taille du
tableau en dehors de la boucle for



pourquoi est-ce tellement "super important"

tu penses qu'on gagne en temps process (?) à faire
var n = menu.length
for (var i=0; i<=n; i++){
//...
}

plutôt que
for (var i=0; i<=menu.length; i++){
//...
}