颜色输入框

文档创建者:admin
浏览次数:36
最后更新:2025-06-20

颜色输入框 (ColorInput) 使用说明  
==============================

本组件集成了:  
• 左侧可调尺寸的颜色方块(嵌入到输入框内部)  
• 基于 `编辑框` 的文本输入(支持手动键入 `#rrggbb` 或 `0xRRGGBB`)  
• 弹出式颜色拾取器(方向 / 偏移可调)  
• 完整事件机制,外部可实时获知颜色变更  

──────────────────────────────  
1. 快速上手
──────────────────────────────
```js
// ① 创建实例并初始化
const colorInput = new 颜色输入框();
colorInput.初始化({
    默认颜色 : 0xff9933,   // 起始色
    宽度     : 200,        // 组件整体宽
    高度     : 30,         // 高
    色块宽度 : 22,         // 方块宽
    色块高度 : 22,         // 方块高
    间隙     : 6,          // 方块与文字间距
    圆角     : 6,          // 圆角半径
    弹出方向 : 'down',     // down/up/left/right
    弹出偏移X: 0,          // 拾色器额外 X 偏移
    弹出偏移Y: 0           // 拾色器额外 Y 偏移
});

// ② 加入舞台 / 容器
stage.addChild(colorInput.获取容器());

// ③ 监听颜色变化
colorInput.on('颜色改变', (c)=>{
    console.log('颜色改变:', c.hex);   // {rgb, hex, hsv, alpha}
});
```

──────────────────────────────  
2. 主要 API
──────────────────────────────
• `初始化(opts)`  创建组件  
• `获取容器()`   返回 `PIXI.Container` 可直接 addChild  
• `获取颜色()`   返回 `{rgb, hex, hsv, alpha}`  
• `设置颜色(value)` 可传 `0xffcc00` / `'#ffcc00'` / `'0xFFCC00'`  
• `设置弹出参数(dir, offX, offY)`  
  ‒ `dir`:`'down' | 'up' | 'left' | 'right'`  
  ‒ `offX/offY`:相对方向的额外像素偏移  
• `设置对齐方式(dir, offX, offY)`  
  旧版本保留,**仅支持 `'left' / 'right'`**,内部仍调用 `设置弹出参数`  
• `设置色块尺寸(w, h)` 动态修改方块宽高,输入偏移自动同步  
• `设置位置(x, y)`   移动组件  
• `设置宽高(类型, 宽, 高)`  
  0 固定像素 1 百分比/混合 3 最大不超过父容器  
• `销毁()`     资源释放  
• 事件:`'颜色改变'` → `(colorObj)=>{}`  

──────────────────────────────  
3. 常见用法示例
──────────────────────────────
1) 弹出在右侧并向右再偏移 10 px  
```js
colorInput.设置弹出参数('right', 10, 0);
```

2) 把色块改成 32 × 32,并保持组件高度一致  
```js
colorInput.设置色块尺寸(32, 32)
           .设置宽高(0, 240, 32);
```

3) 窗口缩放时按 80 % 宽度自适应  
```js
window.addEventListener('resize', ()=> {
    colorInput.设置宽高(1, '80%', 30);
});
```

4) 手动在输入框键入颜色  
输入完成 6 位十六进制后方块立即更新并触发 `颜色改变` 事件;  
过程中若格式不完整 / 非法将被忽略,不会报错。

──────────────────────────────  
4. 与其他组件联动示例
──────────────────────────────
```js
// 假设有个面板框组件,需要随颜色调整背景
panel.on('颜色改变', ({hex})=>{
    panel.设置背景颜色(parseInt(hex.replace('#','0x')), 1);
});

// 将两者关联
colorInput.on('颜色改变', c=>{
    panel.emit('颜色改变', c);  // 转发
});
```

至此即可轻松在项目中使用和扩展 `颜色输入框`。如需更多定制或发现问题,欢迎继续提出!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则