在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 ,显示牌上的或相似的,
* 或者一个三维物体的形式提供给渲染系统使用。
好了,基本上就到这里。