begin process at 2012 05 27 18:58:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

problème this et root


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème this et root

lundi 4 avril 2005 à 16:11:56 | problème this et root

mailys6

J'ai un petit souci dans la fonction suivante :

 this['Lb'+i].onRelease= function()
 {
      this.stopDrag();
     cible = this._droptarget.substring(1);
     this._x= _root[cible]._x;
     this._y = _root[cible]._y;
 }

C'est une fonction simple. J'ai un clip dont le nom commence par "Lb" suivi d'un numéro. Ce clip est créer dynamiquement avec createEmptyMovieClip. Lorsque je lâche le clip, si il y a un clip en dessous, alors je veux qu'il se mette aux mêmes coordonnées.
La fonction ci dessus fonctionne, seulement des paramètres qui ne dépendent pas de moi font que je ne peux utiliser _root[]. Dans ce cas, que dois-je utiliser ? J'ai essayé this  :
this._x= this[cible]._x
mais ça ne marche pas. C'est compréhensible car dans ma fonction this est l'objet courant donc "Lb"+ i. Mais sinon je ne vois pas comment faire référence à "cible" qui se trouve sur la scène et qui est lui aussi un clip créer dynamiquement. Une idée ?

Merci d'avance

Mailys

lundi 4 avril 2005 à 17:25:18 | Autre problème !

mailys6

Dans la même fonction, j'ai également un autre problème. La cible étant un clip créée dynamiquement, je crois que je n'arrive pas à le voir.
Je m'explique :
   Pour chaque clip que je veux déplacer, je crée un clip cible, de manière dynamique

this.createEmptyMovieClip('Lb'+i, a);
this.createEmptyMovieClip('Label'+i, a);

Label1 est la cible de Lb1, Label2 est la cible de Lb2 ... Je précise que Lb1, Lb2 ... contiennent un TextField, créer dynamiquement avec createTextField.

A l'origine Lb1, Lb2 ... sont placés à droite. Label1, Label2 ... sont placés sur un schéma. L'utilisateur doit placer correctement Lb1 sur Label1, Lb2 sur Label2 ...

Avec la fonction suivante, je n'arrive pas à récupérer le nom d'un clip créer dynamiquement.

this['Lb'+i].onRelease= function()
 {
      this.stopDrag();
     cible = this._droptarget.substring(1);
     this._x= _root[cible]._x;
     this._y = _root[cible]._y;
 }


C'est à dire, si je crée un clip avec l'interface de flash, et que je lâche Lb1, Lb2 ... sur ce clip, la variable "cible" de la fonction retourne bien le nom du clip. Mais si je lâche Lb1, Lb2 ... sur un clip que j'ai créée dynamiquement, "cible" est vide.

Est-ce donc impossible à faire ?
Merci pour votre réponse !

Maïlys
mardi 5 avril 2005 à 00:45:10 | Re : problème this et root

goldenboy68

extrait de ton message:

this.createEmptyMovieClip('Lb'+i, a);
this.createEmptyMovieClip('Label'+i, a);

tu crées dynamiquement 2 clips à la même profondeur! Change déjà ça...si ça marche pas...revient! lol

@+! Samy
mardi 5 avril 2005 à 10:25:53 | Re : problème this et root

mailys6

C'était une bonne idée. Malheureusement entre les deux, j'incrémente "a". J'pensais que tu avais trouvé la solution à mon problème, mais non. J'vais encore galérer aujourd'hui. Voici l'intégrité de mon code, au cas où tu aurais une autre idée :

// NbLabels est mon nombre d'étiquettes à faire
for(i = 1 ;i<=currentQuizQuestion.NbLabels;i++)
{
    a = a +1;

//Création du format du texte
    myfmt = new TextFormat();
    myfmt.font = "Microsoft Sans Serif";
    myfmt.size = 10;
    myfmt.align = "center";

//Création du premier clip, qui est placé sur le côté
    this.createEmptyMovieClip('Lb'+i, a);
    this['Lb'+i]._x = this._x + this._width - currentQuizQuestion.Labels[i].getW()-20;
    this['Lb'+i]._y = nextLabel;

    a = a + 1;

//Création d'un texte dans le movieClip
    this['Lb'+i].createTextField('Txt'+i, a, 0,0, currentQuizQuestion.Labels[i].getW(), currentQuizQuestion.Labels[i].getH());

//Paramétrage du texte
    with(this['Lb'+i][['Txt'+i]])
    {
        text = currentQuizQuestion.Labels[i].Txt;
        setTextFormat(myfmt); 
        background = true;
        backgroundColor = "0x" + currentQuizQuestion.DefaultColor;
        border = true;
        wordWrap=true;
        selectable = false;
    }
    nextLabel = nextLabel + this['Lb'+i]._height + 10;   // Pour placer les étiquettes les une en dessous des autres
 
    a = a + 1;

//Création du clip qui servira de cible
    this.createEmptyMovieClip("Label" + i,a);
//On dispose ce clip autour d'une image
    this['Label'+i]._x = currentQuizQuestion.Labels[i].getX();
    this['Label'+i]._y = currentQuizQuestion.Labels[i].getY();
    this['Label'+i]._width = currentQuizQuestion.Labels[i].getW();
    this['Label'+i]._height = currentQuizQuestion.Labels[i].getH();
//Pour chaque étiquette il peut y avoir plusieurs flèches
    for(j=1;j<=currentQuizQuestion.Labels[i].getNbArrow();j++)
    {
        a = a + 1;
//Création de la flèche
        this.createEmptyMovieClip('Arrow'+j,a);
//Paramétrage et création de la ligne
        with(this['Arrow'+j])
        {
            lineStyle(currentQuizQuestion.ArrowBorder,"0x" + currentQuizQuestion.ArrowColor,100);
            if(this['Label'+i]._x<this._width/2)   //L'étiquette est à gauche de l'image
                moveTo(this['Label'+i]._x + this['Label'+i]._width,this['Label'+i]._y + this['Label'+i]._height/2);   //On fait la ligne du coin droit vers l'image
            else   //Sinon on fait la ligne du coin gauche vers l'image
                moveTo(this['Label'+i]._x ,this['Label'+i]._y + this['Label'+i]._height/2);
            lineTo(currentQuizQuestion.Labels[i].Arrows[j].ArX,currentQuizQuestion.Labels[i].Arrows[j].ArY);
        }
    }
//Définition des fonctions de déplacement
 this['Lb'+i].onPress = function()
 {
     this.startDrag();
 }
 this['Lb'+i].onRelease= function()
 {
     this.stopDrag();
     cible = this._droptarget.substring(1);   //On récupère le clip qui est en dessous
   //On applique les coordonnées du clip du dessous au clip lâché
     this._x= _root[cible]._x;                     
     this._y = _root[cible]._y;
  }
}

C'est bizar que j'arrive à récupérer un clip "fixe" et pas un clip créer dynamiquement. Est-ce une limite de Flash ?

Merci d'avance en tout cas

Mailys

mardi 5 avril 2005 à 11:20:28 | Re : problème this et root

goldenboy68

Réponse acceptée !
Re,

...avec les 2 lignes qui se suivaient, j'avais pas vu de a++! lol

J'vais jeter un oeil à ton code...mais c'est plus pratique de travailler sur le .fla pour voir où sont les erreurs (sans avoir à se casser la tête pour refaire un nouveau fichier qui pourrait marcher avec ton code...suis un peu fénéant ce matin!)

...première idée: quand tu testes ton animation, va voir dans "Déboguer", "lister les objets"...tu verras le chemin exact où est créé ton clip dynamiquement...

@+! Samy

PS: gold_samuel-codessources@yahoo.fr
mardi 5 avril 2005 à 14:22:50 | Re : problème this et root

goldenboy68

Réponse acceptée !
Voilà:

this['Lb'+i].onRelease= function()
    {
        this.stopDrag();
        cible_testSamy = String(eval(this._droptarget)); //eval permet de récupérer _level0.nomduclip au lieu de /nomduclip
        cible_testSamy=cible_testSamy.substring(8,cible_testSamy.length-5); // le 8, pour supprimer _level0. et -5 pour supprimer .txt1 (si t'as plus de 10 labels...faudra tester et mettre -6, ou alors créer des txt01 )
        trace(cible_testSamy);
        this._x= this._parent[cible_testSamy]._x;
        this._y = this._parent[cible_testSamy]._y;
        //PS: ça marche pour un des 2 clips créés dynamiquement...mais y'a la méthode...suffira juste de voir avec swapDepths() par exemple sur le onPress() et le onRelease()
    }

...en espérant que ce soit suffisant pour répondre à ta question!

@+! Samy
mardi 5 avril 2005 à 15:45:10 | Re : problème this et root

goldenboy68

Réponse acceptée !
aller, pour être complet:

    this['Lb'+i].onPress = function()
    {
        this.swapDepths(1000); //c'est suffisant apparemment, pas besoin de gérer sur onRelease
        this.startDrag();
    }

@+! Samy


Cette discussion est classée dans : fonction, clip, root, cible, lb


Répondre à ce message

Sujets en rapport avec ce message

Changer clip en fonction de la date [ par caroel ] Bonjour tout le monde !Je débute avec actionscript et il y a un truc que je pige pas...Je voudrais mettre un clip différent (de la bibliothèque) sur l hitTest et clip animé [ par claviskass ] Salut.Ici mon code, un « hitTest » tout simple, mais voilà dés que je touche "place" mon clip "cible" ne joue pas sa série de frames en utilisant le " question sur angle de sourie, rotation de clip.... [ par flow38 ] Salut alors, voila pour un site j'ai fait une interface ou face a un coffre fort l'internaute devra faire tourner les bagues afin d'obtenir le bon cod _root.link [ par julesz ] Bonjour à tous,J'ai quelques difficulté à faire évoluer un site développé en Flash :Les boutons de mon menu utilisent la fonction suivante pour affich problème au survol d'un clip dans une zone cible [ par ouiart ] J’ai une bande composée de plusieurs images qui sont des clips, l’ensemble des images est un clip, et le tout fonctionne parfaitement “tel quel” mais Lire une animation a l'envers...pas un clip!!! [ par timore ] RZAREKBOnsoir, je voulais savoir si il existe le moyen de rembobiner une animation.J'ai trouver ceci:Rewind = function(cible) {    cible.prevFrame(); Déclaration d'une fonction dans un clip [ par yahrou ] Voilà, j'explique mon problème.C'est simple, je veux associer une fonction à un clip. J'ai un clip nommé "des" dans le lequel je déclare une fonction Besoin d'aide [ par korrigan33 ] Alors voila :j'ai une animation externe que je voudrais charger dans mon fla mais que les variables _root de cette animation reste dans le clip ou j'a faire apparaitre un movie clip en fonction de la position du curseur [ par stofkriii ] bonjour, j'aimerai declencher la lecture d'un movie clip lorsque le curseur de la souris pénètre dans une zone bien delimitée (52x150 pixels), ce movi pb drag and drop [ par tibo_c ] Bonjour tout le monde,Je fais actuellement une appli où j'ai besoins de faire un drag and drop d'une image d'un clip (type ajax) pour l'emmener dans u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales