Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2005, 18h03   #1
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
Par défaut [AS2] Données XML et évènements

Bonjour, ceci est mon premier post et malheureusement commence par un problème...

Donc J'interface une animation Flash avec du XML. Je récupère les données dans un fichier externe et je voudrais qu'au survol d'un clip, je puisse reconstituer les données correspondantes à ce clip.

Pour ça j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
	longueur=xmlDoc.firstChild.childNodes.length;
for (var i=0; i<longueur;i++) { 
 
	var zonage = xmlDoc.firstChild.childNodes[i].attributes.zFlash;
	var titre = xmlDoc.firstChild.childNodes[i].attributes.titre;
	var type = xmlDoc.firstChild.childNodes[i].attributes.categorie;
	var descr = xmlDoc.firstChild.childNodes[i].attributes.descr;
	var lien = xmlDoc.firstChild.childNodes[i].attributes.lien;
	var logo = xmlDoc.firstChild.childNodes[i].attributes.image;
 
nomZone=eval(zonage+"_mc");
 
...
Ensuite le problème est que quand je crée un évènement : onRollOver, onRollOut ou onRelease d'un clip (nomZone), il sort de la boucle et m'affiche systématiquement les valeurs du dernier passage (j'ai 4 entrées dans le fichier XML et donc affiche la 4e entrée).

Alors j'ai essayé de stocker les valeurs dans un tableau, mais je ne sais pas trop comment ça fonctionne vu que je débute en AS2 :

après nomZone=eval.... j'ai rajouté ces lignes :

Code :
1
2
3
Occ=new Array();
	Occ.push(nomZone,titre,type,descr,lien,logo);
	//trace (Occ[0]);
le trace me donne 4 valeurs (zone1, zone2, zone3,zone4) (logique puisque je suis dans la boucle) mais Occ a t'il vraiment stocké ces 4 valeurs ? Car, après la boucle, j'appelle mes évènements :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
var lg =Occ.length;
	trace(lg);
			for (var i = 0; i<lg; i++) {
				trace(Occ[i]);
				this.Occ[0].onRollOver = function() {
				clearInterval(transp);
				details_mc.titre_txt.text=titre;
				details_mc.rubrique_txt.text=type;
				details_mc.descr_txt.text=descr;
				opac=setInterval(surbr, 30);
				}
 
				this.nomZone.onRollOut = function() {
				clearInterval(opac); 
				transp = setInterval(soubr, 30);
				trace(nomZone._alpha);
 
				}
 
				this.nomZone.onRelease = function() {
					getURL(lien, _parent);
 
				}	
			}
l'évènement RollOver est un essai, mais je n'arrive pas à récupérer ces fameuses 4 entrées.

Quand je teste Occ[0][0] il me met undefined.

Si quelqu'un peu éclairer ma lanterne?
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2005, 20h22   #2
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Hellop !!


d'abord, ceci est une erreur...
Code :
1
2
3
 
Occ = new Array();
Occ.push( nomZone, titre, type, descr, lien, logo );
la méthode push ne prend qu'un seul paramètre... ça peut être un paramètre de n'importe quel type, mais en aucun cas plusieurs...

Ce que tu cherche à faire, c'est ça :

Code :
1
2
3
4
5
 
Occ.push( [nomZone, titre, type, descr, lien, logo] );
 
// ou ça, c'est la même chose...
Occ.push( new Array( nomZone, titre, type, descr, lien, logo ) );
Dans un emplacement du tableau, je place un tableau. J'ai donc un tableau à 2 dimensions que je peux pointer avec la syntaxe

Ensuite, ça serai po mal si tu pointais vers Occ[i] plutot que NomZone ou Occ[0] lorsque tu affecte les gestionnaires d'évenements (dans la boucle for)
Toi tu fais l'affectation du rollOver sur Occ[0], donc toujours à l'index 0, et tu fais l'affectation de rollOut et release sur NomZone, donc tu vas écraser à chaque fois les gestionnaires affectés pour qu'il ne reste plus que le dernier affecté à tous...

Bon courage, à+
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 09h11   #3
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
Ok merci, je suis en train de faire des tests

Pour les évenements c'était juste un test donc j'avais pas tout mis en définitif mais plutot des controles avec des trace.

En fait un tableau à 2D c'est ce que je cherchais à faire mais je ne savais pas comment

Par contre j'ai essayé comme ca:

Code :
1
2
3
4
for (var i = 0; i<longueur; i++) {
 
Occ=new Array();
Occ.push(i);

Donc là j'ai bien Occ[0]=0, Occ[1]=1, etc...

mais quand je fais :

Code :
Occ[i].push( [nomZone,titre,type,descr,lien,logo]);
il me met des undefined quelque soit le test demandé et ne calcule plus la longueur du tableau.


Par rapport aux gestionnaires d'évènements, en fait je ferai un truc du genre ? :

Code :
1
2
3
4
5
6
var lg = Occ.length;
for (var j = 0; j<lg; j++) {
 
	var lgo = Occ[j].length;
 
		this.Occ[j][0].onRollOver = function() { ... }
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 10h27   #4
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Hello !!

Occ[i].push( [nomZone,titre,type,descr,lien,logo]);

ça, tu ne peux pas le faire, si Occ[i] n'a pas été défini.

D'abord tu défini Occ = new Array();

mais ensuite, tu essaye tout de suite de faire Occ[i].push([...]);

c'est juste Occ.push( [...] );

pas besoin de passer l'index... t'as intérêt à faire des tests avec les tableaux pour savoir un peu ce que tu fais, ça à pas l'air encore très clair...


Sinon, ton dernier code semble Ok, l'affectation du rollOver se fait bien sur Occ[j][0], qui correspond au mc à l'index j.

Bon courage, a++
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 11h11   #5
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
Oui en effet, je ne crois pas avoir tout compris

Si je fais : (toujours dans la boucle)

Code :
1
2
Occ=new Array();
Occ.push([..]);
sans indice, il me met tout sur Occ[0] (pas d'autre indice créé)

du coup Occ[0][...] ne me donne que la dernière entrée et ca revient au meme problème qu'avant

Ce qu'il me faudrait c'est pour l'entrée 1 avoir les infos a, b, c, l'entrée 2 avoir les infos a', b', c'

Donc je croyais que le i avait une place importante pour un tableau en 2D
Code :
1
2
3
4
5
Occ[0][0]=a
Occ[0][1]=b
Occ[1][0]=a'
Occ[1][1]=b'
//etc...
J'ai également essayé avec un
Occ.push(i);
et directement après avec
Occ.push([..]);

mais quelquesoient les écritures que je fasse, hors de la boucle il me donne toujours la dernière entrée.

j'ai également essayé Occ.push(i,[...]), Occ[i].push(i) ..., Occ.push([i],[...]),

Là je dois admettre que je suis un peu perdue....
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 11h21   #6
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Ton problème est en réalité tout simple


Dans ta boucle, tu fais :

Occ = new Array();
Occ.push( ... );


si tu fais "new Array()" dans la boucle, à chaque passage, Occ est réinitialisé en tant que tableau vide...

Tu dois initialiser le tableau en dehors de la boucle (avant), puis ça fonctionnera correctement

Bon courage, a++
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 11h32   #7
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
ah mais oui!!!!!


Pfff!! ca fait je sais pas combien de temps que je planche sur mon anim et j'avais carrément oublié ce petit morceau de 3 mots.... et de le déplacer!


Mille fois merci!!!
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 12h05   #8
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
Juste une pitite dernière question pour les évènements..

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
var lg = Occ.length;
 
for (var j = 0; j<lg; j++) {
 
		this.Occ[j][0].onRollOver = function() {
			clearInterval(transp);
			//si le titre n'est pas renseigné, on affiche le nom de la zone
			if (Occ[j][1]=="") {
				Occ[j][1]=Occ[j][0];
			}
			details_mc.titre_txt.text = Occ[0][1];
			trace(_root.details_mc.titre_txt.text);
			details_mc.rubrique_txt.text = Occ[0][2];
			details_mc.descr_txt.text = Occ[j][3];
			opac = setInterval(surbr, 30);
 
		};
		this.Occ[j][0].onRollOut = function() {
			clearInterval(opac);
			transp = setInterval(soubr, 30);
		};
		this.Occ[j][0].onRelease = function() {
			getURL(lien, _parent);
		};
}
//fonction alpha pour éclaircir et obscurcir sous l'action de la souris
surbr = function () {
 
	// on opacifie
	if (Occ[j][0]._alpha<100) {
		Occ[j][0]._alpha += 10;
	} else {
		clearInterval(opac);
	}
};
soubr = function () {
	if (Occ[j][0]._alpha>40) {
		Occ[j][0]._alpha -= 10;
	} else {
		clearInterval(transp);
		clearInterval(opac);
	}
};
Mon Occ[j][0] (ou meme les autres à l'intérieur) ne sont pas lus. J'ai essayé avec un eval mais ca ne change rien. Une boucle à l'intérieur de chaque évènement ne servirait à rien.
Comment je peux faire pour lui faire reconnaitre le j?
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 12h18   #9
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Essaye de faire des traces...

trace( Occ[j][0] );

et tu regarde dans la fenêtre de sortie ce qu'il t'affiche... si c'est une simple chaine de caractères ou bien si c'est un objet (movieClip). ça te permettra déjà de savoir sur quoi tu pointe avec l'index 0...

Après, à toi de faire les traces qu'il faut pour arriver à ton but


Bon courage, a++
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 12h32   #10
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
vivi j'en ai déjà fais pleins!

quand je fais un trace(Occ[j][0]) dans this.Occ[j][0].onRollOver ...
il me met un undefined

Quand je le met juste avant il me fait correctement la boucle "_level0......"
J'ai l'impression que dans l'évenement il ne comprend pas la variable j

Ah oui quand je fais un trace(typeof Occ[j][0]) (toujours hors de l'évenement) il me met bien 'movieclip'
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 13h15   #11
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Si tu pouvais baliser ton code, ça serai po mal pour la lecture

tu mets ton code entre 2 balises

{code}
{/code}

Attention, tu remplace les accolades { } par des crochets [ ]... car si je te met l'écriture avec des crochets, il va le parser en tant que code, et on verra rien...


en fait, je le fais avec ton dernier code et je regarde si je trouve quelque chose de bizarre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
var lg = Occ.length;
 
for (var j = 0; j<lg; j++) 
	{
	this.Occ[j][0].onRollOver = function() 
		{
		clearInterval(transp);
		//si le titre n'est pas renseigné, on affiche le nom de la zone
		if (Occ[j][1]=="") 
			Occ[j][1]=Occ[j][0];
 
		details_mc.titre_txt.text = Occ[0][1];
		trace(_root.details_mc.titre_txt.text);
		details_mc.rubrique_txt.text = Occ[0][2];
		details_mc.descr_txt.text = Occ[j][3];
		opac = setInterval(surbr, 30);
 
		};
	this.Occ[j][0].onRollOut = function() 
		{
		clearInterval(opac);
		transp = setInterval(soubr, 30);
		};
	this.Occ[j][0].onRelease = function() 
		{
		getURL(lien, _parent);
		};
	}
//fonction alpha pour éclaircir et obscurcir sous l'action de la souris
surbr = function () 
	{
	// on opacifie
	if (Occ[j][0]._alpha<100) 
		Occ[j][0]._alpha += 10;
	else 
		clearInterval(opac);
	};
soubr = function () 
	{
	if (Occ[j][0]._alpha>40) 
		Occ[j][0]._alpha -= 10;
	else
		{
		clearInterval(transp);
		clearInterval(opac);
		}
	};

A toute
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 13h39   #12
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Arf, oui, bien sur, j'aurai du réagir tout de suite par rapport à ton message...

ça ne fonctionne pas de cette manière... tu fais une erreur de base...


"this" représente la "portée courante".

la portée, c'est l'emplacement ou est exécuté le code...
Si tu place ton code sur la scène directement, on est sur la portée de la scène, _level0.
Si tu place ton code dans un clip "test" qui est sur la scène, nous sommes alors dans la portée du clip "test", donc _level0.test

Selon la portée, un code ne peut pas atteindre d'autre éléments directement...

Par exemple, admettons que j'ai sur la scène 1 clip nommé "test1" ainsi qu'un clip nommé "test2".

Si je code sur la scène, je peux les atteindre en faisant

Code :
1
2
3
4
5
 
trace( test1 );
trace( test2 );
trace( this.test1 );
trace( this.test2 );
Il ne faut pas oublier que this représente la portée courante, donc ici, la scène.


Maintenant, si je code dans "test1"... par exemple, sur la scène, je place ce code :

Code :
1
2
3
4
5
 
test1.onRollOver = function()
{
trace( this );
}
ça veut dire que j'affecte une méthode "onRollOver" sur mon clip, comme tu tente de le faire... le trace va me tracer "_level0.test1"...

Pourquoi donc ?? car je suis dans la portée du clip, et non plus celle de la scène. L'évenement onRollOver fait partie du clip, non pas de la scène, donc il est exécuté dans sa propre portée, celle du clip.


Donc pour reprendre, toi tu fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
for( ... )
{
// déjà, fait ça en premier :
// je récupère une référence au clip stocké dans le tableau.
// ensuite, je peux travailler avec elle
var mc = Occ[j][0];
mc.onRollOver = function()
{
// ici, tu appelle 
this.Occ[j][0];
}
}
Ce n'est pas logique. Tu es dans la portée de "mc", ton clip en cours, et tu fais appel à "this". Donc tu cherche un tableau Occ déclaré dans le clip, alors que ce dernier est déclaré sur la scène (ou ailleurs, je ne sais pas...)


Mais ton erreur est minime, car il suffit de virer les "this" pour que ça fonctionne...
Tu vas maintenant te demander pourquoi, alors que tu te trouve dans la portée du clip, tu pourrais atteindre Occ, qui lui est déclaré dans la portée de la scène... ça ne semble pas très logique, n'est-ce pas ??

Mais ça l'est, pourtant.

Tout ton code est sur la scène (enfin, j'imagine).

Si je fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
var mc = this.createEmptyMovieClip( 'mc', 1 );
var tab = new Array( "hello", " ", "world");
 
mc.onRollOver = function()
{
trace( this );
trace( _level0.mc );
trace( tab );
trace( this._parent.tab )
}
en fait, la sortie me donnera :
_level0.mc
_level0.mc
hello, , world
hello, , world


Je peux atteindre tab car il est déclaré dans le code au dessus, et l'affectation du gestionnaire se fait dans la portée de la scène (mc.onRollOver = function())

Maintenant, tu peux encore voir qu'on peut se déplacer pour pointer sur des éléments : dans le dernier code, j'ai fait : this._parent.tab

d'abord this, qui pointe le clip "mc", ensuite, _parent qui pointe vers le parent de "this", qui est la scène, et enfin, à partir de la scène, je peux pointer sur "tab", le tableau que j'ai créé.

A toi de faire des tests pour bien comprendre comment les portées fonctionnent.
Encore une chose. Essaye au maximum de faire du pointage relatif et non pas absolu...

C'est à dire utiliser this._parent.tab plutot que _level0.tab

Car si tout d'un coup tu veux charger ton swf (A.swf) dans un autre swf (B.swf), le _level0 correspondra au swf de base (B.swf), plus à celui de la véritable animation (A.swf).


Enfin, il y a encore un truc très intéressant qui est arrivé avec l'update de Flash MX 2004. La classe Delegate.

ça te permet d'exécuter du code dans une portée autre que celle qui est à la base...

Par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
// importation de la classe, en début de fichier
// avant tout autre déclaration :
 
import mx.utils.Delegate;
 
var mc = this.createEmptyMovieClip( 'mc', 1 );
var tab = new Array("hello", " ", "world");
 
mc.onRollOver = Delegate.create( this, myFunction )
 
function myFunction()
{
trace( this );
trace( _level0.mc );
trace( tab );
trace( this._parent.tab )
}
Cette fois, myFunction sera exécuté dans la portée de la scène, car le premier paramètre que je passe à la méthode Delegate.create est "this", correspondant à la portée de la scène.

Donc la sortie donnera :

_level0
_level0.mc
hello, , world
undefined

le dernier est indéfini, car _level0._parent n'existe pas.

Le Delegate est vraiment très utile, et permet de rendre ton code bien plus clair et épuré que lorsque tu dois toujours faire des appels à this._parent pour atteindre des éléments.


Bon courage et bons tests


A++
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 15h16   #13
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
merci pour l'explication , en fait ca al'air relativement complexe les niveaux d'autant plus que tout est généré dans le code et rien en graphique, donc je n'arrive pas forcément à me repérer

Donc j'ai bien mis mc comme variable

par contre si je stock Occ[j][1] dans une variable t, avec la meme hiérarchie il me sort la dernière entrée:

avant le rollover:
dans le rollover de mc:
Code :
1
2
trace(this._parent.Occ[j][1]) //--> undefined
trace(this._parent.t) //--> Dernière entrée (puisqu'il écrase tout)
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 15h42   #14
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
Tu vois, déjà tu as compris que t est écrasé à chaque fois et que c'est normal d'obtenir la dernière valeur

Pour ce que tu cherche à faire, je ferai comme suivant :

Code :
1
2
3
4
5
6
7
8
9
 
 
var mc = Occ[j][0];
 
// ensuite, toutes les valeurs, je les mémorise dans mon mc :
 
mc.titre = Occ[j][1];
mc.rubrique = Occ[j][2];
mc.desc = Occ[j][3];
puis ensuite, dans les gestionnaires, tu peux les récupérer :

Code :
1
2
3
4
5
6
7
 
mc.onRollOver = function()
{
trace( this.titre );
trace( this.rubrique );
trace( this.desc );
}
Et là, tu es sur que les bonnes valeurs sont affectées aux bons mc.

A++
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 15h49   #15
Invité de passage
 
Inscription : juillet 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 14
Points : 2
Points : 2
et titre, rubrique et desc on peut les manipuler comme on veut? ce seont de sméthodes?

En tout cas, merci beaucoup!
Je suis un peu un boulet en flash mais j'ai énormément appris grâce à toi!!! j'espère pouvoir en faire autant quand je maitriserai mieux le langage!!
scmilblick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2005, 16h09   #16
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
ce ne sont pas des méthodes mais des variables membres.

En fait, à la base, l'ActionScript n'est pas fortement typé, comme par exemple le C++.
Donc tu peux affecter à n'importe quel type d'objet à peu près n'importe quel type de données...

par exemple, lorsque tu fais :
Code :
1
2
 
mc.onRollOver = function() { ... }
tu affecte une fonction au movieClip. Ici, c'est une fonction existante (définie à undefined par défaut), donc tout roule. Mais tu pourrai tout à fait affecter une fonction personnalisée que tu appelera quand tu veux. par exemple :

Code :
1
2
3
 
mc.counter = 0;
mc.refreshCounter = function() { this.counter++; }
et chaque fois que tu fais

Code :
1
2
 
mc.refreshCounter() tu incrémente la valeur de "counter" de 1.
Tu peux affecter des variables et des méthodes sans problème, et les manipuler ensuite comme tu veux (mais il ne faut jamais oublier la portée sur laquelle tu te trouve )

Pour te donner un exemple concrèt, tu pourrais faire semblant que tes propriétés "titre", "desc" et "rubrique" sont des membres privés, donc tu n'y accède pas directement, mais tu crée des fonctions membres pour y accéder :

Code :
1
2
3
 
mc.getTitre = function() { return this.titre; };
mc.setTitre = function( valeur ) { this.titre = valeur };
et tu peux accéder à la valeur titre en faisant :
Code :
1
2
3
4
 
trace( mc.getTitre() );
mc.setTitre( "nouveau titre" );
trace( mc.getTitre() );
Par contre, si tu fais de l'AS2, qui lui peut être fortement typé, tu dois créer une classe qui va hériter de movieClip et l'affecter à ton mc, pour qu'il puisse contenir d'autre données et fonctions membres que celles qui sont existantes à la base (toutes les propriétés et fonctions natives de la classe movieClip).


Voilà, en espérant que ça te mette sur la bonne voie

A+
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h34.


 
 
 
 
Partenaires

Hébergement Web