チェンジセット 1552

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

・炎のサイズ・色を変更可能にした
・他の表示オブジェクトに乗った時のみ、ゆらぐようにした

ファイル:

凡例:

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

    r1531 r1552  
    22        import flash.display.BitmapData; 
    33        import flash.display.GradientType; 
     4        import flash.display.Graphics; 
    45        import flash.display.Sprite; 
    56        import flash.events.Event; 
     
    4344                 * @param       fireColorOut 炎の外側部分の色 
    4445                 */ 
    45                 public function TeraFire(xPos:Number=0, yPos:Number=0, fireWidth:Number=30, fireHeight:Number=90, fireColorIn:uint = 0xFFCC00,fireColorOut:uint = 0xE22D09){ 
    46                         fireW = fireWidth; 
    47                         fireH = fireHeight; 
     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){ 
     52                        var home:Sprite = new Sprite(); 
     53                        ball = new Sprite(); 
    4854                        phaseRateX = 0; 
    4955                        phaseRateY = 5; 
    50                         var matrix:Matrix = new Matrix(); 
    51                         matrix.createGradientBox(fireW,fireH,Math.PI/2,-fireW/2,-fireH*(focalPointRatio+1)/2); 
    52                         //var colors:Array = [fireColerIn, fireColerOut, fireColerOut]; 
    53                         var colors:Array = [fireColorIn, fireColorOut, fireColorOut]; 
    54                         var alphas:Array = [1,1,0]; 
    55                         var ratios:Array = [30, 100, 220]; 
    56                          
    57                         var home:Sprite = new Sprite(); 
    58                         ball = new Sprite(); 
    59                         //炎本体 
    60                         ball.graphics.beginGradientFill(GradientType.RADIAL,colors, alphas, ratios, matrix,"pad","rgb",focalPointRatio); 
    61                         ball.graphics.drawEllipse(-fireW/2,-fireH*(focalPointRatio+1)/2,fireW,fireH); 
    62                         ball.graphics.endFill(); 
    63                         //余白確保用透明矩形 
    64                         ball.graphics.beginFill(0x000000,0); 
    65                         ball.graphics.drawRect(-fireW/2,0,fireW+margin,1); 
    66                         ball.graphics.endFill(); 
     56                        this.changeFire(fireWidth, fireHeight, fireColorIn, fireColorOut); 
    6757                        addChild(home); 
    6858                        home.addChild(ball); 
    6959                        this.x = xPos; 
    7060                        this.y = yPos; 
    71                         addEventListener(Event.ENTER_FRAME,loop); 
    7261                         
    73                         //ゆらぎ用のBitmap(ステージに貼付ける必要はないのでBitmapに貼る必要はない) 
    74                         displaceImage = new BitmapData(fireW+margin,fireH,false,0xFFFFFFFF); 
    75                         //火の芯付近の揺らぎを抑える用のグラデーション 
    76                         var matrix2:Matrix = new Matrix(); 
    77                         matrix2.createGradientBox(fireW+margin,fireH,Math.PI/2,0,0); 
    78                         var gradient_mc:Sprite = new Sprite; 
    79                         gradient_mc.graphics.beginGradientFill(GradientType.LINEAR,[0x666666,0x666666], [0,1], [120,220], matrix2); 
    80                         gradient_mc.graphics.drawRect(0,0,fireW+margin,fireH);//drawのターゲットなので生成位置にこだわる必要はない。 
    81                         gradient_mc.graphics.endFill(); 
    82                         gradientImage = new BitmapData(fireW+margin,fireH,true,0x00FFFFFF); 
    83                         gradientImage.draw(gradient_mc);//gradient_mcを消す必要は? 
    84                         //同サイズの炎の揺らぎをランダム化 
    85                         rdm = Math.floor(Math.random()*10); 
    86                          
     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                        }); 
    8769                        //確認検証用コード 
    8870                        /*this.startDrag(true);//検証用マウス吸着 
     
    10991                        ball.filters = [dMap]; 
    11092                } 
     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                } 
    111136        } 
    112137}