获取颜色值
假如有这样一个数 0xFF55F3,要从中提取 red,green,blue 的值。下面请看公式,首先是24位色彩: red = color24 >> 16; green = color24 >> 8 & 0xFF; blue = color24 & 0xFF;
一句句来看。首先,大家也许会猜到 >> 是按位右移运算符,用于将二进制位向右移动。如果这些位向右移动得过多,那么这些数字就会消失,就没有数了。 下面从 red 开始: 111111110101010111110011 将颜色值向右移动16位,结果如下: 11111111,或是0xFF(255) 对于 green,向右移动8位,结果如下: 1111111101010101
这里已经得出了 blue 的值,但是 red 值还留在一旁。这里就是要使用与(And)操作符的地方,与(OR)操作符相同,都是对两组数值的比较,可以这样解释“两个数相比较,如果两个都是1那么结果就为1,如果其中有一个为0,那么结果就为0”。我们把它与0xFF进行比较: 1111111101010101 0000000011111111
因为所有的 red 位的数字都与0相比较,所以它们的结果均为0,只有当两个数都为1时结果才为 1,所以结果如下: 0000000001010101
对于 blue 则不需要执行右移操作,只需要让它和 0xFF 执行与(AND)操作即可。对于32位色彩,方法也是相同的,只不过需要一点小小的改动: alpha = color32 >> 24; red = color32 >> 16 & 0xFF; green = color32 >> 8 & 0xFF; blue = color32 & 0xFF;
这里,获取 alpha 的值需要向右移动24位。现在我们已经学到了很多 Flash 的色彩知识,下面就要开始进行应用了。
绘图 API
先说一下 API 是什么,它是应用程序接口(application programming interface)的缩写。总的来说,API 是指在程序中使用的一些属性和方法来访问某些相关的行为和属性。绘图 API 允许我们使用 ActionScript 绘制直线,曲线,填充色,渐变填充的一些属性和方法。在这个 API 中有些让人惊讶的方法,我们还要学习很多这方面的知识和灵活的技巧。 直至 Flash MX,已经拥有了如下这些绘图方法:
- clear()
- lineStyle(width, color, alpha)
- moveTo(x, y)
- lineTo(x, y)
- curveTo(x1, y1, x2, y2)
- beginFill(color, alpha)
- endFill()
beginGradientFill(fillType, colors, alphas, ratios, matrix)
在 Flash 8 中,又为 lineStle 和 beginGradientFill 增加了几种新的方法,同时也加入了 beginBitmapFill 和 lineGradientStyle 方法。在 AS 3中,也增加了几种非常有用的方法:
- drawCircle(x, y, radius)
- drawEllipse(x, y, width, height)
- drawRect(x, y, width, height)
- drawRoundRect(x, y, width, height, ellipseWidth, ellipseHeight)
先来预览一下这些方法,稍后再对每种方法进行详细的介绍。
绘图对象
在 Flash 早期版本中,绘图 API 方法是影片剪辑(MovieClip)类中的方法,可以在影片剪辑实例中直接调用,代码如下:
myMovieClip.lineTo(100, 100);
影片剪辑和 Sprite 都可以访问绘图 API,只是实现起来有些不同。目前,Sprite 影片和影片剪辑都有一个名为 graphics 的属性,用于访问绘图 API 的方法。为了直接访问绘图方法,我们可以这样写:
mySprite.graphics.lineTo(100, 100);
下面在示例中看看这些方法的基本使用。
出处:蓝色理想
责任编辑:bluehearts
上一页 渲染技术 [2] 下一页 渲染技术 [4]
◎进入论坛RIA设计与应用版块参加讨论
|