Skip to content

Commit daa8f67

Browse files
committed
fix: 修复背景图节点的渲染顺序
1 parent c2aeddd commit daa8f67

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

app/src/core/render/canvas2d/entityRenderer/EntityRenderer.tsx

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,40 @@ export class EntityRenderer {
8181
}
8282
}
8383

84+
/**
85+
* 检查实体是否应该被跳过渲染
86+
*/
87+
private shouldSkipEntity(entity: Entity, viewRectangle: Rectangle): boolean {
88+
return (
89+
entity instanceof Section ||
90+
entity instanceof PenStroke ||
91+
this.project.renderer.isOverView(viewRectangle, entity)
92+
);
93+
}
94+
95+
private isBackgroundImageNode(entity: Entity): boolean {
96+
return entity instanceof ImageNode && entity.isBackground;
97+
}
98+
8499
/**
85100
* 统一渲染所有实体
86-
* 返回实际渲染的实体数量
87101
*/
88102
renderAllEntities(viewRectangle: Rectangle) {
89-
let renderedNodes = 0;
103+
const entities = this.project.stageManager.getEntities();
90104

91-
// 2 遍历所有非section实体 / 非涂鸦实体
92-
for (const entity of this.project.stageManager.getEntities()) {
93-
if (entity instanceof Section) {
94-
continue;
105+
// 先渲染所有背景图片
106+
entities.forEach((entity) => {
107+
if (this.isBackgroundImageNode(entity) && !this.project.renderer.isOverView(viewRectangle, entity)) {
108+
this.renderEntity(entity);
95109
}
96-
if (entity instanceof PenStroke) {
97-
continue;
98-
}
99-
// 视线之外不画
100-
if (this.project.renderer.isOverView(viewRectangle, entity)) {
110+
});
111+
112+
// 再渲染所有非背景图片的实体
113+
for (const entity of entities) {
114+
if (this.isBackgroundImageNode(entity) || this.shouldSkipEntity(entity, viewRectangle)) {
101115
continue;
102116
}
103117
this.renderEntity(entity);
104-
renderedNodes++;
105118
}
106119
// 3 遍历所有section实体,画顶部大文字
107120
for (const section of this.project.stageManager.getSections()) {
@@ -123,7 +136,6 @@ export class EntityRenderer {
123136
}
124137
this.renderEntity(penStroke);
125138
}
126-
return renderedNodes;
127139
}
128140

129141
/**

app/src/core/render/canvas2d/renderer.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export class Renderer {
2727
w = 0;
2828
h = 0;
2929
// let canvasRect: Rectangle;
30-
renderedNodes: number = 0;
3130
renderedEdges: number = 0;
3231

3332
/**
@@ -547,7 +546,7 @@ export class Renderer {
547546
}
548547
}
549548
private renderEntities(viewRectangle: Rectangle) {
550-
this.renderedNodes = this.project.entityRenderer.renderAllEntities(viewRectangle);
549+
this.project.entityRenderer.renderAllEntities(viewRectangle);
551550
}
552551

553552
private renderEdges(viewRectangle: Rectangle) {
@@ -632,8 +631,8 @@ export class Renderer {
632631
`speed: ${this.project.camera.speed.x}, ${this.project.camera.speed.y}`,
633632
`window: ${this.w}x${this.h}`,
634633
`effect count: ${this.project.effects.effectsCount}`,
635-
`node count: ${this.renderedNodes} , ${this.project.stageManager.getTextNodes().length}`,
636-
`edge count: ${this.renderedEdges} , ${this.project.stageManager.getLineEdges().length}`,
634+
`node count: ${this.project.stageManager.getTextNodes().length}`,
635+
`edge count: ${this.project.stageManager.getLineEdges().length}`,
637636
`section count: ${this.project.stageManager.getSections().length}`,
638637
`pressingKeys: ${this.project.controller.pressingKeysString()}`,
639638
`鼠标按下情况: ${this.project.controller.isMouseDown}`,

0 commit comments

Comments
 (0)