Home > Flash | WEB > Flashで色を次々に、スムーズに変える

Flashで色を次々に、スムーズに変える

このようなFlash、よく見るので調べて作ってみた。

参考)
ムービークリップの色を変化させる
http://www.project-nya.jp/modules/weblog/details.php?blog_id=468

このソースを頂戴し、さらにTweenerを使って色から色へ自動的に段階的に変えています。

↓ ソースコード

ACTIONSCRIPT:
  1. package {
  2.     import caurina.transitions.Tweener;
  3.    
  4.     import flash.display.Sprite;
  5.     import flash.geom.ColorTransform;
  6.     import flash.utils.*;
  7.  
  8.     public class ColorTest extends Sprite
  9.     {
  10.         private var circle:Sprite;
  11.         private var colorListIndex:Number = 0;
  12.         // 色のリスト
  13.         private var colorList:Array = [0xFF9999, 0x99FF99, 0x9999FF, 0xFFFF99, 0x99FFFF ];
  14.        
  15.         private var gradeMax:Number = 100;
  16.         private var baseColor:Number = 0xFF0000;
  17.         private var targetColor:Number = 0x0000FF;
  18.        
  19.         public var grade:Number = 0;
  20.  
  21.         public function ColorTest()
  22.         {
  23.             stage.scaleMode = "noScale";
  24.             stage.align = "TL";
  25.            
  26.             circle = new Sprite;
  27.             circle.graphics.beginFill(colorList[colorListIndex]);
  28.             circle.graphics.drawCircle(100,100,95);
  29.             circle.graphics.endFill();
  30.            
  31.             this.addChild(circle);
  32.             changeColor();
  33.         }
  34.        
  35.         private function changeColor():void{
  36.             grade = 0;
  37.            
  38.             // 今の色
  39.             baseColor = this.colorList[colorListIndex];
  40.            
  41.             colorListIndex++;
  42.             if(colorListIndex>= colorList.length) colorListIndex = 0;
  43.            
  44.             // 次の色
  45.             targetColor = this.colorList[colorListIndex];
  46.             Tweener.addTween(this, {grade:100, time:2, onUpdate:this.updateColor, onComplete:this.changeColor});
  47.         }
  48.        
  49.         private function updateColor():void{
  50.             var baseObj:Object = this.colorToRGB(baseColor);
  51.             var targetObj:Object = this.colorToRGB(targetColor);
  52.             var r:Number = baseObj.r + Math.round((targetObj.r - baseObj.r)/gradeMax*grade);
  53.             var g:Number = baseObj.g + Math.round((targetObj.g - baseObj.g)/gradeMax*grade);
  54.             var b:Number = baseObj.b + Math.round((targetObj.b - baseObj.b)/gradeMax*grade);
  55.            
  56.             circle.transform.colorTransform = new ColorTransform(0, 0, 0, 100, r, g, b, 0);
  57.         }
  58.        
  59.         public function colorToRGB(clr:Number):Object {
  60.             var r:Number = (clr & 0xFF0000)>> 16;
  61.             var g:Number = (clr & 0x00FF00)>> 8;
  62.             var b:Number = clr & 0x0000FF;
  63.             var obj:Object = {r: r, g: g, b: b};
  64.             return obj;
  65.         }
  66.     }
  67. }

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://parpue.net/web/380/trackback
Listed below are links to weblogs that reference
Flashで色を次々に、スムーズに変える from parpue.net

Home > Flash | WEB > Flashで色を次々に、スムーズに変える

リンク
chocolataste-planner
millon

サーチ
Feeds
Meta
blog ranking ブログランキング・にほんブログ村へ
にほんブログ村 テクノラティのお気に入りに追加する

Return to page top