HumanBreak/docs/api/motajs-render-core/Container.md

119 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Container 类 API 文档
本文档由 `DeepSeek R1` 模型生成并微调。
---
## 继承关系
```mermaid
graph LR
Container --> RenderItem --> EventEmitter
```
## 属性说明
| 属性名 | 类型 | 默认值 | 说明 |
| ---------------- | -------------- | ------ | ------------------------------ |
| `sortedChildren` | `RenderItem[]` | `[]` | 按 `zIndex` 排序后的子元素列表 |
---
## 构造方法
### `constructor`
**参数**
- `type`: 渲染模式(`absolute` 绝对定位 / `static` 跟随摄像机)
- `cache`: 是否启用渲染缓存
- `fall`: 是否启用变换矩阵下穿机制
**示例**
```typescript
const container = new Container('static');
```
---
## 方法说明
### `appendChild`
```typescript
function appendChild(...children: RenderItem[]): void;
```
**描述**
添加子元素并触发重新排序。
**示例**
```typescript
const child = new RenderItem('static');
container.appendChild(child); // 添加子元素
```
---
### `removeChild`
```typescript
function removeChild(...child: RenderItem[]): void;
```
**描述**
移除指定子元素并触发重新排序。
**示例**
```typescript
container.removeChild(child); // 移除子元素
```
---
### `requestSort`
```typescript
function requestSort(): void;
```
**描述**
标记需要重新排序子元素(在下一帧前自动执行)。
---
### `forEachChild`
```typescript
function forEachChild(fn: (ele: RenderItem) => void): void;
```
**描述**
遍历元素的每一个子元素DFS 遍历),并对每一个元素执行函数。
---
## 总使用示例
```typescript
// 创建基础容器
const baseContainer = new Container('absolute');
baseContainer.size(800, 600);
// 添加子元素
const sprite1 = new Sprite('static');
sprite1.pos(100, 100).setZIndex(2);
baseContainer.appendChild(sprite1);
const sprite2 = new Sprite('static');
sprite2.pos(200, 200).setZIndex(1);
baseContainer.appendChild(sprite2);
// 将容器添加到根元素
rootElement.appendChild(baseContainer);
// 动态修改子元素层级
sprite1.setZIndex(0); // 自动触发重新排序
```