今天除了更新的3D的api之前,另外在flash Graphics方法当中新增了一个cubicCurveTo的方法,能够使用其进行绘制贝塞尔曲线,奇怪是文档里面对应的flash 版本是12,不知道是不是写错了,呵呵。基本上用法很简单。和curveTo差不多,只是多了一个控制点。

提前使用这个api 运行时候,只能在安装最新flash player 11插件的浏览器运行。目前还没正式发布相应flash player11播放器正式版本。等待五月份官方会推出正式版,所以还需要耐心等待。另外一些非官方的播放器可以debug的时候使用脱离浏览器测试,要是等不及的可以下载来试试。

使用编译后的程序需要使用最新版本先可以看到效果。

可以在这里下载对应的flash player 11的版本:目前只是支持插件的形式。

http://labs.adobe.com/technologies/flashplatformruntimes/incubator/

新增的api方法,依旧在Graphics类找到,这次绘制贝塞尔曲线有利于制作绘图的时候,一些在线的ps工具可以利用这个函数进行设计贝塞尔的三次的运算,而不用使用其他运算公式模拟三次的效果。

public function cubicCurveTo(controlX1:Number, controlY1:Number, controlX2:Number, controlY2:Number, anchorX:Number, anchorY:Number):void

Language Version:  ActionScript 3.0
Runtime Versions:  AIR 1.0, Flash Player 12

测试代码:

import flash.display.Sprite; for (var i:int=0; i<4; i++) { var shape:Sprite=new Sprite(); addChild(shape); shape.x = 300; shape.y = 300; shape.graphics.lineStyle(0); shape.graphics.beginFill(Math.random()*0xffffff); shape.graphics.cubicCurveTo(-290,-280,290,-280,0,0); shape.graphics.endFill(); shape.rotation = i * 90; }

测试的效果如下:

使用的时候,恰当改一下复制10次数可以变化上面的效果;

import flash.display.Sprite; for (var i:int=0; i<10; i++) { var shape:Sprite=new Sprite(); addChild(shape); shape.x = 300; shape.y = 300; shape.graphics.lineStyle(0); shape.graphics.beginFill(Math.random()*0xffffff); shape.graphics.cubicCurveTo(-290,-280,290,-280,0,0); shape.graphics.endFill(); shape.rotation = i * 36; }

import flash.display.Sprite; for (var i:int=0; i<360; i++) { var shape:Sprite=new Sprite(); addChild(shape); shape.x = 300; shape.y = 300; shape.graphics.lineStyle(0); shape.graphics.beginFill(Math.random()*0xffffff); shape.graphics.cubicCurveTo(-5,-280,5,-280,0,0); shape.graphics.endFill(); shape.rotation = i; }

除此之外,改变参数和复制次数会产生很多图片变化,这跟之前所制作的玫瑰线和旋轮线制作原理是一样的。

把之前的程序修改一下,可以进行多点控制。

package { //贝塞尔曲线 import flash.display.Sprite; import flash.events.*; import flash.geom.*; public class Main extends Sprite { private var pen:Sprite=new Sprite(); private var circleA:CirclePoint; private var circleB:CirclePoint; private var circleC:CirclePoint; private var circleD:CirclePoint; public function Main() { init(); } //初始化 private function init():void { drawGrid(20,30,16,16);//绘制网格 addChild(pen); pen.graphics.lineStyle(1,0xff0000); pen.graphics.moveTo(20,160); pen.graphics.cubicCurveTo(130,290,270,50,460,160); circleA=new CirclePoint(); circleA.addEventListener(MouseEvent.MOUSE_DOWN,circle_DragHandler); addChild(circleA); circleA.x=20; circleA.y=160; circleB=circleA.clone(); circleB.addEventListener(MouseEvent.MOUSE_DOWN,circle_DragHandler); addChild(circleB); circleB.x=130; circleB.y=290; circleC=circleA.clone(); circleC.addEventListener(MouseEvent.MOUSE_DOWN,circle_DragHandler); addChild(circleC); circleC.x=270; circleC.y=50; circleD=circleA.clone(); circleD.addEventListener(MouseEvent.MOUSE_DOWN,circle_DragHandler); addChild(circleD); circleD.x=460; circleD.y=160; pen.graphics.moveTo(circleA.x,circleA.y); pen.graphics.lineTo(circleB.x,circleB.y); pen.graphics.lineTo(circleC.x,circleC.y); pen.graphics.lineTo(circleD.x,circleD.y); stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler); } private function circle_DragHandler(event:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler); event.currentTarget.startDrag(false,new Rectangle(10,10,460,300));//控制拖动区间 } private function onMouseMoveHandler(event:MouseEvent):void { redraw(); } private function onMouseUpHandler(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler); circleA.stopDrag(); circleB.stopDrag(); } //重绘 private function redraw():void { pen.graphics.clear(); pen.graphics.lineStyle(1,0xff0000); pen.graphics.moveTo(circleA.x,circleA.y); pen.graphics.cubicCurveTo(circleB.x,circleB.y,circleC.x,circleC.y,circleD.x,circleD.y); pen.graphics.moveTo(circleA.x,circleA.y); pen.graphics.lineTo(circleB.x,circleB.y); pen.graphics.lineTo(circleC.x,circleC.y); pen.graphics.lineTo(circleD.x,circleD.y); } //绘制网格 private function drawGrid(rows :int,cols:int,titleW:int,titleH:int):void { this.graphics.lineStyle(1,0xffffff,0.2); for (var i:int=0; i<rows; i++) { for (var j:int=0; j<cols ; j++) { this.graphics.drawRect(j*titleW,i*titleH,titleW,titleH);//绘制矩形 } } } } } //创建点类 import flash.display.Sprite; internal class CirclePoint extends Sprite { public function CirclePoint(R:int=8) { this.graphics.lineStyle(0); this.graphics.beginFill(0xffffff); this.graphics.drawCircle(0,0,R); this.graphics.endFill(); } public function clone():CirclePoint { return new CirclePoint(); } public function move(x:Number,y:Number):void { this.x=x; this.y=y; } }

flash绘图API :flash player11新增的绘图API方法--cubicCurveTo相关推荐

  1. 基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活

    基于Django实现Linux运维管理平台整个实现过程和各种API接口调用以及Echarts绘图的使用介绍 项目内容涉及技术直通车: 我的项目仓库:MyGitHub https://github.co ...

  2. 第36讲 Android Camera2 API Flash闪光灯控制

    本讲是Android Camera专题系列的第36讲,我们介绍Android Camera2 API专题的Flash闪光灯控制,包括如下内容: 判断当前Camera是否支持Flash 设置Flash模 ...

  3. 用计算机制作flash动画教案,Flash动画制作教案

    以下是出国留学网小编整理的高中信息技术<Flash动画制作>教案,供大家浏览参考.更多相关内容请关注出国留学网教案栏目. 高中信息技术<Flash动画制作>教案一: 课题:Fl ...

  4. 分析DRAM、NAND FLASH、NOR FLASH三大存储器

    来源:电子发烧友网 内存的正式名字叫做"存储器",是半导体行业三大支柱之一.2016年全球半导体市场规模为3400亿美金,存储器就占了768亿美元.对于你身边的手机.平板.PC.笔 ...

  5. 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址

    Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案.这个产品构建于N ...

  6. Ubuntu 15 安装Chromium浏览器并添加Flash插件Pepper Flash Player

    Chromium谷歌的开源浏览器将不再支持Netscape浏览器插件API,Adobe公司的Flash将无法正常工作了.然而用户可以使用Pepper Flash Player,这是谷歌浏览器上一款替代 ...

  7. UBI,MTD(Memory Technology Device),raw flash,emmc,Flash,Block Device

    UBIFS 3个子系统: MTD 子系统: 提供访问flash 芯片的统一接口.MTD提出了MTD设备的概念(/dev/mtd0),MTD设备就是raw flash. UBI 子系统: 在MTD子系统 ...

  8. Flash Professional / 处理 Flash 文档 XFL(XML格式描述的CS5 FLA)

    关于 Flash 文件 使用其他 Adobe 应用程序 打开 XFL 文件 使用未压缩的 XFL 文件 使用 Flash 编辑 Dreamweaver 中的 SWF 文件 创建新文档 保存 Flash ...

  9. SPI Flash,NOR Flash,NAND Flash,eMMC对比

    快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器.这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存 ...

最新文章

  1. Python基础知识(第十一天)
  2. Delphi 字符串转十六进制
  3. 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和
  4. web版本 开源压测工具_siege--Web性能压测工具
  5. Linux 文件 IO
  6. 零基础 | 入行软件测试,你想知道的都在这里了
  7. IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
  8. Android基础入门教程——7.5.4 WebView文件下载
  9. 用BeautifulSoup爬取豆瓣的电影排行榜,并用xlwt把数据保存成excel
  10. 成功转行IT软件测试,分享下我本科毕业2年转行的经历
  11. “社畜”群体的崛起带来了哪些营销新契机?
  12. Calcite执行计划的四种展示格式
  13. spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict
  14. 2016最新的旅游网站程序CMS系统优点和缺点对比分析
  15. 开源软件库TensorFlow最全教程和项目列表
  16. JAVA 日期推算---算法
  17. Kali-Linux安装驱动并使用Blueman连接蓝牙耳机
  18. ADB 用法大全 【转】
  19. TestDirector的安装和使用---综合汇总
  20. 计算机发展历程第四代所用逻辑部件是,第四代计算机采用的逻辑元件是什么

热门文章

  1. AI工程师成长记 - 工作方法!
  2. 关于大数据的完整讲解
  3. 王敏捷 - 深度学习框架这十年!
  4. 4个步骤成功构建出一个机器学习团队
  5. 大肆行贿!微软前员工爆料,在中东、非洲每年花2亿美元回扣送礼
  6. 高校青椒为避免相亲重复,给没谈成的124个姑娘每人建了个文件夹...
  7. 清华南开出品最新视觉注意力机制Attention综述
  8. 送一款巧克力式绝美键盘!真香!
  9. 堪比当年的LSTM,Transformer引燃机器学习圈:它是万能的
  10. 借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等