flashdevelop flash 型

flashdevelopの方が公式より使いやすいな!
特にコードでつくっていく場合には。
flashdevelopでMainというプロジェクトを作って、
src/Main.asに書くとswfができる。
お手本を参考に(ただ削っただけ)、どこに何を書くべきなのかまとめておく。
お手本:http://wonderfl.net/c/rp2U/
Main.as

package{
 import 
 [SWF]
 public class Main extends Sprite{}
 private func():void{}
}
要素だけ抽出するとこんな感じ。下のはより具体的
package
{
    import flash.display.Bitmap;
    
    [SWF(width = "465", height = "465", backgroundColor = "0x000000", frameRate = "30")]
    
    //メンバ変数、コンストラクタ、その他関数の順番か。たしかにわかりやすい
    public class Main extends Sprite
    {
        private const WIDTH:Number = 465;
        private const HEIGH:Number = 465;
        private var _particles:Array;//なぜここで=[]しない?
        
        public function Main()
        {
            init();
        }
        
        //new, addchild, addeventlistenerとかはここで
        private function init():void
        {
            _particles = [];
            _canvas = new BitmapData(WIDTH, HEIGH, false, 0x0);
            addChild(new Bitmap(_canvas)) as Bitmap;

            this.stage.addEventListener(Event.ENTER_FRAME, enterframeHandler);
        }
        
        //イベントハンドラ(関数)はprivate
        private function resetFunc(e:TimerEvent):void
        {
            (cTra.redMultiplier > 0.9)? cTra.redMultiplier = 0.8 : cTra.redMultiplier += 0.01;  
            hanabi();
        }
        
        private function hanabi():void 
        {
            var i:int = 200;
            sx = Math.random()*WIDTH;
            sy = Math.random()*HEIGH/3;
            while (i--) createParticle();
            //while(i--)という書き方か
        }
        
        private function createParticle():void {
            //ローカル変数には短い名前をつけたい
            var p:Particle = new Particle();
            p.x = sx;
            p.y = sy;
            
            //配列に押し込む
            //管理する配列は、クラス変数
            _particles.push(p);
        }
        
        //毎フレーム呼ぶ関数
        private function enterframeHandler(e:Event):void
        {
            update();//update()の中で描画もしている
        }
        
        //lockすると軽くなるようだ
        private function update():void {
            //いろんな処理を施すため、少しでも軽くするためにlockしておく。→描画をロックするのね
            //以後、unlockがかかるまで見た目の描画は更新されない(裏では更新されてる)
            _canvas.lock();
            
            //キャンバスをぼかす
            //_canvasはBitmapDataで、MainにaddChildされている
            _canvas.applyFilter(_canvas, _rect, new Point(), new BlurFilter(1, 1));
            
            //_canvasの色を変える(超重要!)
            //ただ色を変えるだけでなく、古いピクセルの明度をどんどん落としていってる
            //これをコメントアウトすると大変なことに・・・。
            _canvas.colorTransform(_rect, cTra);
            
            //_particles.lengthの数だけ処理
            var i:int = _particles.length;

            //i--な理由は、spliceを使うから
            while (i--) {
                var p:Particle = _particles[i];
                p.x += p.vx;
                p.y += p.vy;
                //_canvasのひとつのピクセルにパーティクルを描く
                _canvas.setPixel32(p.x, p.y, p.c);
                
                //パーティクルがステージ外に行ったりパーティクルの速度が.01を切ったら
                //_particles配列からそのパーティクルを除去する
                if ((p.x > stage.stageWidth || p.x < 0) || (p.y < 0 || p.y > stage.stageHeight) || Math.abs(p.vx) < .01 || Math.abs(p.vy) < .01)
                {
                    this._particles.splice(i, 1);
                }
            }
            
            //処理が完了したのでunlockで更新。
            _canvas.unlock();
            
            //Glowエフェクト用Bitmapに描画。これを無くすと光ってるように見えない。試しに外してみると一目瞭然。
            //多分BlendMode.ADDが効いてる・・・のかな?NORMALにしたらやばかった。
            //
            //_glowはstageの1/4の大きさなので、_canvasを1/4の大きさにしたものをdrawしなければならない
            //ここでは1/4となってるが、addChildしてある「_glowを元としたBitmap」によって4倍されるので問題なし?
            //試しにMatrixをとってみると、ステージの4倍の大きさの_glowがお目見えします。
            //花火がめちゃくちゃ近いよ!やけどするよ!
            _glow.draw(_canvas, new Matrix(0.25, 0, 0, 0.25));
        }
    }
}

//AS3 CLASS
class Particle
{
    public var x:Number;
    public var y:Number;
    public var vx:Number;
    public var vy:Number;
    public var c:uint;
    
    public function Particle()
    {
        this.x = 0;
        this.y = 0;
        this.vx = 0;
        this.vy = 0;
        this.c = 0xFFFFFFFF;
    }
}