2016-03-28 2 views
1

ich die Antwort hier für revert auf diesem Thread angewandt (Adding a function to jQuery draggable revert "event"), aber ich habe immer noch ein Problem. Wenn das falsche Symbol in das Pulldown-Menü verschoben wird, wird das Manager-Symbol aus irgendeinem Grund nicht an seinem Platz angezeigt, sondern versteckt und zeigt das richtige Symbol an, wenn es nicht zurückgesetzt wird und korrekt ist. Die Rückmeldung ist falsch, welches ist was soll. Alle anderen kehren zurück und zeigen Feedback wie erwartet, wenn ich sie in das falsche Dropable lege. Das ist seltsam, dass man anders handeln würde. Alle richtigen tun, was sie tun sollen. Das Setup: Ich habe einen langen Hintergrund mit Symbolen, die mit Keydown-Ereignissen beweglich sind. Auf der Oberseite habe ich einen (festen) Balken mit den Droppables und den versteckten Symbolen, die auf korrekt ziehbarem erscheinen werden, während die tatsächlichen ziehbaren Elemente sich verstecken. Dies liegt daran, dass sich die ziehbaren Elemente ansonsten mit dem Hintergrund bewegen würden, da es sich um ein anderes div als die Leiste handelt, in der sich die drop-fähigen Elemente befinden.
Hoffe das macht Sinn.Einer meiner revert Objekte für Drag n Drop mit der Funktion ist auf halbem Weg falsch in Adobe Edge Animate

var icons = ['GOALS','CUSTOMER','MANAGER','PRODUCT','PRICE','DELIVER','BALANCE']; 

for(j=0;j<icons.length;j++){  
    sym.$(icons[j]).addClass('drag'+j); 
    // each draggable corresponds to a droppable 
    // by class name indexed 
    sym.$('.drag'+j).draggable({  
     revert: function(obj){ 
      if(obj===false){     
       // add feedback screen and sound and revert icon 
       sym.$('wrong').attr('src',"images/wrongSpot.png"); 
       sym.$('wrong').animate({'top': 23},1000);  
       sym.$("incorrectFX")[0].play();   
       return true; 
      }else{ 
       return false; 
      }// end if else statement   
     }// end revert 
    });// end draggable 

    sym.$('d'+j).droppable({ 
     accept: ".drag"+j, 
     drop: dropEvent 
    }); // end droppable 
} // end for loop 

k = 0; 
function dropEvent(event, ui){ 
    ui.draggable.position({ of: $(this), my: 'center', at: 'center' }); 
    ID = ui.draggable.attr("id").replace('Stage_',''); 
    console.log('this is the id name: ' + ID); 
    sym.$('wrong').animate({'top': 23},1000); 
    // replace wrong image with goodJob image since it is correct 
    sym.$('wrong').attr('src',"images/goodJob.png");  
    if (music.paused) { 
     sym.$("correctFX")[0].pause(); 
    } else { 
     sym.$("correctFX")[0].currentTime = 0; 
     sym.$("correctFX")[0].play(); 
    } 
    // since the droppable area is independant of the bg which move 
    // I implemented a substitute icon in the fixed area 
    sym.$(""+ID+"Copy").css({'opacity':1.0}); // show icon on the bar 
    sym.$(""+ID+"").css({'opacity': 0});  // hide the draggable icon 
    // count the number of correct to show feedback 
    k++; 
    if(k==7){ 
     sym.$('complete').animate({"left":0},700); 
     sym.$("completionFX")[0].play(); 
     sym.$('wrong').animate({'top':450},1000); 
    } 
} // end dropevent function 
+0

Sie nie eine Antwort auf Ihre andere Frage ausgewählt: http://stackoverflow.com/questions/36203393/how-to-disable-a-draggable-even- if-droped-in-wrong-droppable/36206380 # comment60050830_36206380 - Hat dies für Sie funktioniert? Können Sie das Jsfiddle-Beispiel aktualisieren, um dieses neue Problem darzustellen? – Twisty

+0

Nein, ich kann es aus irgendeinem Grund nicht funktionieren lassen. Ich denke, das hat mit der Tatsache zu tun, dass Edge Animate die Dinge ein wenig anders macht. Ich gebe jedoch nicht auf. Dieser neue ist auch ein wenig frustrierend. Hier ist ein Link dazu: http://mjpagedesign.com/fundraiser/ Wenn Sie anfangen, müssen Sie den oberen Bildschirm mit dem Pfeil nach unten bekommen. Dann können Sie Manager als falsch versuchen und sehen, was passiert. Versuchen Sie dann, eine andere Antwort falsch zu machen und Sie werden sehen, dass sie OK funktioniert. Seltsam. Mit diesen habe ich normalerweise kein Problem. :( – Edgedudette

+0

Nicht vertraut mit Rande, aber nicht, dass ich davon abhalten entweder gehen zu lassen. Will einen Blick darauf werfen. – Twisty

Antwort

0

Wenn Sie nur ein Problem von Index 2 Ihres Arrays auftreten, die MANAGER enthält, würde dies den folgenden Code erstellen:

sym.$('MANAGER').addClass('drag2'); 

Wenn Sie irgendwelche anderen Klassen, die drag2 sind, diese würde einen Konflikt in der Auswahl verursachen. Überprüfen Sie den Code für alle Klassen oder IDs, die andere passen könnte als

+0

Die for-Schleife gibt MANAGER die Klasse drag2, die im Konflikt mit einer anderen Schleife war, die später im Code auch mit Drag2 verwendet wurde. Große Einsicht. Vielen Dank. – Edgedudette