@@ -15457,7 +15457,6 @@ var egret;
15457
15457
node.needRedraw = true;
15458
15458
}
15459
15459
if (node.needRedraw) {
15460
- drawCalls++;
15461
15460
var renderAlpha;
15462
15461
var m;
15463
15462
if (root) {
@@ -15474,7 +15473,7 @@ var egret;
15474
15473
context.setTransform(m.a, m.b, m.c, m.d, m.tx + matrix.tx, m.ty + matrix.ty);
15475
15474
}
15476
15475
context.globalAlpha = renderAlpha;
15477
- this.renderNode(node, context);
15476
+ drawCalls += this.renderNode(node, context);
15478
15477
node.needRedraw = false;
15479
15478
}
15480
15479
}
@@ -15490,7 +15489,7 @@ var egret;
15490
15489
continue;
15491
15490
}
15492
15491
if ((child.$blendMode !== 0 ||
15493
- (child.$mask && child.$mask.$parentDisplayList))) {
15492
+ (child.$mask && ( child.$mask.$parentDisplayList || root) ))) {
15494
15493
drawCalls += this.drawWithClip(child, context, dirtyList, matrix, clipRegion, root);
15495
15494
}
15496
15495
else if (child.$scrollRect || child.$maskRect) {
@@ -15522,17 +15521,19 @@ var egret;
15522
15521
}
15523
15522
var scrollRect = displayObject.$scrollRect ? displayObject.$scrollRect : displayObject.$maskRect;
15524
15523
var mask = displayObject.$mask;
15525
- if (mask && !mask.$parentDisplayList) {
15526
- mask = null; //如果遮罩不在显示列表中,放弃绘制遮罩。
15527
- }
15524
+ // if (mask && !mask.$parentDisplayList) {
15525
+ // mask = null; //如果遮罩不在显示列表中,放弃绘制遮罩。
15526
+ // }
15528
15527
//计算scrollRect和mask的clip区域是否需要绘制,不需要就直接返回,跳过所有子项的遍历。
15529
15528
var maskRegion;
15530
15529
var displayMatrix = egret.Matrix.create();
15531
15530
displayMatrix.copyFrom(displayObject.$getConcatenatedMatrix());
15532
- var displayRoot = displayObject.$parentDisplayList.root;
15533
- var invertedMatrix;
15534
- if (displayRoot !== displayObject.$stage) {
15535
- displayObject.$getConcatenatedMatrixAt(displayRoot, displayMatrix);
15531
+ if (displayObject.$parentDisplayList) {
15532
+ var displayRoot = displayObject.$parentDisplayList.root;
15533
+ var invertedMatrix;
15534
+ if (displayRoot !== displayObject.$stage) {
15535
+ displayObject.$getConcatenatedMatrixAt(displayRoot, displayMatrix);
15536
+ }
15536
15537
}
15537
15538
if (mask) {
15538
15539
var bounds = mask.$getOriginalBounds();
@@ -15570,11 +15571,16 @@ var egret;
15570
15571
region.updateRegion(bounds, displayMatrix);
15571
15572
}
15572
15573
var found = false;
15573
- var l = dirtyList.length;
15574
- for (var j = 0; j < l; j++) {
15575
- if (region.intersects(dirtyList[j])) {
15576
- found = true;
15577
- break;
15574
+ if (!dirtyList) {
15575
+ found = true;
15576
+ }
15577
+ else {
15578
+ var l = dirtyList.length;
15579
+ for (var j = 0; j < l; j++) {
15580
+ if (region.intersects(dirtyList[j])) {
15581
+ found = true;
15582
+ break;
15583
+ }
15578
15584
}
15579
15585
}
15580
15586
if (!found) {
@@ -15663,9 +15669,11 @@ var egret;
15663
15669
}
15664
15670
var m = egret.Matrix.create();
15665
15671
m.copyFrom(displayObject.$getConcatenatedMatrix());
15666
- var displayRoot = displayObject.$parentDisplayList.root;
15667
- if (displayRoot !== displayObject.$stage) {
15668
- displayObject.$getConcatenatedMatrixAt(displayRoot, m);
15672
+ if (displayObject.$parentDisplayList) {
15673
+ var displayRoot = displayObject.$parentDisplayList.root;
15674
+ if (displayRoot !== displayObject.$stage) {
15675
+ displayObject.$getConcatenatedMatrixAt(displayRoot, m);
15676
+ }
15669
15677
}
15670
15678
var region = egret.sys.Region.create();
15671
15679
if (!scrollRect.isEmpty()) {
@@ -15677,11 +15685,16 @@ var egret;
15677
15685
return drawCalls;
15678
15686
}
15679
15687
var found = false;
15680
- var l = dirtyList.length;
15681
- for (var j = 0; j < l; j++) {
15682
- if (region.intersects(dirtyList[j])) {
15683
- found = true;
15684
- break;
15688
+ if (!dirtyList) {
15689
+ found = true;
15690
+ }
15691
+ else {
15692
+ var l = dirtyList.length;
15693
+ for (var j = 0; j < l; j++) {
15694
+ if (region.intersects(dirtyList[j])) {
15695
+ found = true;
15696
+ break;
15697
+ }
15685
15698
}
15686
15699
}
15687
15700
if (!found) {
@@ -15717,9 +15730,10 @@ var egret;
15717
15730
* @private
15718
15731
*/
15719
15732
p.renderNode = function (node, context, forHitTest) {
15733
+ var drawCalls = 1;
15720
15734
switch (node.type) {
15721
15735
case 1 /* BitmapNode */:
15722
- this.renderBitmap(node, context);
15736
+ drawCalls = this.renderBitmap(node, context);
15723
15737
break;
15724
15738
case 2 /* TextNode */:
15725
15739
this.renderText(node, context);
@@ -15728,7 +15742,7 @@ var egret;
15728
15742
this.renderGraphics(node, context, forHitTest);
15729
15743
break;
15730
15744
case 4 /* GroupNode */:
15731
- this.renderGroup(node, context);
15745
+ drawCalls = this.renderGroup(node, context);
15732
15746
break;
15733
15747
case 5 /* SetTransformNode */:
15734
15748
context.setTransform(node.drawData[0], node.drawData[1], node.drawData[2], node.drawData[3], node.drawData[4], node.drawData[5]);
@@ -15737,6 +15751,7 @@ var egret;
15737
15751
context.globalAlpha = node.drawData[0];
15738
15752
break;
15739
15753
}
15754
+ return drawCalls;
15740
15755
};
15741
15756
/**
15742
15757
* @private
@@ -15755,12 +15770,15 @@ var egret;
15755
15770
context.save();
15756
15771
context.transform(m.a, m.b, m.c, m.d, m.tx, m.ty);
15757
15772
}
15773
+ var drawCalls = 0;
15758
15774
while (pos < length) {
15775
+ drawCalls++;
15759
15776
context.drawImage(image, data[pos++], data[pos++], data[pos++], data[pos++], data[pos++], data[pos++], data[pos++], data[pos++]);
15760
15777
}
15761
15778
if (m) {
15762
15779
context.restore();
15763
15780
}
15781
+ return drawCalls;
15764
15782
};
15765
15783
/**
15766
15784
* @private
@@ -15863,12 +15881,14 @@ var egret;
15863
15881
}
15864
15882
};
15865
15883
p.renderGroup = function (groupNode, context) {
15884
+ var drawCalls = 0;
15866
15885
var children = groupNode.drawData;
15867
15886
var length = children.length;
15868
15887
for (var i = 0; i < length; i++) {
15869
15888
var node = children[i];
15870
- this.renderNode(node, context);
15889
+ drawCalls += this.renderNode(node, context);
15871
15890
}
15891
+ return drawCalls;
15872
15892
};
15873
15893
/**
15874
15894
* @private
0 commit comments