チェンジセット 1553

差分発生行の前後
無視リスト:
コミット日時:
2008/10/09 18:25:42 (3 年前)
コミッタ:
tarotarorg
ログメッセージ:

改造しすぎたので、branchesを作成した

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/TeraFire/src/com/trick7/effects/TeraFire.as

    r1552 r1553  
    22        import flash.display.BitmapData; 
    33        import flash.display.GradientType; 
    4         import flash.display.Graphics; 
    54        import flash.display.Sprite; 
    65        import flash.events.Event; 
     
    2120                private var fireH:Number; 
    2221                //火の色 
    23                 //private var fireColerIn:uint = 0xFFCC00; 
    24                 //private var fireColerOut:uint = 0xE22D09; 
     22                private var fireColerIn:uint = 0xFFCC00; 
     23                private var fireColerOut:uint = 0xE22D09; 
    2524 
    2625                private var ball:Sprite; 
     
    3433                 
    3534                //コンストラクタ 
    36                  
    37                 /** 
    38                  * 炎を表現します。 
    39                  * @param       xPos X座標 
    40                  * @param       yPos Y座標 
    41                  * @param       fireWidth 炎の幅 
    42                  * @param       fireHeight 炎の高さ 
    43                  * @param       fireColorIn 炎の内側部分の色 
    44                  * @param       fireColorOut 炎の外側部分の色 
    45                  */ 
    46                 public function TeraFire(xPos:Number = 0, 
    47                                                                  yPos:Number = 0, 
    48                                                                  fireWidth:Number = 30, 
    49                                                                  fireHeight:Number = 90, 
    50                                                                  fireColorIn:uint = 0xFFCC00, 
    51                                                                  fireColorOut:uint = 0xE22D09){ 
     35                public function TeraFire(xPos:Number=0, yPos:Number=0, fireWidth:Number=30, fireHeight:Number=90){ 
     36                        fireW = fireWidth; 
     37                        fireH = fireHeight; 
     38                        phaseRateX = 0; 
     39                        phaseRateY = 5; 
     40                        var matrix:Matrix = new Matrix(); 
     41                        matrix.createGradientBox(fireW,fireH,Math.PI/2,-fireW/2,-fireH*(focalPointRatio+1)/2); 
     42                        var colors:Array = [fireColerIn, fireColerOut, fireColerOut]; 
     43                        var alphas:Array = [1,1,0]; 
     44                        var ratios:Array = [30, 100, 220]; 
     45                         
    5246                        var home:Sprite = new Sprite(); 
    5347                        ball = new Sprite(); 
    54                         phaseRateX = 0; 
    55                         phaseRateY = 5; 
    56                         this.changeFire(fireWidth, fireHeight, fireColorIn, fireColorOut); 
     48                        //炎本体 
     49                        ball.graphics.beginGradientFill(GradientType.RADIAL,colors, alphas, ratios, matrix,"pad","rgb",focalPointRatio); 
     50                        ball.graphics.drawEllipse(-fireW/2,-fireH*(focalPointRatio+1)/2,fireW,fireH); 
     51                        ball.graphics.endFill(); 
     52                        //余白確保用透明矩形 
     53                        ball.graphics.beginFill(0x000000,0); 
     54                        ball.graphics.drawRect(-fireW/2,0,fireW+margin,1); 
     55                        ball.graphics.endFill(); 
    5756                        addChild(home); 
    5857                        home.addChild(ball); 
    5958                        this.x = xPos; 
    6059                        this.y = yPos; 
     60                        addEventListener(Event.ENTER_FRAME,loop); 
    6161                         
    62                         //ゆらぎは、他のSprite等にaddChildされた時のみ行うようにする 
    63                         addEventListener(Event.ADDED, function(e:Event):void { 
    64                                 addEventListener(Event.ENTER_FRAME,loop); 
    65                         }); 
    66                         addEventListener(Event.REMOVED, function(e:Event):void { 
    67                                 removeEventListener(Event.ENTER_FRAME, loop); 
    68                         }); 
     62                        //ゆらぎ用のBitmap(ステージに貼付ける必要はないのでBitmapに貼る必要はない) 
     63                        displaceImage = new BitmapData(fireW+margin,fireH,false,0xFFFFFFFF); 
     64                        //火の芯付近の揺らぎを抑える用のグラデーション 
     65                        var matrix2:Matrix = new Matrix(); 
     66                        matrix2.createGradientBox(fireW+margin,fireH,Math.PI/2,0,0); 
     67                        var gradient_mc:Sprite = new Sprite; 
     68                        gradient_mc.graphics.beginGradientFill(GradientType.LINEAR,[0x666666,0x666666], [0,1], [120,220], matrix2); 
     69                        gradient_mc.graphics.drawRect(0,0,fireW+margin,fireH);//drawのターゲットなので生成位置にこだわる必要はない。 
     70                        gradient_mc.graphics.endFill(); 
     71                        gradientImage = new BitmapData(fireW+margin,fireH,true,0x00FFFFFF); 
     72                        gradientImage.draw(gradient_mc);//gradient_mcを消す必要は? 
     73                        //同サイズの炎の揺らぎをランダム化 
     74                        rdm = Math.floor(Math.random()*10); 
     75                         
    6976                        //確認検証用コード 
    7077                        /*this.startDrag(true);//検証用マウス吸着 
     
    9198                        ball.filters = [dMap]; 
    9299                } 
    93                  
    94                 /** 
    95                  * 炎の大きさと色を変更する 
    96                  * @param       fireWidth 炎の幅 
    97                  * @param       fireHeight 炎の高さ 
    98                  * @param       fireColorIn 炎の内側部分の色 
    99                  * @param       fireColorOut 炎の外側部分の色 
    100                  */ 
    101                 public function changeFire(fireWidth:Number = 30, 
    102                                                                    fireHeight:Number = 90, 
    103                                                                    fireColorIn:uint = 0xFFCC00, 
    104                                                                    fireColorOut:uint = 0xE22D09):void { 
    105                         fireW = fireWidth; 
    106                         fireH = fireHeight; 
    107                         var matrix:Matrix = new Matrix(); 
    108                         matrix.createGradientBox(fireW,fireH,Math.PI/2,-fireW/2,-fireH*(focalPointRatio+1)/2); 
    109                         var colors:Array = [fireColorIn, fireColorOut, fireColorOut]; 
    110                         var alphas:Array = [1,1,0]; 
    111                         var ratios:Array = [30, 100, 220]; 
    112                          
    113                         ball.graphics.clear(); 
    114                         ball.graphics.beginGradientFill(GradientType.RADIAL,colors, alphas, ratios, matrix,"pad","rgb",focalPointRatio); 
    115                         ball.graphics.drawEllipse(-fireW/2,-fireH*(focalPointRatio+1)/2,fireW,fireH); 
    116                         ball.graphics.endFill(); 
    117                         //余白確保用透明矩形 
    118                         ball.graphics.beginFill(0x000000,0); 
    119                         ball.graphics.drawRect(-fireW/2,0,fireW+margin,1); 
    120                         ball.graphics.endFill(); 
    121  
    122                         //ゆらぎ用のBitmap(ステージに貼付ける必要はないのでBitmapに貼る必要はない) 
    123                         displaceImage = new BitmapData(fireW+margin,fireH,false,0xFFFFFFFF); 
    124                         //火の芯付近の揺らぎを抑える用のグラデーション 
    125                         var matrix2:Matrix = new Matrix(); 
    126                         matrix2.createGradientBox(fireW+margin,fireH,Math.PI/2,0,0); 
    127                         var gradient_mc:Sprite = new Sprite; 
    128                         gradient_mc.graphics.beginGradientFill(GradientType.LINEAR,[0x666666,0x666666], [0,1], [120,220], matrix2); 
    129                         gradient_mc.graphics.drawRect(0,0,fireW+margin,fireH);//drawのターゲットなので生成位置にこだわる必要はない。 
    130                         gradient_mc.graphics.endFill(); 
    131                         gradientImage = new BitmapData(fireW+margin,fireH,true,0x00FFFFFF); 
    132                         gradientImage.draw(gradient_mc);//gradient_mcを消す必要は? 
    133                         //同サイズの炎の揺らぎをランダム化 
    134                         rdm = Math.floor(Math.random()*10); 
    135                 } 
    136100        } 
    137101}