您的位置: 首页 > 技术文档 > 多媒体制作 > Making Things Move 第四章
FLASH小游戏开发 第二节 回到列表 Making Things Move 第三章
 Making Things Move 第四章

作者:alan98 时间: 2008-05-15 文档类型:翻译 来自:蓝色理想

第 1 页 渲染技术 [1]
第 2 页 渲染技术 [2]
第 3 页 渲染技术 [3]
第 4 页 渲染技术 [4]
第 5 页 渲染技术 [5]
第 6 页 渲染技术 [6]
第 7 页 渲染技术 [7]
第 8 页 渲染技术 [8]
第 9 页 渲染技术 [9]

使用 clear 删除绘制

clear 是所有方法中最简单的,它可以用来删除在影片中所绘制的直线,曲线或填充色。请注意,这个命令中对其它 graphics 绘制的图像不起作用。换句话讲,如果在编辑环境下绘制了一个图形,再对其使用 clear() 命令,结果是无效的。

在绘图中,使用 clear 方法会有些意想不到的效果。在绘图 API 中,如果绘制的影片剪辑越多,运行速度就越慢。对于有很多绘制图形的影片来说,速度不会立刻慢下了,而是随着每个图形所占用的绘制时间会越来越长,从而逐渐地变慢。就算新的图形完全覆盖住了所有旧图形,旧图形的矢量信息也仍然存在并且每次都会被重绘,只有使用 clear 函数才可以完全删除之前旧图形的矢量信息。

使用 lineStyle 设置线条样式

使用 lineStyle(width,color,alpha)方法,作用是为以后使用的绘图线条设置线条样式,该命令对于前面使用的绘图线条不会产生影响。实际上,除了清除或覆盖之外,没有方法可以影响或改变已经绘制的线条或填充。

前面列出的这些参数将来会经常使用,还有一些额外的可选参数如像素提示(pixel),缩放模式(scale mode),端点(caps),拐角类型(joints)和切断尖角(mitres)。如果大家需要更多的设置,也许会用到它们,但是大多数情况下,只会用到下面这些参数。对于它们无需做太多解释,只是来复习一下:

  • width:线条的宽度以像素为单位。只能使用0或正整数。虽然可以使用十进制浮点数,但会被取整为最接近的正整数。如果输入的是0或负数, Flash 将绘制1像素宽的线。这与在 Flash IDE 中在属性面板中选择“细线”的功能相同。
  • color:线条的颜色。使用十进制或十六进制的24位色彩值表示。
  • alpha:线条的透明度。使用0.0到1.0数字之间的数表示透明度的比例。值为1.0表示完全不透明,值为0.0表示完全透明或不可见。注意,这与 AS 2 中使用 0到100 表示法是不同的。

由于这些参数是可选的,可以只使用 lineStyle(1) 来设置一条1像素宽的黑色线条。其实第一个参数也是可选的,如果不填 widh 参数,只使用 lineStyle() 的话,那么线条就被清除,只获得了一条不可见的线,相当于使用绘图指令时没有设置线条样式(lineStyle)。另一个容易出错的地方是,在使用 clear 方法时,不仅清除了当前绘制的图形而且也清除了当前使用的线条样式。如果在影片绘图时设置了一个普通的线条样式,而后又将线条清除,那么在绘制其它图形之前还需要重新设置线条样式。否则的话,接下来绘制的线条就是不可见的,调用 clear 方法同时还会将绘图指针位置归为0,0。

使用 lineTo 和 moveTo 绘制直线

在一种绘图语言中会有多种方法用来绘制直线。一种是使用画线指令,需要有一个起点和一个终点,并在这两点之间画一条直线。另一种是使用 lineTo 指令,只需要一个终点。那么 ActionScript 是怎样工作的呢,如果向某一点画线,哪里才是起点呢?如果之前没有进行过画线,那么起点就是0,0点,可以这样写:lineTo(100, 100);

结果将会看到一条从左上角(0,0)画到100,100像素位置的线(假设已经设置了线条样式)。在绘制完最少一条线后,这条线的终点位置就会成为下一条线的起点位置。不过,我们还可以使用 moveTo 方法为下一条线指定一个新的起点位置。

可以把绘图 API 想像成一个拿着笔和纸的机器人,开始的时候,笔处在0,0点。当我们告诉它向某点画一条线时,它就将笔在纸上划过,并向这个位置移动。 moveTo 方法就像在说“ok,现在抬起笔,放到下一个点上。”虽然仅使用 moveTo 指令不会产生一个新的图形,但是它会影响下一次绘图时的位置。通常使用 moveTo 作为第一条绘图指令,用于将绘图 API 的“笔”移动到起点位置。现在大家已经拥有了足够的知识可以来实践一下了,让我们创建一个简单的绘图应用程序,这个程序是完全依赖绘图 API 完成的。这里是文档类:

package {
 import flash.display.Sprite;
 import flash.events.MouseEvent;
 public class DrawingApp extends Sprite {
  public function DrawingApp() {
   init();
  }
  private function init():void {
   graphics.lineStyle(1);
   stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
   stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
  }
  private function onMouseDown(event:MouseEvent):void {
   graphics.moveTo(mouseX, mouseY);
   stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
  }
  private function onMouseUp(event:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
  }
  private function onMouseMove(event:MouseEvent):void {
   graphics.lineTo(mouseX, mouseY);
  }
 }
}

首先,导入 MouseEvent 类,因为这里的每件事都要用到鼠标事件。在 init 方法中,线条样式设置为 1 像素黑色线,并增加 mouseDown 和 mouseUp 作为事件侦听器。

然后是 onMouseDown 方法,每当用户按下鼠标是都会调用它,这意味着用户要开始在当前鼠标位置画线了。这个函数通过使用 moveTo 方法将那支虚拟的笔放置在当前鼠标的位置,以鼠标坐标为参数,随后为 mouseMove 添加了一个侦听器。
每当用户移动鼠标时,都会调用 onMouseMove 方法,向当前鼠标的位置画一条线。
最后是 onMouseUp 方法,用于删除 mouseMove 侦听器使其不再进行画线。
好的,现在已经制作好了一个短小精悍的绘图程序。我们不需要再费太大的力气就可以为这个程序加入一些简单的控制,让它具有完整绘图程序的功能。只需要为线条颜色(color)和线条宽度(width)创建一些变量,再创建一些按钮什么的用来改变它们,并重新调用 lineStyle 方法使用这些新的值。对了,还可以再放一个按钮用于调用 clear 方法。把这个留做是一个练习,希望大家有兴趣的话,能够自行完成。

出处:蓝色理想
责任编辑:bluehearts

上一页 渲染技术 [3] 下一页 渲染技术 [5]

◎进入论坛RIA设计与应用版块参加讨论

相关文章 更多相关链接
FLASH小游戏开发 第二节
用photoshop制作文字波动动画
制作旗帜飘扬动画
Making Things Move 第三章
Silverlight制作逐帧动画
作者文章
Making Things Move 第三章
Making Things Move 第二章
Making Things Move 第一章
贪吃蛇游戏代码翻译
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:4/91个记录/页 转到 页 共9个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2