kopia lustrzana https://github.com/backface/turtlestitch
Keep layering of nested sprites thru drag & drop
it used to be that dragging an anchor always brought it to the front, altering the nested sprite’s internal layering orderpull/3/merge
rodzic
4a3cf0aa3b
commit
f1fbb38b87
|
@ -2418,3 +2418,7 @@ ______
|
||||||
------
|
------
|
||||||
* BYOB: fixed #702
|
* BYOB: fixed #702
|
||||||
* GUI: fixed #680
|
* GUI: fixed #680
|
||||||
|
|
||||||
|
150121
|
||||||
|
------
|
||||||
|
* Objects: Keep layering of nested sprites thru drag & drop
|
||||||
|
|
27
objects.js
27
objects.js
|
@ -125,7 +125,7 @@ PrototypeHatBlockMorph*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.objects = '2015-January-12';
|
modules.objects = '2015-January-21';
|
||||||
|
|
||||||
var SpriteMorph;
|
var SpriteMorph;
|
||||||
var StageMorph;
|
var StageMorph;
|
||||||
|
@ -1315,6 +1315,7 @@ SpriteMorph.prototype.init = function (globals) {
|
||||||
this.anchor = null;
|
this.anchor = null;
|
||||||
this.nestingScale = 1;
|
this.nestingScale = 1;
|
||||||
this.rotatesWithAnchor = true;
|
this.rotatesWithAnchor = true;
|
||||||
|
this.layers = null; // cache for dragging nested sprites, don't serialize
|
||||||
|
|
||||||
this.blocksCache = {}; // not to be serialized (!)
|
this.blocksCache = {}; // not to be serialized (!)
|
||||||
this.paletteCache = {}; // not to be serialized (!)
|
this.paletteCache = {}; // not to be serialized (!)
|
||||||
|
@ -3158,6 +3159,7 @@ SpriteMorph.prototype.positionTalkBubble = function () {
|
||||||
|
|
||||||
SpriteMorph.prototype.prepareToBeGrabbed = function (hand) {
|
SpriteMorph.prototype.prepareToBeGrabbed = function (hand) {
|
||||||
var bubble = this.talkBubble();
|
var bubble = this.talkBubble();
|
||||||
|
this.recordLayers();
|
||||||
if (!bubble) {return null; }
|
if (!bubble) {return null; }
|
||||||
this.removeShadow();
|
this.removeShadow();
|
||||||
bubble.hide();
|
bubble.hide();
|
||||||
|
@ -3168,6 +3170,7 @@ SpriteMorph.prototype.prepareToBeGrabbed = function (hand) {
|
||||||
};
|
};
|
||||||
|
|
||||||
SpriteMorph.prototype.justDropped = function () {
|
SpriteMorph.prototype.justDropped = function () {
|
||||||
|
this.restoreLayers();
|
||||||
this.positionTalkBubble();
|
this.positionTalkBubble();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4045,6 +4048,28 @@ SpriteMorph.prototype.allAnchors = function () {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SpriteMorph.prototype.recordLayers = function () {
|
||||||
|
var stage = this.parentThatIsA(StageMorph);
|
||||||
|
if (!stage) {
|
||||||
|
this.layerCache = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.layers = this.allParts();
|
||||||
|
this.layers.sort(function (x, y) {
|
||||||
|
return stage.children.indexOf(x) < stage.children.indexOf(y) ?
|
||||||
|
-1 : 1;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
SpriteMorph.prototype.restoreLayers = function () {
|
||||||
|
if (this.layers && this.layers.length > 1) {
|
||||||
|
this.layers.forEach(function (sprite) {
|
||||||
|
sprite.comeToFront();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.layers = null;
|
||||||
|
};
|
||||||
|
|
||||||
// SpriteMorph highlighting
|
// SpriteMorph highlighting
|
||||||
|
|
||||||
SpriteMorph.prototype.addHighlight = function (oldHighlight) {
|
SpriteMorph.prototype.addHighlight = function (oldHighlight) {
|
||||||
|
|
Ładowanie…
Reference in New Issue