RedBulletRenderer

by tkinjo forked from Wonderfl Tank Game BulletRenderer Sample 1 (diff: 244)
このコードを新着弾一覧http://flash-games.wonderfl.net/tank/list/bullets
に表示させるためにはinfinite-tank-bullet
というタグを追加してください
♥0 | Line 31 | Modified 2009-10-26 15:52:55 | MIT License
play

ActionScript3 source code

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

// forked from 9re's Wonderfl Tank Game BulletRenderer Sample 1
// このコードを新着弾一覧http://flash-games.wonderfl.net/tank/list/bullets
// に表示させるためにはinfinite-tank-bullet
// というタグを追加してください
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.*;
    /**
     * @author 9re
     */
    [SWF(backgroundColor="#000000")]
    // クラス名は必ずBulletRendererにして、BulletRendererBaseを拡張して下さい
    // // http://flash-games.wonderfl.net/static/asdoc/net/wonderfl/game/infinity_tank/bullet/BulletRendererBase.html
    public class BulletRenderer extends BulletRendererBase
    {
        private var bullet:BitmapData;
            
        public function BulletRenderer() {
            bullet = new BitmapData(6, 6);
            bullet.fillRect(new Rectangle(0, 0, 6, 6), 0xffff0000);
        }
            
        // このメソッドは毎フレーム呼ばれます。
        // _sceneプロパティーについては、詳しくは
        // http://flash-games.wonderfl.net/static/asdoc/net/wonderfl/game/infinity_tank/model/BattleScene.html
        // をご覧下さい 
        override public function draw(bitmapData:BitmapData):void {
                
            bitmapData.lock();
                
            // 弾道の尾を引かせるために前の像をアルファで少し残す
            bitmapData.colorTransform(bitmapData.rect, new ColorTransform(1, 1, 1, 1 - 1/16));
            
            // myBulletListが自分の弾のリスト。このようにfor文で回す
            for (var boundBox:BoundBox = _scene.myBulletList; boundBox != null; boundBox = boundBox.next) {
                
                var point:Point = new Point();
                    
                // i.positionに弾の座標が入ります。中心座標なので、左へ3、上へ3だけずらします
                point.x = boundBox.position.x - 3;
                point.y = boundBox.position.y - 3;
                    
                // bitmapdataに弾のビットマップを座標の所へコピーする
                bitmapData.copyPixels(bullet, bullet.rect, point);
            }
                
            bitmapData.unlock();
        }
    }
}

Forked