Problème de variable dans Flash

Mops Argo

Membre actif
28 Avril 2000
624
333
Bonsoir,

Je n'arrive pas à récupérer dans la fonction (ouverture), une variable déclarée (nom) par le on(release) d'un bouton. Ceci dans le but de charger une image du même nom que le bouton, du classique quoi

J'ai donc fait :

Sur le bouton :

Bloc de code:
on (release) {
    nom = this._name;
    ouverture();
}
et sur ma scène :
Bloc de code:
function ouverture() {
    photo_mc.loadPhoto("images/"+nom+".jpg");
}
merci à la bonne âme qui passera par là.
 
C'est un peu n'importe quoi :D
- teste la publication et tes variables après avoir appuyé sur le bouton (pomme-entrée, puis bouton, puis pomme-alt-V), tu verras que nom n'a pas de valeur ;
- loadPhoto n'existe pas, c'est loadMovie.

Essaie plutôt ça tout simplement, depuis ta timeline principale :
Bloc de code:
ouverture=function(nom){
     photo_mc.loadMovie("images/"+nom+".jpg");
}
bouton.onRelease=function(){
     ouverture(this._name);
}
;)
 
je ne pense pas que ce soit n'importe quoi. C'est juste qu'il y a du code avant que je n'avait pas mis. c'était ça :
Bloc de code:
space = 1;
photo_mc._alpha = 0;
MovieClip.prototype.loadPhoto = function(photo) {
    photo_mc._alpha = 0;
    this.loadMovie(photo);
    _level0.onEnterFrame = function() {
        // modified the total and loaded so as to round it up
        // to smaller number.
        var total = Math.round(photo_mc.getBytesTotal()/1024);
        var loaded = Math.round(photo_mc.getBytesLoaded()/1024);
        if (total != 0 && loaded>=total) {
            var w = photo_mc._width+space;
            var h = photo_mc._height+space;
            border.resize(w, h);
            delete this.onEnterFrame;
        }
    };
};
MovieClip.prototype.resize = function(w, h) {
    //the higher the slower the resize of the border
    var speed = 4;
    this.onEnterFrame = function() {
        this._width += (w-this._width)/speed;
        this._height += (h-this._height)/speed;
        if (Math.abs(this._width-w)<1 && Math.abs(this._height-h)<1) {
            this._width = w;
            this._height = h;
            photo_mc._x = this._x-this._width/2+space/2;
            photo_mc._y = this._y-this._height/2+space/2;
            photo_mc._alpha = 100;
            delete this.onEnterFrame;
        }
    };
};
C'est &#233;videmment un script que j'ai r&#233;cup&#233;r&#233; et que j'essaie d'adapter en cr&#233;ant une fonction alors qu'il y avait le m&#234;me script autant de fois que de boutons. Ce que je cherche c'est que tous les boutons aient le m&#234;me fonction: charger une image ayant le m&#234;me nom que le bouton.
Merci pour ton aide
 
Si tu ne dis pas tout... ;)

Bloc de code:
// cibles est un tableau qui stocke les noms de tes images, 
// &#233;ventuellement tu le constitues dynamiquement apr&#232;s le chargement d'un petit fichier xml, 
// comme &#231;a en cas de changement des images, tu n'as qu'&#224; modifier le fichier xml
var cibles=new Array("truc","bidule","machin","chose");
// fonction g&#233;n&#233;rique appel&#233;e par tous les boutons
ouverture=function(nom){
     photo_mc.loadMovie("images/"+nom+".jpg");
     // &#233;ventuellement ajouter la fonction de contr&#244;le de chargement et de recadrage
}
// fonction de construction des boutons
construction=function(){
	for(i=0;i < cibles.length;i++){
		_root.attachMovie("bouton_btn",cibles[i],i+1);
		// tu positionnes tes boutons dynamiquement comme tu en as envie
		_root[cibles[i]]._x=80*i;
		_root[cibles[i]]._y=50;
		// tu leur affectes leur fonction onRelease g&#233;n&#233;rique
		_root[cibles[i]].onRelease=function(){
			ouverture(this._name);
		}
	}
}
// initialisation du bazar
construction();
stop();
:)
 
Merci beaucoup pour le temps que tu m'accordes mais la construction dynamique est un sujet que je n'ai pas encore abordé :rose:
Je me contente de disposer des occurrences d'un bouton (pas de façon régulière) sur la scène et de leur attribuer une fonction. Tu vois que mon ambition ne va pas très loin mais, même pour cela, j'ai du mal.