CustomBullet 0.01

by ukkr forked from Wonderfl Tank Game BulletRenderer Sample 2 (diff: 219)
ai0

net.wonderfl

...
@author 9re
♥0 | Line 41 | Modified 2009-10-30 22:40:14 | MIT License
play

ActionScript3 source code

/**
 * Copyright ukkr ( http://wonderfl.net/user/ukkr )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/klXK
 */

// forked from 9re's forked from: TaroBullet
// forked from mash's TaroBullet
package
{
	// ai0
	import flash.display.BitmapData;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.geom.ColorTransform;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.system.Security;
	//
	// net.wonderfl
	import net.wonderfl.game.infinity_tank.development.*;
	import net.wonderfl.utils.SequentialLoader;
	/**
	 * ...
	 * @author 9re
	 */
	[SWF(backgroundColor="#000000")]
	public class BulletRenderer extends BulletRendererBase {
		private var _ctfm:ColorTransform;
		private var _bullet:BitmapData;
		private var _point:Point;
		
		private var _bulletImageList:/*Loader*/Array = [];
		
		
		public function BulletRenderer() {
			SequentialLoader.loadImages( [ "http://quickstorm.info/test/wonderfl/kayacMark.png" ], _bulletImageList, bulletImageLoaded );
		    
		    _bullet = new BitmapData( 1, 1 );
			_bullet.fillRect( new Rectangle( 0, 0, 1, 1 ), 0xffffffff );
			_ctfm = new ColorTransform( 1, 1, 1, 0.9 );
			_point = new Point();
		}
		
		private function bulletImageLoaded():void {
			_bullet = new BitmapData( _bulletImageList[ 0 ].width, _bulletImageList[ 0 ].height, true, 0x00000000 );
			_bullet.draw( _bulletImageList[ 0 ] );
		}
		
		override public function draw( bitmapData:BitmapData ):void {
			bitmapData.lock();
			// 弾道の尾を引かせるために前の像をアルファで少し残す
			bitmapData.colorTransform( bitmapData.rect, _ctfm );
			// myBulletListが自分の弾のリスト。このようにfor文で回す
			for ( var i:BoundBox = _scene.myBulletList; i; i = i.next ) {
				// i.positionに弾の座標が入ります。中心座標なので、左へ2、上へ3だけずらします
				_point.x = i.position.x - _bullet.width / 2;
				_point.y = i.position.y - _bullet.height / 2;
				
				// bitmapdataに弾のビットマップを座標の所へコピーする
				bitmapData.copyPixels( _bullet, _bullet.rect, _point );
			}
			bitmapData.unlock();
		}
	}
}