|
您说得对,面板框组件目前缺少与其他组件一致的 `设置宽高` 方法,无法支持三种尺寸设置模式(固定像素、百分比、最大不超父容器)。
我会为面板框组件添加这个方法:
我发现面板框.js文件中的设置宽度和设置高度方法被移除了,让我添加回来并保留设置宽高方法:
现在我需要更新使用文档,包含新增的设置宽高方法:
# 面板框 (Panel Frame) 使用文档 - 更新版
## 基本介绍
面板框组件提供可拖动、可缩放、带标题栏的面板容器,支持动画特效,可用于创建对话框、信息面板、设置窗口等界面元素。
## 创建与初始化
### 基本创建方式
```javascript
// 创建面板框实例
var 面板 = new 面板框();
// 初始化面板框
面板.初始化({
宽度: 400,
高度: 300,
标题文本: '面板标题',
标题对齐: 'center'
});
// 添加到舞台
app.stage.addChild(面板.获取容器());
```
### 配置选项
初始化时可传入以下选项:
| 参数 | 类型 | 默认值 | 说明 |
|-----|------|-------|------|
| 宽度 | Number | 400 | 面板宽度 |
| 高度 | Number | 300 | 面板高度 |
| 背景颜色 | Number | 0xf8f8f8 | 背景颜色 (十六进制) |
| 边框颜色 | Number | 0xcccccc | 边框颜色 |
| 边框宽度 | Number | 1 | 边框宽度 |
| 圆角 | Number | 4 | 圆角大小 |
| 标题栏高度 | Number | 32 | 标题栏高度 |
| 标题栏颜色 | Number | 0xe0e0e0 | 标题栏背景颜色 |
| 标题文本 | String | '面板' | 标题文本 |
| 标题颜色 | Number | 0x333333 | 标题文本颜色 |
| 标题字体 | String | 'Arial' | 标题字体 |
| 标题大小 | Number | 14 | 标题字体大小 |
| 标题对齐 | String | 'left' | 标题对齐方式: 'left', 'center', 'right' |
| 标题左边距 | Number | 10 | 标题左边距 |
| 允许拖动 | Boolean | true | 是否允许整个面板被拖动 |
| 允许标题拖动 | Boolean | true | 是否允许通过标题栏拖动 |
| 允许缩放 | Boolean | true | 是否允许缩放大小 |
| 缩放手柄大小 | Number | 16 | 缩放手柄区域大小 |
| 缩放手柄颜色 | Number | 0xcccccc | 缩放手柄颜色 |
| 最小宽度 | Number | 100 | 最小允许宽度 |
| 最小高度 | Number | 100 | 最小允许高度 |
| 允许穿透 | Boolean | false | 是否允许穿透 |
| 调试模式 | Boolean | false | 是否启用调试模式 |
## 方法列表
### 位置相关
```javascript
// 设置面板位置
面板.设置位置(x, y);
// 单独设置X坐标
面板.设置X坐标(x);
// 单独设置Y坐标
面板.设置Y坐标(y);
// 获取位置
var 位置 = 面板.获取位置(); // 返回 {x, y}
```
### 尺寸相关
```javascript
// 设置面板尺寸 - 固定像素
面板.设置尺寸(宽度, 高度);
// 单独设置宽度
面板.设置宽度(宽度);
// 单独设置高度
面板.设置高度(高度);
// 高级尺寸设置(支持三种模式)
面板.设置宽高(类型, 宽度, 高度);
// 类型:
// 0 - 固定像素 (如: 设置宽高(0, 400, 300))
// 1 - 百分比/混合 (如: 设置宽高(1, '50%', '70%'))
// 3 - 最大不超父容器 (如: 设置宽高(3, 500, 400))
```
### 内容管理
```javascript
// 添加内容到面板
面板.添加内容(元素); // 元素可以是任何PIXI显示对象
// 清空面板内容
面板.清空内容();
// 获取内容容器
var 内容容器 = 面板.获取内容容器();
```
### 标题管理
```javascript
// 设置标题文本
面板.设置标题('新标题');
```
### 动画效果
```javascript
// 显示面板(带动画)
面板.显示(动画类型, 持续时间);
// 动画类型: '无', '渐显', '缩放', '弹出'
// 持续时间: 毫秒,默认300
// 隐藏面板(带动画)
面板.隐藏(动画类型, 持续时间);
// 动画类型: '无', '渐隐', '缩小', '收起'
// 持续时间: 毫秒,默认300
```
### 其他
```javascript
// 获取容器对象
var 容器 = 面板.获取容器();
// 销毁面板
面板.销毁();
```
## 事件监听
```javascript
// 监听面板尺寸变化事件
面板.获取容器().on('尺寸更新', function(尺寸) {
console.log('面板尺寸已更新:', 尺寸.宽度, 尺寸.高度);
});
```
## 使用示例
### 基本用法示例
```javascript
// 创建面板框实例
var 面板 = new 面板框();
面板.初始化({
宽度: 400,
高度: 300,
标题文本: '示例面板',
标题对齐: 'center',
背景颜色: 0xffffff,
边框颜色: 0x3498db,
标题栏颜色: 0x3498db,
标题颜色: 0xffffff
});
// 设置面板位置
面板.设置位置(100, 100);
// 添加到舞台
app.stage.addChild(面板.获取容器());
// 添加内容
var 文本 = new PIXI.Text('这是面板内容', {
fontFamily: 'Arial',
fontSize: 16,
fill: 0x333333
});
文本.position.set(20, 20);
面板.添加内容(文本);
```
### 尺寸设置示例
```javascript
// 创建面板
var 面板 = new 面板框();
面板.初始化({ 标题文本: '自适应面板' });
app.stage.addChild(面板.获取容器());
// 设置固定像素尺寸
面板.设置宽高(0, 400, 300);
// 设置为窗口一半大小(百分比)
面板.设置宽高(1, '50%', '50%');
// 设置最大尺寸(不超过窗口)
面板.设置宽高(3, 800, 600);
// 窗口大小变化时自动调整面板尺寸
window.addEventListener('resize', function() {
面板.设置宽高(1, '60%', '70%');
});
```
### 动画效果示例
```javascript
// 创建显示按钮
var 显示按钮 = new 按钮();
显示按钮.初始化(50, 50, 120, 40, {
文本: '显示面板',
背景颜色: 0x2ecc71
});
app.stage.addChild(显示按钮.获取容器());
// 创建隐藏按钮
var 隐藏按钮 = new 按钮();
隐藏按钮.初始化(20, 60, 120, 40, {
文本: '关闭面板',
背景颜色: 0xe74c3c
});
// 添加点击事件
显示按钮.获取容器().on('点击', function() {
面板.显示('弹出', 500); // 使用弹出动画,持续500毫秒
});
// 将隐藏按钮添加到面板内
面板.添加内容(隐藏按钮.获取容器());
// 添加隐藏按钮的点击事件
隐藏按钮.获取容器().on('点击', function() {
面板.隐藏('渐隐', 300); // 使用渐隐动画,持续300毫秒
});
```
### 嵌套组件示例
```javascript
// 创建面板
var 面板 = new 面板框();
面板.初始化({
宽度: 500,
高度: 400,
标题文本: '列表面板'
});
面板.设置位置(200, 150);
app.stage.addChild(面板.获取容器());
// 在面板中添加列表框
var 列表 = new 列表框();
列表.初始化({
宽度: 480,
高度: 320,
数据列表: [
{ 文本: '项目1', 值: 1 },
{ 文本: '项目2', 值: 2 },
{ 文本: '项目3', 值: 3 }
],
表头数据: [
{ 文本: '名称', 宽度: 240 },
{ 文本: '值', 宽度: 240 }
]
});
列表.设置位置(10, 10);
面板.添加内容(列表.获取容器());
// 监听面板尺寸变化事件,动态调整列表尺寸
面板.获取容器().on('尺寸更新', function(尺寸) {
// 更新列表框尺寸 - 使用类型0(固定像素)
列表.设置宽高(0, 尺寸.宽度 - 20, 尺寸.高度 - 面板.选项.标题栏高度 - 20);
});
```
## 注意事项
1. 面板默认支持通过标题栏拖动,可通过设置 `允许标题拖动: false` 禁用
2. 面板默认支持通过右下角缩放手柄调整大小,可通过设置 `允许缩放: false` 禁用
3. 添加到面板的内容,其坐标系相对于面板内容区域的左上角
4. 销毁面板时,会自动清除所有内部组件和事件监听
5. 设置宽高方法支持三种类型(0,1,3),可满足不同场景的尺寸需求
|
|