用Flash MX 2004自制调色版和配色组件(四)

博客介绍了ColorPicker类,其封装了HS色环和B亮度槽的MovieClip,分别对应ColorWheel和ColorTube两个类。还给出了这两个类的代码,包含初始化、鼠标事件处理等函数,代码中涉及import语句和类的定义等信息技术内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

王咏刚,2005年4月

ColorPicker类里封装了HS色环和B亮度槽的MovieClip,这两种MovieClip又分别对应了ColorWheel和ColorTube两个类。它们的代码如下:

import wix.*;
class wix.ColorWheel extends MovieClip
{
 private var pressed:Boolean;
 private var pointer:MovieClip = null;
 private var mask:MovieClip = null;
 
 public function init(p:MovieClip, m:MovieClip) {
  pointer = p;
  mask = m;
 }
 
 public function ColorWheel() {
  pressed = false;
  this.onMouseDown = doPress;
  this.onMouseUp = doRelease;
  this.onMouseMove = doMove;
 }
 
 private function doPress(){
  if (enabled) {
   if (mask.hitTest(_root._xmouse, _root._ymouse, true)) {
    pressed = true;
    doMove();
   }
  }
 }
 
 private function doRelease() {
  if (enabled)
   pressed = false;
 }
 
 private function doMove() {
  if (enabled) {
   if (pressed && pointer && mask ) {
    if (mask.hitTest(_root._xmouse, _root._ymouse, true)) {
     pointer._x = _parent._xmouse;
     pointer._y = _parent._ymouse;
     _parent.updateHSB();
    }
    else {    
     var x1 = _parent._xmouse - this._x - this._width / 2;
     var y1 = _parent._ymouse - this._y - this._height / 2;
     var theta = ColorMan.getThetaByXY(x1, y1);    
     _parent.setHSB(theta, 100, null);
    }    
   }
  }
 }
 
 public function setBrightness(brightness:Number) {
  if (enabled)
   this._alpha = brightness;
 }
}


import wix.ColorMan;
class wix.ColorTube extends MovieClip
{
 private var pressed:Boolean;
 private var pointer:MovieClip = null;
 
 public function init(p:MovieClip) {
  pointer = p;
 }
 
 public function ColorTube() {
  pressed = false;
  this.onMouseDown = doPress;
  this.onMouseUp = doRelease;
  this.onMouseMove = doMove;
 }
 
 private function doPress(){
  if (enabled) {
   if (this.hitTest(_root._xmouse, _root._ymouse, true) ||
     pointer.hitTest(_root._xmouse, _root._ymouse, true)) {
    pressed = true;
    doMove();
   }
  }
 }
 
 private function doRelease() {
  if (enabled)
   pressed = false;
 }
 
 private function doMove() {
  if (enabled) {
   if (pressed && pointer) {
    pointer._y = Math.min(Math.max(this._y + 2, _parent._ymouse),
              this._y + this._height - 2);
    _parent.updateHSB();
   }
  }
 }
 
 public function paint(h:Number, s:Number) {
  if (enabled) {
   var b, rgb:Number;
   this.clear();
   for(b = 0; b <= 100; b++)
   {
    rgb = ColorMan.hsb2rgbValue(h, s, b);  
    this.lineStyle(2, rgb, 100);
    this.moveTo(2, 203 - b * 2);
    this.lineTo(19, 203 - b * 2);
   }
  }
 }
}

……未完待续……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值