Merge pull request #881 from sjhuang26/issue-gui1127-pen-trails

No pen trails when dragging
This commit is contained in:
Paul Kaplan 2017-12-29 10:22:18 -05:00 committed by GitHub
commit 4fd7ba896a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 12 deletions

View file

@ -181,14 +181,18 @@ class Scratch3PenBlocks {
* @param {RenderedTarget} target - the target which has moved. * @param {RenderedTarget} target - the target which has moved.
* @param {number} oldX - the previous X position. * @param {number} oldX - the previous X position.
* @param {number} oldY - the previous Y position. * @param {number} oldY - the previous Y position.
* @param {boolean} isForce - whether the movement was forced.
* @private * @private
*/ */
_onTargetMoved (target, oldX, oldY) { _onTargetMoved (target, oldX, oldY, isForce) {
const penSkinId = this._getPenLayerID(); // Only move the pen if the movement isn't forced (ie. dragged).
if (penSkinId >= 0) { if (!isForce) {
const penState = this._getPenState(target); const penSkinId = this._getPenLayerID();
this.runtime.renderer.penLine(penSkinId, penState.penAttributes, oldX, oldY, target.x, target.y); if (penSkinId >= 0) {
this.runtime.requestRedraw(); const penState = this._getPenState(target);
this.runtime.renderer.penLine(penSkinId, penState.penAttributes, oldX, oldY, target.x, target.y);
this.runtime.requestRedraw();
}
} }
} }

View file

@ -203,7 +203,7 @@ class RenderedTarget extends Target {
this.x = x; this.x = x;
this.y = y; this.y = y;
} }
this.emit(RenderedTarget.EVENT_TARGET_MOVED, this, oldX, oldY); this.emit(RenderedTarget.EVENT_TARGET_MOVED, this, oldX, oldY, force);
this.runtime.requestTargetsUpdate(this); this.runtime.requestTargetsUpdate(this);
} }
@ -864,11 +864,10 @@ class RenderedTarget extends Target {
*/ */
postSpriteInfo (data) { postSpriteInfo (data) {
const force = data.hasOwnProperty('force') ? data.force : null; const force = data.hasOwnProperty('force') ? data.force : null;
if (data.hasOwnProperty('x')) { const isXChanged = data.hasOwnProperty('x');
this.setXY(data.x, this.y, force); const isYChanged = data.hasOwnProperty('y');
} if (isXChanged || isYChanged) {
if (data.hasOwnProperty('y')) { this.setXY(isXChanged ? data.x : this.x, isYChanged ? data.y : this.y, force);
this.setXY(this.x, data.y, force);
} }
if (data.hasOwnProperty('direction')) { if (data.hasOwnProperty('direction')) {
this.setDirection(data.direction); this.setDirection(data.direction);