Flash ActionScript 3.0(6) - 绘图之图形和转换
2009-03-10 11:58:01 来源:WEB开发网2、转换
在 UI 上放置 3 个 Silder
分别名为:sliderScaleX, sliderScaleY, sliderRotate
分别用于演示 X 轴方向上的缩放,Y 轴方向上的缩放,旋转
再放置 2 个 Button
分别名为:btnMatrix, btnClearMatrix
分别用于演示仿射矩阵在图形转换上的应用,还原为对象的初始仿射矩阵转换
Main.as
package
{
import flash.display.MovieClip;
import fl.events.ComponentEvent;
import fl.events.SliderEvent;
import flash.display.Shape;
import flash.geom.Matrix;
import flash.display.GradientType;
import flash.display.SpreadMethod;
public class Main extends MovieClip
{
var originalMatrix:Matrix;
public function Main():void
{
sliderScaleX.addEventListener(SliderEvent.THUMB_DRAG, scaleXHandler);
sliderScaleY.addEventListener(SliderEvent.THUMB_DRAG, scaleYHandler);
sliderRotate.addEventListener(SliderEvent.THUMB_DRAG, rotateHandler);
btnMatrix.addEventListener(ComponentEvent.BUTTON_DOWN, matrixHandler);
btnClearMatrix.addEventListener(ComponentEvent.BUTTON_DOWN, clearMatrixHandler);
// 保存 canvas 的初始仿射矩阵转换
originalMatrix = canvas.transform.matrix;
}
// 在 x 轴方向上做缩放
function scaleXHandler(e:SliderEvent):void
{
// scaleX - x轴方向上的缩放比例
canvas.scaleX = e.value;
}
// 在 y 轴方向上做缩放
function scaleYHandler(e:SliderEvent):void
{
// scaleY - y轴方向上的缩放比例
canvas.scaleY = e.value;
}
// 旋转
function rotateHandler(e:SliderEvent):void
{
// rotation - 旋转的度数
canvas.rotation = e.value;
}
// 仿射矩阵在图形转换上的应用
function matrixHandler(e:ComponentEvent):void
{
var matrix:Matrix = new Matrix();
// rotate() - 旋转的角度
matrix.rotate(10);
// translate() - 平移的距离
matrix.translate(200, 200);
// scale() - 缩放的比例
matrix.scale(1.2, 1.2);
var skewMatrix:Matrix = new Matrix();
// 调整 b 属性将矩阵垂直倾斜
// 调整 c 属性将矩阵水平倾斜
skewMatrix.b = Math.tan(0.78);
// concat() - 组合两个仿射矩阵
matrix.concat(skewMatrix);
// 在对象上应用仿射矩阵转换
canvas.transform.matrix = matrix;
}
// 还原为初始的仿射矩阵转换
function clearMatrixHandler(e:ComponentEvent):void
{
// 设置 canvas 的仿射矩阵转换为初始的仿射矩阵
canvas.transform.matrix = originalMatrix;
}
}
}
系列文章:
Flash ActionScript 3.0(1) - 数据类型、操作符和流程控制语句
Flash ActionScript 3.0(2) - 包、类、包外类、命名空间、属性、方法、接口和继承
Flash ActionScript 3.0(3) - 以文本形式、XML形式和JSON形式与ASP.NET通信
Flash ActionScript 3.0(4) - 实例之以Hello World, 时钟, 计时器
Flash ActionScript 3.0(5) - 实例之闹钟
Tags:Flash ActionScript 绘图
编辑录入:爽爽 [复制链接] [打 印]- ››ActionScript 2.0中的! 逻辑 NOT 运算符
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
更多精彩
赞助商链接