WEB开发网
开发学院图形图像Flash Flash ActionScript 3.0(6) - 绘图之图形和转换 阅读

Flash ActionScript 3.0(6) - 绘图之图形和转换

 2009-03-10 11:58:01 来源:WEB开发网   
核心提示: 2、转换在 UI 上放置 3 个 Silder分别名为:sliderScaleX, sliderScaleY, sliderRotate分别用于演示 X 轴方向上的缩放,Y 轴方向上的缩放,Flash ActionScript 3.0(6) - 绘图之图形和转换(2),旋转再放置 2 个

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) - 实例之闹钟

上一页  1 2 

Tags:Flash ActionScript 绘图

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接