From be12263b2a1cab43793d3a00c761cbbdb97132e1 Mon Sep 17 00:00:00 2001 From: Paul Kaplan <pkaplan@media.mit.edu> Date: Fri, 26 May 2017 08:06:50 -0400 Subject: [PATCH] Use setState callback for rotating costumes --- src/containers/sprite-library.jsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/containers/sprite-library.jsx b/src/containers/sprite-library.jsx index 6738bacd8..fb9a6ce03 100644 --- a/src/containers/sprite-library.jsx +++ b/src/containers/sprite-library.jsx @@ -14,7 +14,9 @@ class SpriteLibrary extends React.Component { 'handleItemSelect', 'handleMouseEnter', 'handleMouseLeave', - 'rotateCostume' + 'rotateCostume', + 'startRotatingCostumes', + 'stopRotatingCostumes' ]); this.state = { activeSprite: null, @@ -29,11 +31,17 @@ class SpriteLibrary extends React.Component { this.props.vm.addSprite2(JSON.stringify(item.json)); } handleMouseEnter (item) { - this.setState({activeSprite: item}); - if (this.intervalId) clearInterval(this.intervalId); - this.intervalId = setInterval(this.rotateCostume, 300); + this.stopRotatingCostumes(); + this.setState({activeSprite: item}, this.startRotatingCostumes); } handleMouseLeave () { + this.stopRotatingCostumes(); + } + startRotatingCostumes () { + if (!this.state.activeSprite) return; + this.intervalId = setInterval(this.rotateCostume, 300); + } + stopRotatingCostumes () { this.intervalId = clearInterval(this.intervalId); } rotateCostume () { -- GitLab