代码是横向Slider组件的基本代码,注意onMouseMove函数部分。
在计算Rectangle的时候,对于高度,可以计算,也可以设置为0。代码执行效果完全一样。
由于少了一步的计算,对改善性能有些许贡献。
package {
import com.bit101.components.List;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
public class test1 extends Sprite {
private var a:Sprite;
private var b:Sprite;
public function test1() {
//设置舞台与浏览器的相对位置
stage.align = StageAlign.TOP_LEFT;
//设置舞台是否随浏览器尺寸缩放:不缩放
stage.scaleMode = StageScaleMode.NO_SCALE;
a = new Sprite();
a.graphics.beginFill(0x000000);
a.graphics.drawRect(0, 0, 100, 20);
a.graphics.endFill();
a.x = 100;
a.y = 100;
addChild(a);
b = new Sprite();
b.graphics.beginFill(0x0000ff);
b.graphics.drawRect(0, 0, 20, 20);
b.graphics.endFill();
b.x = 100;
b.y = 100;
addChild(b);
b.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
}
private function onMouseDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function onMouseMove(e:MouseEvent):void
{
var rec:Rectangle = new Rectangle(a.x,
a.y,
a.width - b.width,
a.height - b.height);
//var rec:Rectangle = new Rectangle(a.x,
//a.y,
//a.width - b.width,
//0);
b.startDrag(false, rec);
}
private function onMouseUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
b.stopDrag();
}
}
}