diff --git a/src/engine/runtime.js b/src/engine/runtime.js index 041ee625c..803069c56 100644 --- a/src/engine/runtime.js +++ b/src/engine/runtime.js @@ -382,6 +382,10 @@ Runtime.prototype.greenFlag = function () { this.stopAll(); this.ioDevices.clock.resetProjectTimer(); this.clearEdgeActivatedValues(); + // Inform all targets of the green flag. + for (var i = 0; i < this.targets.length; i++) { + this.targets[i].onGreenFlag(); + } this.startHats('event_whenflagclicked'); }; diff --git a/src/engine/target.js b/src/engine/target.js index 63f90b0d9..ee1cc9089 100644 --- a/src/engine/target.js +++ b/src/engine/target.js @@ -27,6 +27,12 @@ function Target (blocks) { this.blocks = blocks; } +/** + * Called when the project receives a "green flag." + * @abstract + */ +Target.prototype.onGreenFlag = function () {}; + /** * Return a human-readable name for this target. * Target implementations should override this. diff --git a/src/sprites/clone.js b/src/sprites/clone.js index 9e4364806..1098fd16b 100644 --- a/src/sprites/clone.js +++ b/src/sprites/clone.js @@ -332,6 +332,14 @@ Clone.prototype.makeClone = function () { return newClone; }; +/** + * Called when the project receives a "green flag." + * For a clone, this clears graphic effects. + */ +Clone.prototype.onGreenFlag = function () { + this.clearEffects(); +}; + /** * Dispose of this clone, destroying any run-time properties. */