2016-12-09 6 views
0

Je fais un glisser-déposer lorsque plusieurs éléments doivent être placés sur la même cible. J'ai le code d'action sur la ligne de temps principale et le code attaché à un sprite.L'objet ne revient pas à sa position d'origine lorsqu'il est relâché cs4

Problèmes:

  1. Lorsque je libère l'objet si elle est correcte, il devrait accrocher au-dessus de cette section. Si elle est incorrecte, elle doit revenir à son orientation d'origine pour être ramassée. Malheureusement, il reste là où je l'ai placé, et ne retourne pas à l'endroit d'origine quand il est incorrect. J'ai corrigé d'autres problèmes avec ce fichier flash pour savoir si le code est supposé être sur la ligne de temps principale ou dans l'image-objet, mais cela ne semble pas avoir d'effet après la sortie de l'objet. Près de la fin du script il y a _root.rlamp1.gotoAndPlay(1) c'est un buzzer qui se déclenche si la réponse est incorrecte. Cela fonctionne correctement. Je ne sais pas si ce sont des articles connexes mais si le placement correct est donné je veux que l'article suivant commence dans la position originale, mais il commence là où ma souris est au lieu de la position originale. Je suis relativement nouveau au codage et j'essaie de faire une activité pour mon cours de science pour obtenir une rétroaction instantanée pour voir s'ils comprennent le concept.

Merci pour votre aide.

// [Action in Frame 1] 

answername = Array(); 
answerdest = Array(); 
answername[0] = "gravel"; 
answerdest[0] = "1"; 
answername[1] = "nuts and bolts"; 
answerdest[1] = "1"; 
answername[2] = "oxygen"; 
answerdest[2] = "2"; 
answername[3] = "helium"; 
answerdest[3] = "2"; 
answername[4] = "gold"; 
answerdest[4] = "2"; 


     dbCount = 0; 

     dbutton.duplicateMovieClip("dbutton" + dbCount,dbCount * 100); 

     dbutton.visible = false; 

     dbutton0.answer = answerdest[dbCount]; 

     dbutton0.theText.text = answername[dbCount]; 



    // This code is on the sprite and not on the main actionscript 

    onClipEvent (load) 
    { 
     this.defx = _x; 
     this.defy = _y; 
     if (this.theText.text.length > 20) 
     { 
      this.theText._height = 31; 
      this.theBox._height = 27; 
     } 
     else 
     { 

      this.theText._height = 19; 
      this.theBox._height = 19; 
     } // end else if 
    } 
    on (press) 
    { 
     if (this.noDrag !=true) 
     { 
      startDrag (this,false); 
     } 
    } 


    on (release) 
    { 
     if (this.noDrag != true) 
     { 
      stopDrag(); 
      if(this.hitTest(_root["dz" + this.answer])) 
      { 
       totalHeight = 0; 
       for (v = 0; v < _root.dbCount; v++) 
       { 
        if (_root["dbutton" + v].answer == this.answer) 
        { 
         totalHeight = totalHeight + _root["button" + v].theBox._height ; 
        } // end if 
       } // end of for 
       ++_root.dbCount; 
       this .duplicateMovieClip("dbutton" + _root.dbCount, _root.dbCount * 100); 
       _root["dbutton" + _root.dbCount]._x = this.defX; 
       _root["dbutton" + _root.dbCount]._y = this.defY; 
       _root["dbutton" + _root.dbCount].answer = _root.answerdest[_root.dbCount + 1]; 
       _root["dbutton" + _root.dbCount].theText.text = _root.answername[_root.dbCount +1]; 
       if (_root["dbutton" + _root.dbCount].theText.text == "undefined") 
       { 
        _root["dbutton" + _root.dbCount].theText.text = "Finished!"; 
        _root["dbutton" + _root.dbCount].noDrag = true; 
       } // end if 
       this.noDrag = true; 
       this._y = _root["dz" + this.answer]._y + totalHeight; 
       this._x = _root["dz" + this.answer]._x - _root["dz" + this.answer]._width/2; 
       ++_root["dz" + this.answer].numItems; 
       _root.glamp1.gotoAndPlay (1); 

      } 
      else 
      { 
       this.X = this.defX; 
       this._Y = this.defY; 
       _root.rlamp1.gotoAndPlay(1); 
      } // end if 
     } // end else if 
    } 
+0

est-ce vraiment actionScript 3? –

+0

Le code qui ressemble particulièrement à fishy est 'onClipEvent (load)' et 'on (presse)' et 'on (release)'. Ce n'est pas la syntaxe AS3. Où est-ce que tu as trouvé ça? Ces lignes ne font-elles pas des erreurs folles ?! Cela ressemble à quelque chose dont je me souviens d'AS2. Comme il ne génère pas d'erreur, je suppose que vous n'utilisez pas une version de débogage de Flash. Essayez d'exécuter votre code avec Ctrl + Maj + Entrée pour exécuter en mode débogage et laissez-moi savoir quelles erreurs il lance. –

+0

Je l'ai exécuté en utilisant ctrl + shift + enter et aucune erreur ne se produit. Le code a été obtenu en décompilant un fichier swf qui fait ce que je veux qu'il fasse, une fois que je trouve le code que je veux changer les éléments afin que cela corresponde à mes objectifs. – user7259892

Répondre

0

Le problème est qu'il existe des noms de variables mal orthographiés et des propriétés dans le code d'image-objet.

Remplacer ces lignes

this.X = this.defX; 
this._Y = this.defY; 

avec ces lignes

this._x = this.defx; 
this._y = this.defy; 

et votre code devrait fonctionner.