2017-03-11 4 views
0
<script type="text/paperscript" canvas="paper"> 
    function onKeyDown(event) { 
     alert('key pressed');   
     function onFrame(event) { 
      console.log('frames running'); 
     } 
    } 
</script> 

Der folgende Code funktioniert, aber das obige nicht. Warum wird das onFrame-Ereignis nicht ausgelöst, wenn es als Anweisung verwendet wird?paperjs: Warum funktioniert das onFrame-Ereignis nicht, wenn es sich im onKeyDown-Ereignis befindet?

function onKeyDown(event) { 
    alert('key pressed');   
    view.onFrame = function(event) { //This line is makes a difference 
     console.log('frames running'); 
    } 
} 

Auch in dem folgenden Code, wenn ich die view.onFrame Methode verwenden, skaliert der Kreis nach unten, aber abrupt stoppt, wenn eine andere Taste gedrückt wird.

function onKeyDown(event) { 
    var circle = new Path.Circle((view.size * Point.random()), 50); 
    circle.fillColor = 'purple'; 
    view.onFrame = function(event) { 
     circle.scale(.9); 
    } 
} 

Antwort

0

Sorry, zu spät zur Party, weil ich die gleiche Frage wie der letzte Teil Ihrer Post haben, aber ich es herausgefunden.

Verwenden Sie auf Ihrem letzten Code circle.onFrame anstelle von view.onFrame, damit der erstellte Kreis weiterhin animiert und Sie können nach jedem onKeyDown Ereignis weiterhin neue Kreise erstellen.

Wie für den ersten Teil, ich bin mir nicht sicher, warum, aber ich habe es auch zuerst versucht, bevor Sie Ihre Frage finden, also danke.

Verwandte Themen