Flash ActionScript3.0代码控制图形的变化[精].docVIP

Flash ActionScript3.0代码控制图形的变化[精].doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代码控制图形的变化 显示对象的缩放方法基本上大同小异,scaleX和scaleY是display.Object的基类的重要属性之一,它们决定了从注册点开始水平方向和垂直方向的缩放比例。无论我们对矢量图还是位图都可以使用这样的方法。 我们先来画一个矩形。这个矩形是(0,0)为起点,(200,200)为终点,填充红色的矩形。 如果我这个时候trace(canvas.scaleX,canvas.scaleY);输出2个1。这个scaleX和scaleY分别代表的是水平方向和垂直方向的缩放。 如果我为scaleX赋值2,代表水平方向放大2倍。 还有一种比较特殊的缩放方式叫九切片方式scale9Grid,它是对图形当中的不同区域采取不同的缩放策略。 来看例子,我们先用矢量绘图绘制一个分为9个部分的图形。 在绘制完后,我可以指定一个新的类Rectangle。Rectangle与Point的概念比较类似,它是一个矩形的区域和范围,也是抽象意义上的概念,并不是要在显示的场景上画一个矩形,而是说有这样一个空间概念。这个矩形区域指定的是在(50,50)坐标上开始,宽50,高50的这样一个区域。然后我可以为这个矩形区域指定一个九切片的范围。实际上是为canvas的scale9Grid指定一个我们刚才定义区域。然后把原来的图形变为2倍。 我们看一下结果。整个图形的宽和高放大2倍,4个角的图形没有变化,其他部分都发生了变化。实际上刚才指定的范围就是中央的范围。 中央的部分作最大填充,四个角的部分不作缩放,四个边只做x轴和y轴的缩放这是九切片的一个基本原则。 除了scaleX,scaleY,scale9Gird之外,还有一种方式,就是通过Matrix类转换矩阵来进行缩放。Matrix本身也是数学概念,是一个转换矩阵,转换矩阵的时候它有2个参数,a对应横向的缩放值,d对应纵向的缩放值。 再来看例子,前面的代码跟前边例子一样。新声明一个Matrix的实例mrx。然后把横向跟纵向变为原来的2倍,mrx.a=2;mrx.d=2;把然后我们把mrx赋给transform下的matrix属性。这就是第三种缩放方法。 实际上Matrix包含着六个有效参数,这六个有效参数分别有以下不同的规律,a和d刚刚讲过,代表横纵向的缩放比例;b和c分别代表了它的倾斜程度;tx和ty分别代表的是在横坐标和纵坐标上图形的偏移量。 比如说tx指定200的偏移,输出结果是这样的。 来看倾斜,首先声明一个变量θ作为倾斜度,c代表水平方向的倾斜,它有具体计算公式。 另外还有比较复杂的旋转。我们先让图形向右向下移动200个像素,然后定义一个旋转的角度,下面是计算公式,只有当4个配合的时候才会发生旋转。 前边的旋转可能比较复杂,因为他要分别设置4个不同的参数。为了能够更方便,其实AS里边也提供了MatrixTransform这样一个静态的类。它可以像Matrix一样直接计算一些具体的变化。这里举一个比较简单的例子,要使用MatrixTransform这个静态类,首先要导入类包,然后setRotation设置旋转,后边是旋转的矩阵mtx,旋转角度45。因为没有让它移动了,所以有一部分旋转到场景外去了。 要使用MatrixTransform类一定要提前导入相应的类包。类似于存取器函数get和set,既然setRotation可以设置它的旋转角度,那么也可以通过getRotation来读出它的旋转角度。比如我用Matrix的a,b,c,d旋转之后,我可以导入必要的包,然后输出getRotation(mtx);这样就可以在输出面板看到旋转的角度。

文档评论(0)

dart002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档