陈童的博客's Archivers

From everyinch on 2011-09-24 21:07:07

BitmapData粒子

使用Sprite来承载粒子有许多方便的地方,比如可以继承Sprite的x,y坐标以及alpha、scaleX和scaleY属性等,这样就对粒子的操纵比较简单,也可以实现很好的视觉效果,但在效率方面则有值得商榷的地方。我们知道ActionScript3.0的代码需要Flash Player中的AVM2执行,而Flash Player是基于矢量渲染的,任何Sprite或MovieClip的位移、变型以及任何改变显示的变化都会使Flash Player对其进行绘制,并渲染到显示器。相比较而言,ActionScript3.0中的BitmapData可以先进行像素数据的操作,操作之后再进行渲染。并且无需Flash Player的绘制,直接将像素数据交给显示渲染。这样就会大大地提高效率,尤其对于数量庞大的粒子而言就更是如此了。
下面让我们讨论一下BitmapData粒子的实现方式。首先还是自定义一个粒子类,命名为Particle2D.as,源代码如下:
[code lang="as3"]
package com.particles{
public class Particle2D{
public var x:Number
public var y:Number
public var vx:Number
public var vy:Number
public var mass:Number

public function Particle2D(particleX:Number = 0, particleY:Number = 0, speedX:Number = 0, speedY:Number = 0, pMass:Number = 1){
x = particleX
y = particleY
vx = speedX
vy = speedY
mass = pMass
}
public function update():void{
x += vx
y += vy
}
}
}
[/code]
代码非常简单,只是定义了粒子的水平速度vx、垂直速度vy以及质量mass这几个基本属性。向它的构造函数传递水平位置、垂直位置、水平速度、垂直速度以及质量。在update函数中,也只是简单地在应用了水平速度和垂直速度以改变它的位置。

查看完整版本: BitmapData粒子

Tags: BitmapData, 粒子


©陈童的博客