- 浏览: 1085094 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
使用as3的绘图API绘制填充区域时,经常会涉及到相交区域的颜色填充问题。Flash Player 10 和 Adobe AIR 1.5 还引入了路径“缠绕”(即路径的方向)这一概念。路径的缠绕可以是正向的(顺时针),也可以是负向的(逆时针)。渲染器为 data 参数解释矢量所提供坐标的顺序确定了缠绕的方向。
as3中的缠绕规则分为两种:奇偶规则和非零规则,奇偶规则是标准的缠绕规则,早期的绘图 API 都使用此规则。奇偶规则也是 Graphics.drawPath() 方法的默认规则。使用奇偶缠绕规则时,任何相交路径都交替使用开放填充与闭合填充。如果使用同一填充绘制的两个正方形相交,则不会填充相交的区域。通常,相邻区域不会都填充或都不填充。另一方面,非零规则依靠缠绕(绘制方向)来确定是否填充相交路径定义的区域。当相对缠绕的路径相交时,不填充所定义的区域,这与奇偶规则十分类似。对于相同缠绕的路径,将填充本来不填充的区域。
drawpaht方法的第三个可选参数参数winding,用于指定相交路径的缠绕或填充规则。这个参数的可选项分为GraphicsPathWinding.EVEN_ODD 或GraphicsPathWinding.NON_ZERO。
EVEN_ODD 是默认行为,它指在同样的填充下,图形的重叠区域不会被填充。
NON_ZERO,则提供了更多的缠绕规则的选择,在此行为下,通过使用非零缠绕规则可以灵活控制相交区域的填充和不填充。
下面的代码演示了在NON_ZERO行为下使用非零缠绕来实现的效果:
填充相交区域:
var commands:Vector.<int>=new Vector.<int>();
var lineto:int=GraphicsPathCommand.LINE_TO;
var moveto:int=GraphicsPathCommand.MOVE_TO;
commands.push(moveto,lineto,lineto,lineto,lineto);
commands.push(moveto,lineto,lineto,lineto,lineto);
var datas:Vector.<Number>=new Vector.<Number>();
datas.push(0,0,100,0,100,20,0,20,0,0);
datas.push(50,-50,70,-50,70,50,50,50,50,-50);
var sp:Shape=new Shape();
sp.graphics.beginFill(0xff00ff);
sp.graphics.drawPath(commands,datas,GraphicsPathWinding.NON_ZERO);
sp.graphics.endFill();
sp.x=100;
sp.y=100;
addChild(sp);
通过修改其中一个图形的画线顺序,不填充相交区域:
var commands:Vector.<int>=new Vector.<int>();
var lineto:int=GraphicsPathCommand.LINE_TO;
var moveto:int=GraphicsPathCommand.MOVE_TO;
commands.push(moveto,lineto,lineto,lineto,lineto);
commands.push(moveto,lineto,lineto,lineto,lineto);
var datas:Vector.<Number>=new Vector.<Number>();
datas.push(0,0,0,20,100,20,100,0,0,0);
datas.push(50,-50,70,-50,70,50,50,50,50,-50);
var sp:Shape=new Shape();
sp.graphics.beginFill(0xff00ff);
sp.graphics.drawPath(commands,datas,GraphicsPathWinding.NON_ZERO);
sp.graphics.endFill();
sp.x=100;
sp.y=100;
addChild(sp);
红色部分的改变轻松的实现了相交区域的不填充。
drawPath路径绘图方法在实现简单的绘图时,增加了代码的行数。但是,当我们在绘制复杂的图形时,它就给我们来了意想不到的魅力,特别是在做3d透视的过程中。对3d基础引擎开发的有兴趣的朋友,可以好好了解一下drawpath的使用。
在AdvancED_ActionScript 3.0一书中,对drawpath使用有详细的阐述和实例讲解。
文章来源:http://www.flashandflex.com/html/ASDVA/Drawing/1203.html
as3中的缠绕规则分为两种:奇偶规则和非零规则,奇偶规则是标准的缠绕规则,早期的绘图 API 都使用此规则。奇偶规则也是 Graphics.drawPath() 方法的默认规则。使用奇偶缠绕规则时,任何相交路径都交替使用开放填充与闭合填充。如果使用同一填充绘制的两个正方形相交,则不会填充相交的区域。通常,相邻区域不会都填充或都不填充。另一方面,非零规则依靠缠绕(绘制方向)来确定是否填充相交路径定义的区域。当相对缠绕的路径相交时,不填充所定义的区域,这与奇偶规则十分类似。对于相同缠绕的路径,将填充本来不填充的区域。
drawpaht方法的第三个可选参数参数winding,用于指定相交路径的缠绕或填充规则。这个参数的可选项分为GraphicsPathWinding.EVEN_ODD 或GraphicsPathWinding.NON_ZERO。
EVEN_ODD 是默认行为,它指在同样的填充下,图形的重叠区域不会被填充。
NON_ZERO,则提供了更多的缠绕规则的选择,在此行为下,通过使用非零缠绕规则可以灵活控制相交区域的填充和不填充。
下面的代码演示了在NON_ZERO行为下使用非零缠绕来实现的效果:
填充相交区域:
var commands:Vector.<int>=new Vector.<int>();
var lineto:int=GraphicsPathCommand.LINE_TO;
var moveto:int=GraphicsPathCommand.MOVE_TO;
commands.push(moveto,lineto,lineto,lineto,lineto);
commands.push(moveto,lineto,lineto,lineto,lineto);
var datas:Vector.<Number>=new Vector.<Number>();
datas.push(0,0,100,0,100,20,0,20,0,0);
datas.push(50,-50,70,-50,70,50,50,50,50,-50);
var sp:Shape=new Shape();
sp.graphics.beginFill(0xff00ff);
sp.graphics.drawPath(commands,datas,GraphicsPathWinding.NON_ZERO);
sp.graphics.endFill();
sp.x=100;
sp.y=100;
addChild(sp);
通过修改其中一个图形的画线顺序,不填充相交区域:
var commands:Vector.<int>=new Vector.<int>();
var lineto:int=GraphicsPathCommand.LINE_TO;
var moveto:int=GraphicsPathCommand.MOVE_TO;
commands.push(moveto,lineto,lineto,lineto,lineto);
commands.push(moveto,lineto,lineto,lineto,lineto);
var datas:Vector.<Number>=new Vector.<Number>();
datas.push(0,0,0,20,100,20,100,0,0,0);
datas.push(50,-50,70,-50,70,50,50,50,50,-50);
var sp:Shape=new Shape();
sp.graphics.beginFill(0xff00ff);
sp.graphics.drawPath(commands,datas,GraphicsPathWinding.NON_ZERO);
sp.graphics.endFill();
sp.x=100;
sp.y=100;
addChild(sp);
红色部分的改变轻松的实现了相交区域的不填充。
drawPath路径绘图方法在实现简单的绘图时,增加了代码的行数。但是,当我们在绘制复杂的图形时,它就给我们来了意想不到的魅力,特别是在做3d透视的过程中。对3d基础引擎开发的有兴趣的朋友,可以好好了解一下drawpath的使用。
在AdvancED_ActionScript 3.0一书中,对drawpath使用有详细的阐述和实例讲解。
文章来源:http://www.flashandflex.com/html/ASDVA/Drawing/1203.html
发表评论
-
AWAY3D 贴图DEMO
2011-05-14 23:16 0AWAY3D 贴图DEMO -
[转] AS3 制作3D位图方法
2011-05-04 00:34 1491http://bbs.9ria.com/viewthread. ... -
[转] MoleHill操作AGAL的Helper类之一
2011-04-29 01:46 1094本帖最后由 sleep2death 于 2011-4-20 1 ... -
和场景里的物体交互要用InteractiveScene3D,examples里有个InteractiveBoxDemo的例子有很好的参考价值
2011-04-28 21:53 0和场景里的物体交互要用InteractiveScene3D,e ... -
[转] 使用Flare3D制作一款 a small game 的3d游戏!
2011-04-25 01:39 2092http://bbs.9ria.com/viewthread. ... -
[转] [Flash/Flex] 支持 Molehill版本的Flare3D 应用示范
2011-04-16 02:30 1258http://bbs.9ria.com/thread-7953 ... -
[转]自制flash3D变换类
2011-04-15 16:09 1018http://hi.baidu.com/boycy/blog/ ... -
[转] [Flash/Flex] native3d flash 3d引擎发布molehill版
2011-04-13 22:46 1104http://bbs.9ria.com/viewth ... -
[转] [Flash/Flex] 轻量级flash3d引擎native3d rev19使用教程
2011-04-10 06:00 1108资讯类型: 原创 来 ... -
[转]2011RIA天地行主题之3D Flash3D引擎简介
2011-03-31 22:34 1822http://bbs.9ria.com/viewthread. ... -
[转]Flash Player 10' s new 3D effects(三)
2011-03-23 17:34 1604http://sjkgxf7191.iteye.com/blo ... -
[转]Flash Player 10' s new 3D effects(二)
2011-03-23 15:50 1542http://sjkgxf7191.iteye.com/blo ... -
[转]Flash Player 10' s new 3D effects(一)
2011-03-23 14:55 1367http://sjkgxf7191.iteye.com/ ... -
[转]使用Flare3D在FB中搭建第一个Molehill项目
2011-03-22 20:52 1964http://www.adobe.com/cn/devnet/ ... -
[转]M2D的介绍——针对Flash ‘Molehill’ API的GPU加速2D框架
2011-03-22 14:37 1772http://bbs.9ria.com/viewth ... -
[转]使用Away3D引擎的Flash3D推箱子游戏原型 - 最终版本
2011-03-18 22:06 1387http://bbs.9ria.com/viewthread. ... -
3D塔防
2011-03-18 18:29 03D塔防3D塔防 -
[转]Flash ‘Molehill’ API上的GPU加速2D框架-M2D
2011-03-11 02:13 0http://bbs.9ria.com/thread-75 ... -
jiglibflash--Flash 3D physics engine
2011-03-09 13:06 1583http://code.google.com/p/jiglib ... -
[转]使用CS4的新增类实现全景图效果
2011-03-08 15:32 1770http://uh.9ria.com/space-12147- ...
相关推荐
总之,这个压缩包中的源码实例是一个很好的学习资源,它展示了如何在Android应用中创建不规则形状的点击区域,这对于想要提升Android UI交互设计能力的开发者来说非常有价值。通过实践这个例子,你不仅可以理解点击...
在Android开发中,有时我们可能需要创建不规则的点击区域,比如三角形的点击区域,以便用户在特定形状上触发事件。...在实际项目中,这种技术可以应用于各种场景,如游戏中的可交互元素或具有特殊交互设计的UI组件。
在Android开发中,不规则窗体(Irregular Windows)指的是那些形状非标准矩形的窗口,通常用于实现一些独特或富有创意的用户界面效果。在Android系统中,默认情况下,所有的Activity都以矩形形式呈现,但通过自定义...
DrawPath.m
这样,我们就能在应用中看到自定义的不规则进度条了。 总结来说,实现自定义不规则进度条的关键步骤包括: 1. 创建自定义`View`类,继承自`ProgressBar`。 2. 重写`onDraw()`方法,使用`Canvas`和`Path`绘制不规则...
在Android开发中,有时我们需要创建独特且引人注目的用户界面,例如六边形或其它不规则形状的布局。这个压缩包"android实现六边形等不规则布局.rar"提供了实现这种效果的相关资源,让我们来深入探讨一下如何在...
在描述中提到的"不规则窗体+TreeView+ListView"可能意味着示例代码还包含了对这两种控件的应用。TreeView控件用于展示层次结构数据,如文件系统目录,而ListView控件则常用于显示列表项,支持多种视图模式,如图标、...
为了实现三角形或其他不规则形状的点击区域,我们需要自定义`View`类,覆盖`onTouchEvent()`方法来处理触摸事件,并在`onDraw()`方法中绘制非矩形形状。 1. **自定义View类**:首先,我们需要创建一个继承自`View`...
在实际应用中,你可能还需要处理鼠标和键盘事件,以使不规则窗体能够正常响应用户的交互。例如,你可能需要根据窗体的形状来调整鼠标点击的处理方式,确保点击在形状内的位置才能触发相应的操作。 文件列表中的`...
在编程领域,尤其是在Windows桌面应用开发中,创建不规则形状的窗体是一种独特而吸引人的设计方式。C#作为.NET框架的主要开发语言,提供了丰富的功能来实现这种效果。本篇文章将详细探讨如何使用C#来实现不规则形状...
在描述中提到的"vs2010启动界面"就是一个典型的不规则窗体应用,它采用了非矩形形状,增加了界面的美观性和用户体验。 不规则窗体的实现主要依赖于Windows API(应用程序接口)和.NET Framework提供的支持。Windows...
在Windows Forms(Winform)开发中,创建不规则窗体和控件是一项高级技术,它允许开发者设计出具有独特形状的应用程序窗口,而非传统的矩形样式。本源码示例着重于利用C#编程语言来实现这一功能。下面将详细阐述相关...
在Android开发中,为了提供与微信类似的用户体验,有时我们需要实现不规则形状的图片展示,比如微信中的气泡图片。这种不规则形状的图片通常用于聊天界面,以模拟真实对话中的气泡效果,使得消息看起来更加生动和...
在IT行业中,尤其是在Android或iOS应用开发中,创建自定义、不规则形状的按钮(控件)是一项常见的需求。这可以提升应用的视觉效果和用户体验,使得界面更加独特且易于识别。标题“不规则button”暗示我们将探讨如何...
本压缩包文件“商业编程-源码-本代码通过简单的代码实现不规则窗体.zip”提供了一个实例,展示了如何使用简洁的代码来创建不规则形状的窗口,这种技术在现代软件开发中尤为引人注目,因为独特的用户界面可以提升用户...
在标准的Qt应用程序中,对话框通常具有矩形形状,遵循窗口管理器的规则。然而,不规则对话框允许开发者自定义对话框的形状,使其可以呈现任何几何形状,这在某些场景下能够提供更吸引人的用户体验。 创建不规则...
在iOS开发中,"DrawPathTest Demo代码" 是一个典型的示例项目,它演示了如何在iOS应用中使用图形上下文(Graphics Context)和Core Graphics框架来绘制自定义的路径。Core Graphics是苹果的底层2D绘图系统,支持矢量...