`

Flint Particle粒子入门教程(五):关于Initializer

阅读更多
在Flint Particle粒子中,Initializer是初始化器,它在粒子开始构建的时候用到。
package org.flintparticles.common.initializers
{
	import org.flintparticles.common.emitters.Emitter;
	import org.flintparticles.common.particles.Particle;	
	public interface Initializer
	{
		function getDefaultPriority():Number;
		function addedToEmitter( emitter:Emitter ):void;
		function removedFromEmitter( emitter:Emitter ):void;
		function initialize( emitter:Emitter, particle:Particle ):void;
	}
}

它是建立粒子和播放器的时候用的,比较前面的Action类接口,他们的形式很类似。

getDefaultPriority():Number;
addedToEmitter( emitter:Emitter ):void;
removedFromEmitter( emitter:Emitter ):void;
initialize( emitter:Emitter, particle:Particle ):void;

Action类接口:
getDefaultPriority():Number;
addedToEmitter( emitter:Emitter ):void;
removedFromEmitter( emitter:Emitter ):void;
update( emitter:Emitter, particle:Particle, time:Number ):void;

《获得默认的优先级;
《加到发射器;
《从发射器移除;
《刷新(发射器、粒子和事件作为参数);

initialize类接口:
		getDefaultPriority():Number;
		addedToEmitter( emitter:Emitter ):void;
		removedFromEmitter( emitter:Emitter ):void;
		initialize( emitter:Emitter, particle:Particle ):void;

《获得默认的优先级;
《加到发射器;
《从发射器移除;
《初始化(发射器、粒子和事件作为参数);

InitializerBase implements Initializer
InitializerBase 实现了Initializer接口。
package org.flintparticles.common.initializers
{
	import org.flintparticles.common.emitters.Emitter;
	import org.flintparticles.common.particles.Particle;	
	public class InitializerBase implements Initializer
	{
		public function InitializerBase()
		{
		}
		public function getDefaultPriority():Number
		{
			return 0;
		}
		public function addedToEmitter( emitter:Emitter ):void
		{
		}
		public function removedFromEmitter( emitter:Emitter ):void
		{
		}
		public function initialize( emitter:Emitter, particle:Particle ):void
		{
		}
	}
}

下面我们以SharedImage这个初始化器作为说明。
package org.flintparticles.common.initializers 
{
	import flash.display.DisplayObject;
	
	import org.flintparticles.common.emitters.Emitter;
	import org.flintparticles.common.particles.Particle;	
	public class SharedImage extends InitializerBase
	{
		private var _image:DisplayObject;
		public function SharedImage( image:DisplayObject )
		{
			_image = image;
		}
		public function get image():DisplayObject
		{
			return _image;
		}
		public function set image( value:DisplayObject ):void
		{
			_image = value;
		}
		override public function initialize( emitter:Emitter, particle:Particle ):void
		{
			particle.image = _image;
		}
	}
}

我们分析一下。
public class SharedImage extends InitializerBase

这里我们用了继承类,也就是很多的代码和函数我们用了继承,默认的情况下,所有的函数都从InitializerBase继承过来了,有些我们需要重写的就重写一下就行。
private var _image:DisplayObject;

这里增加了一个类里唯一的私有变量_image,它是DisplayObject类型的。
我们注意到在Particle类中,image的类型是待定的(也就是任意类型)
public var image:* = null;

* 该对象用于显示图像。在一个二维粒子,这通常是DisplayObject 。
* 在三维粒子,这可能是一个DisplayObject ,显示牌上的或相似的,
* 或者一个三维物体的形式提供给渲染系统使用。
好了,基本上就到这里。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics