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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 各种字符串相似度和距离算法的实现Levenshtein、Jaro-winkler、n-Gram、Q-Gram、Jaccard index、最长公共子序列编辑距离、余弦相似度…….zip
- 运用python生成的跳跃的爱心
- 包括用 Java 编写的程序 欢迎您在此做出贡献!.zip
- (源码)基于QT框架的学生管理系统.zip
- 功能齐全的 Java Socket.IO 客户端库,兼容 Socket.IO v1.0 及更高版本 .zip
- 功能性 javascript 研讨会 无需任何库(即无需下划线),只需 ES5 .zip
- 分享Java相关的东西 - Java安全漫谈笔记相关内容.zip
- 具有适合 Java 应用程序的顺序定义的 Cloud Native Buildpack.zip
- 网络建设运维资料库职业
- 关于 Java 的一切.zip