FLEX各种形状绘图例子
根据提供的文件信息,我们可以深入探讨 FLEX 中图形绘制的相关知识点,包括如何利用 ActionScript 进行基本图形的绘制。此文档适用于初学者了解并掌握在 FLEX 中如何使用 ActionScript 绘制各种形状。 ### 一、FLEX 中图形绘制的基础类 #### 1. GDI 类(Graphics Drawing Interface) `GDI` 类可以看作是图形绘制的一个接口,它提供了绘制线条、填充图形等基础功能。此类中包含了一些关键方法,如 `line()` 和 `fill()`,它们分别用于绘制线条和填充图形。 - **line() 方法**:该方法接收一个 `Pen` 对象和一个 `AbstractDraw` 对象作为参数。通过设置画笔样式、颜色和透明度来绘制线条。 - **fill() 方法**:用于填充图形。同样接收一个 `Brush` 对象和 `AbstractDraw` 对象作为参数。首先设置填充样式,然后绘制图形,并最终结束填充过程。 #### 2. AbstractDraw 类 这是一个抽象基类,所有具体的图形绘制类都应该继承自这个类。它提供了一个统一的接口来处理不同的图形绘制需求。 - **target 属性**:表示当前绘制的目标对象,通常是一个 `MovieClip` 实例。 - **draw() 方法**:这是个抽象方法,需要由子类实现。该方法用于定义具体的绘制逻辑。 ### 二、具体图形绘制类 #### 1. Line 类(直线) `Line` 类继承自 `AbstractDraw` 类,用于绘制直线。 - **构造函数**:接受四个参数 `x1`, `y1`, `x2`, `y2` 分别表示线段的起始点坐标和终点坐标。 - **draw() 方法**:实现具体的绘制逻辑,调用 `lineFunc()` 方法绘制直线。 ##### lineFunc 方法 此方法接受四个参数 `x1`, `y1`, `x2`, `y2`,用于实际绘制线段。 ```actionscript private function lineFunc(x1:Number, y1:Number, x2:Number, y2:Number):void { _target.moveTo(x1, y1); // 移动到起点 _target.lineTo(x2, y2); // 绘制到终点 } ``` #### 2. Rect 类(矩形) `Rect` 类同样继承自 `AbstractDraw` 类,用于绘制矩形。 - **构造函数**:接受四个参数 `x`, `y`, `w`, `h` 分别表示矩形左上角坐标、宽度和高度。 - **draw() 方法**:实现具体的绘制逻辑,调用 `rectFunc()` 方法绘制矩形。 ##### rectFunc 方法 此方法接受四个参数 `x`, `y`, `w`, `h`,用于实际绘制矩形。 ```actionscript private function rectFunc(x:Number, y:Number, w:Number, h:Number):void { _target.moveTo(x, y); // 移动到起点 _target.lineTo(x + w, y); // 绘制到右边 _target.lineTo(x + w, y + h); // 绘制到底边 _target.lineTo(x, y + h); // 绘制到左边 _target.lineTo(x, y); // 闭合路径 } ``` #### 3. Poly 类(多边形) `Poly` 类继承自 `AbstractDraw` 类,用于绘制多边形。 - **构造函数**:接受多个坐标点,用于构建多边形的各个顶点。 - **draw() 方法**:实现具体的绘制逻辑,调用 `polyFunc()` 方法绘制多边形。 ##### polyFunc 方法 此方法负责根据传入的坐标点绘制一个多边形。 ### 三、图形绘制实例 接下来,我们可以看看具体的绘制实例: 1. **绘制一条直线**:创建 `Line` 实例,设置画笔样式,并调用 `GDI` 的 `line()` 方法。 2. **绘制一个矩形**:创建 `Rect` 实例,设置填充样式,并调用 `GDI` 的 `fill()` 方法。 3. **绘制一个多边形**:创建 `Poly` 实例,设置填充样式,并调用 `GDI` 的 `fill()` 方法。 以上就是 FLEX 中使用 ActionScript 进行图形绘制的基本方法和步骤。通过对这些类和方法的理解与应用,初学者可以快速掌握 FLEX 中的图形绘制技术,并能够绘制出更多复杂的图形。
import fc.graphics*;
import fc.graphics.draw2d.AbstractDraw;
class fc.graphics.draw2d.GDI {
private var _target:MovieClip;
//设置和获取绘图的目标
public function get target() {
return _target;
}
public function set target(mc) {
_target = mc;
}
//画线方法
public function line(p:Pen, d:AbstractDraw) {
startPen(p);
d.target = _target;
d.draw();
endPen();
}
//填充方法
public function fill(b:Brush, d:AbstractDraw) {
startBrush(b);
d.target = _target;
d.draw();
endBrush();
}
private function startPen(p) {
}
private function endPen():Void {
_target.lineStyle(null, null, null);
}
private function startBrush(b:Brush) {
b.fill(_target);
}
private function endBrush() {
_target.endFill();
}
//清除绘图方法
public function clear():Void {
if (_target != null) {
_target.clear();
}
}
}
//抽象画图类
class fc.graphics.draw2d.AbstractDraw {
private var _target:MovieClip;
public function get target() {
return _target;
}
public function set target(mc) {
_target = mc;
}
剩余9页未读,继续阅读
- net-insect2011-10-09挺好的,已经用上了,谢谢
- lijingsong86862013-12-18没有派上用场,运行不了
- cc陈(Skylar)2012-11-27很好用的、、能跑程序
- 粉丝: 1
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot261高校专业实习管理系统的设计和开发_0303174040.zip
- springboot065基于智能推荐的卫生健康系统.zip
- springboot066人事系统.zip
- springboot262基于spring boot的小型诊疗预约平台的设计与开发.zip
- springboot067中小型医院网站.zip
- pcl源码point-types.h
- 双馈风机惯性控制参与系统一次调频的Matlab Simulink模型 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率19.4% 风机采用惯性控制,转速回复模块,在系统频率跌落时释放
- Radar Archetecture
- springboot069视频网站系统的设计与实现.zip
- springboot068桂林旅游景点导游平台.zip
- springboot262基于spring boot的小型诊疗预约平台的设计与开发_0303174040.zip
- springboot070基于springboot的大创管理系统.zip
- springboot263校园组团平台.zip
- springboot263校园组团平台_0303174040.zip
- springboot071基于springboot的图书进销存管理系统.zip
- springboot070基于springboot的大创管理系统_0303152757.zip