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 {number} oldX - the previous X position.
* @param {number} oldY - the previous Y position.
* @param {boolean} isForce - whether the movement was forced.
* @private
*/
_onTargetMoved (target, oldX, oldY) {
const penSkinId = this._getPenLayerID();
if (penSkinId >= 0) {
const penState = this._getPenState(target);
this.runtime.renderer.penLine(penSkinId, penState.penAttributes, oldX, oldY, target.x, target.y);
this.runtime.requestRedraw();
_onTargetMoved (target, oldX, oldY, isForce) {
// Only move the pen if the movement isn't forced (ie. dragged).
if (!isForce) {
const penSkinId = this._getPenLayerID();
if (penSkinId >= 0) {
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.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);
}
@ -864,11 +864,10 @@ class RenderedTarget extends Target {
*/
postSpriteInfo (data) {
const force = data.hasOwnProperty('force') ? data.force : null;
if (data.hasOwnProperty('x')) {
this.setXY(data.x, this.y, force);
}
if (data.hasOwnProperty('y')) {
this.setXY(this.x, data.y, force);
const isXChanged = data.hasOwnProperty('x');
const isYChanged = data.hasOwnProperty('y');
if (isXChanged || isYChanged) {
this.setXY(isXChanged ? data.x : this.x, isYChanged ? data.y : this.y, force);
}
if (data.hasOwnProperty('direction')) {
this.setDirection(data.direction);