flash绘图API :flash player11新增的绘图API方法--cubicCurveTo
今天除了更新的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相关推荐
- 基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活
基于Django实现Linux运维管理平台整个实现过程和各种API接口调用以及Echarts绘图的使用介绍 项目内容涉及技术直通车: 我的项目仓库:MyGitHub https://github.co ...
- 第36讲 Android Camera2 API Flash闪光灯控制
本讲是Android Camera专题系列的第36讲,我们介绍Android Camera2 API专题的Flash闪光灯控制,包括如下内容: 判断当前Camera是否支持Flash 设置Flash模 ...
- 用计算机制作flash动画教案,Flash动画制作教案
以下是出国留学网小编整理的高中信息技术<Flash动画制作>教案,供大家浏览参考.更多相关内容请关注出国留学网教案栏目. 高中信息技术<Flash动画制作>教案一: 课题:Fl ...
- 分析DRAM、NAND FLASH、NOR FLASH三大存储器
来源:电子发烧友网 内存的正式名字叫做"存储器",是半导体行业三大支柱之一.2016年全球半导体市场规模为3400亿美金,存储器就占了768亿美元.对于你身边的手机.平板.PC.笔 ...
- 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址
Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案.这个产品构建于N ...
- Ubuntu 15 安装Chromium浏览器并添加Flash插件Pepper Flash Player
Chromium谷歌的开源浏览器将不再支持Netscape浏览器插件API,Adobe公司的Flash将无法正常工作了.然而用户可以使用Pepper Flash Player,这是谷歌浏览器上一款替代 ...
- UBI,MTD(Memory Technology Device),raw flash,emmc,Flash,Block Device
UBIFS 3个子系统: MTD 子系统: 提供访问flash 芯片的统一接口.MTD提出了MTD设备的概念(/dev/mtd0),MTD设备就是raw flash. UBI 子系统: 在MTD子系统 ...
- Flash Professional / 处理 Flash 文档 XFL(XML格式描述的CS5 FLA)
关于 Flash 文件 使用其他 Adobe 应用程序 打开 XFL 文件 使用未压缩的 XFL 文件 使用 Flash 编辑 Dreamweaver 中的 SWF 文件 创建新文档 保存 Flash ...
- SPI Flash,NOR Flash,NAND Flash,eMMC对比
快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器.这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存 ...
最新文章
- Python基础知识(第十一天)
- Delphi 字符串转十六进制
- 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和
- web版本 开源压测工具_siege--Web性能压测工具
- Linux 文件 IO
- 零基础 | 入行软件测试,你想知道的都在这里了
- IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
- Android基础入门教程——7.5.4 WebView文件下载
- 用BeautifulSoup爬取豆瓣的电影排行榜,并用xlwt把数据保存成excel
- 成功转行IT软件测试,分享下我本科毕业2年转行的经历
- “社畜”群体的崛起带来了哪些营销新契机?
- Calcite执行计划的四种展示格式
- spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict
- 2016最新的旅游网站程序CMS系统优点和缺点对比分析
- 开源软件库TensorFlow最全教程和项目列表
- JAVA 日期推算---算法
- Kali-Linux安装驱动并使用Blueman连接蓝牙耳机
- ADB 用法大全 【转】
- TestDirector的安装和使用---综合汇总
- 计算机发展历程第四代所用逻辑部件是,第四代计算机采用的逻辑元件是什么