BitmapData粒子

二维粒子 everyinch 3148℃ 0评论

使用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,源代码如下:

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
		}
	}
}

代码非常简单,只是定义了粒子的水平速度vx、垂直速度vy以及质量mass这几个基本属性。向它的构造函数传递水平位置、垂直位置、水平速度、垂直速度以及质量。在update函数中,也只是简单地在应用了水平速度和垂直速度以改变它的位置。

分享&收藏

转载请注明:陈童的博客 » BitmapData粒子

喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
'; } if( dopt('d_footcode_b') ) echo dopt('d_footcode'); ?>