×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
软件安装教程 远程服务 超值!手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 6059|回复: 19

[AS] RGB 彩色的循环变化

[复制链接]
发表于 2010-6-7 10:13:52 | 显示全部楼层 |阅读模式
RGB 彩色的循环变化

文档类:
  1. package  {
  2.         import flash.display.Bitmap;
  3.         import flash.display.BitmapData;
  4.         import flash.display.Sprite;
  5.         import flash.events.Event;
  6.         import flash.events.MouseEvent;
  7.         import flash.filters.BitmapFilterQuality;
  8.         import flash.filters.BlurFilter;
  9.         import flash.geom.ColorTransform;
  10.         import flash.geom.Point;
  11.         import flash.geom.Rectangle;
  12.         import flash.events.TimerEvent;
  13.         [SWF(frameRate = "120", backgroundColor = "#000000")]

  14.         import flash.utils.Timer;
  15.         public class Main2 extends Sprite{
  16.                
  17.                 private var NUM_OF_DOT:uint = 480;
  18.                 private const RADIUS:uint = 70;
  19.                 private var RADIAN:Number = Math.PI * 2 / NUM_OF_DOT;
  20.                 private const GROW_SPEED:Number = 2; // in seconds
  21.                 private var petals:Number = 1;
  22.                
  23.                 private var CX:Number = stage.stageWidth / 2;
  24.                 private var CY:Number = stage.stageHeight / 2;
  25.                
  26.                 private var dots:Array = [];
  27.                 private var radian1:Number = 0;
  28.                 private var radian2:Number = 0;
  29.                 private const ADD:Number = Math.PI / 180 * 3;       
  30.                
  31.                 private var dotCanvas:Sprite;
  32.                 private var drawCanvas:BitmapData;
  33.                 private var viewCanvas:BitmapData;

  34.                 private const FADE:ColorTransform = new ColorTransform(1, 1, 1, 0.97, 0, 0, 0, 0);
  35.                 private const BLUR:BlurFilter = new BlurFilter(2, 2, BitmapFilterQuality.LOW);
  36.                 private const RECT:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
  37.                 private const ZERO_POINT:Point = new Point();
  38.                
  39.                 private var flg:Boolean;
  40.                
  41.                 private var myTimer:Timer = new Timer(1, 0);
  42.                 private var tracktime:int = 0;
  43.                

  44.                 public function Main2() {
  45.                         setup();
  46.                         myTimer.addEventListener(TimerEvent.TIMER, loop);
  47.                         stage.addEventListener(MouseEvent.CLICK, clickHandler);
  48.                         myTimer.start();
  49.                 }
  50.                
  51.                 private function setup():void {
  52.                         dotCanvas = new Sprite();
  53.                         drawCanvas = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0x000000);
  54.                         viewCanvas = drawCanvas.clone();
  55.                         addChild(new Bitmap(viewCanvas, "auto", false));
  56.                        
  57.                         for (var i:int = 0; i < NUM_OF_DOT; i++) {
  58.                                 var dot:Dot = new Dot();
  59.                                 var p:Point = Point.polar(RADIUS, RADIAN * i);
  60.                                 dot.x = p.x + CX;
  61.                                 dot.y = p.y + CY;
  62.                                 dot.radian = RADIAN * i + Math.PI / 2;
  63.                                 dotCanvas.addChild(dot);
  64.                                 dot.update();
  65.                                 dots[i] = dot;
  66.                         }
  67.                 }
  68.                
  69.                 private function loop(e:TimerEvent):void {
  70.                         if ( tracktime % ( e.currentTarget.delay * 20 * GROW_SPEED ) == 1 ) { petals+=.5; }
  71.                         radian2 = 0;
  72.                         for (var i:int = 0; i < NUM_OF_DOT; i++) {
  73.                                 var dot:Dot = dots[i];
  74.                                 var offset:Number = (Math.sin(radian1 + radian2) + 2);
  75.                                 var p:Point = Point.polar(RADIUS * offset, RADIAN * i);
  76.                                 dot.x = p.x + CX;
  77.                                 dot.y = p.y + CY;
  78.                                 dot.scaleX = dot.scaleY = offset * 1.5;
  79.                                 dot.update();
  80.                                 radian2 += ADD * petals;
  81.                         }
  82.                         radian1 += ADD;
  83.                        
  84.                         drawCanvas.draw(dotCanvas);
  85.                         viewCanvas.draw(drawCanvas);
  86.                         if (flg) {
  87.                                 drawCanvas.applyFilter(drawCanvas, RECT, ZERO_POINT, BLUR);
  88.                         } else {
  89.                                 drawCanvas.colorTransform(RECT, FADE);
  90.                         }
  91.                         tracktime++;
  92.                 }
  93.                
  94.                 private function clickHandler(e:MouseEvent=null):void {
  95.                         flg = !flg;
  96.                         //this.removeChild(dotCanvas);
  97.                         NUM_OF_DOT = Math.abs(NUM_OF_DOT / 2) + 20;
  98.                         RADIAN = Math.PI * 2 / NUM_OF_DOT;
  99.                         setup();
  100.                 }
  101.         }
  102. }


  103.         import flash.display.Graphics;
  104.         import flash.display.Shape;
  105.         import flash.display.Sprite;
  106.         import flash.events.Event;
  107.         import flash.geom.ColorTransform;
  108.        
  109.         class Dot extends Sprite {
  110.                
  111.                 public function set radian(value:Number):void { _radian = value; }
  112.                 private var _radian:Number = Math.PI / 2;
  113.                
  114.                 private const ADD:Number = Math.PI / 180;        // degree  radian 値
  115.                 private const OFFSET1:Number = Math.PI / 2;        // 90度
  116.                 private const OFFSET2:Number = Math.PI;     // 180度
  117.                
  118.                 public function Dot():void {
  119.                         var g:Graphics = graphics;
  120.                         g.beginFill(0xFFFFFF);
  121.                         g.drawCircle(0, 0, 1);
  122.                         g.endFill();
  123.                 }
  124.                
  125.                 public function update():void {
  126.                         _radian += ADD;
  127.                         var valR:Number = (Math.sin(_radian) + 1) / 2;
  128.                         var valG:Number = (Math.sin(_radian + OFFSET1) + 1) / 2;
  129.                         var valB:Number = (Math.sin(_radian + OFFSET2) + 1) / 2;
  130.                         var ct:ColorTransform = new ColorTransform(valR, valG, valB);
  131.                         transform.colorTransform = ct;
  132.                 }
  133.         }
复制代码
本帖的地址:http://bbs.jcwcn.com/forum.php?mod=viewthread&tid=308572
跟着教程做一遍,做完的图要到这里评论交作业,教程有看不懂的地方,可以在贴子下面评论

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x

评分

参与人数 1金币 +7 热心度 +2 收起 理由
清风掠影 + 7 + 2 精品文章

查看全部评分

发表于 2010-6-8 07:48:23 | 显示全部楼层
酷素材
交作业了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x

评分

参与人数 1金币 +3 收起 理由
清风掠影 + 3 王姐真勤快。。做得又好。。赞个

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-6-12 21:24:42 | 显示全部楼层
AS2.0还是3.0? 代码测试意外格式,jc:yun
回复 支持 反对

使用道具 举报

发表于 2010-6-12 23:41:20 | 显示全部楼层
要是代码旁边注释该多好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-13 08:47:40 | 显示全部楼层
酷素材
3# xxzhf

as3.0,用cs4打开。
回复 支持 反对

使用道具 举报

发表于 2010-6-13 20:10:43 | 显示全部楼层
酷素材
CS3不能做了,郁闷
回复 支持 反对

使用道具 举报

发表于 2010-6-13 21:49:52 | 显示全部楼层
80行代码打造奇幻光影
/////////////////////////////////////////////
///// author: chenlangeer              //////
/////    msn: chenlangeer@hotmail.com  //////
/////   blog: cgs.flash8.net           //////
/////////////////////////////////////////////
import flash.display.BitmapData;
import flash.filters.*;
import flash.geom.*;
_quality = "LOW";
_root.createTextField("logo", 10, 10, 10, 220, 18);
logo.html = true;
logo.htmlText = "<FONT FACE=’Arial’ SIZE=’14’ COLOR=’#FF9900’><A HREF=’http://cgs.flash8.net’ TARGET=’_blank’>Core Graph Studio</A>    </FONT><FONT FACE=’Arial’ SIZE=’12’ COLOR=’#999999’>click to redraw</FONT>";
_root.createTextField("para", 9, Stage.width-150, Stage.height-30, 150, 18);
para.html = true;
var bmp:BitmapData = new BitmapData(Stage.width, Stage.height, false, 0x0);
_root.attachBitmap(bmp, 0);
_root.createEmptyMovieClip("world", 2);
world.createEmptyMovieClip("_mc", 0);
world._mc._x = Stage.width/2;
world._mc._y = Stage.height/2;
var rad_speed:Number = 2;
var blurFilter:BlurFilter = new BlurFilter(2, 2, 1);
var f:Number = -.01;
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter([.9, -.1, 0, 0, f, 0, .8, -.2, 0, f, .1, 0, .9, 0, f, 1, 0, 0, 1, 0]);
var total_nums:Number = 10;
onMouseDown = function () {
for (var i in world._mc) {
  world._mc.removeMovieClip();
}
var a = Math.random()*.2;
t = (Math.random()-.5)*a;
z = (Math.random()-.5)*a;
para.htmlText = "<FONT SIZE=’12’ COLOR=’#999999’>z="+Math.round(z*10000)/10000+"    t="+Math.round(t*10000)/10000+"</FONT>";
rad_speed = (Math.random()-.5)*3.8;
line_bool = random(5);
swirl_bool = random(3);
rnd_xy_bool = random(4);
var i = 0;
for (k=0; k<total_nums; k++) {
  for (m=0; m<360; m += 5) {
   var line:MovieClip = world._mc.createEmptyMovieClip("line"+i, i);
   if (rnd_xy_bool) {
    line.ox = line.__x=line._x=k*Math.sin(m/180*Math.PI)*8+Math.random()*20;
    line.oy = line.__y=line._y=k*Math.cos(m/180*Math.PI)*6+Math.random()*20;
   } else {
    line.ox = line.__x=line._x=k*Math.sin(m/180*Math.PI)*8;
    line.oy = line.__y=line._y=k*Math.cos(m/180*Math.PI)*6;
   }
   line.lx = line._x*.3;
   line.ly = line._y*.3;
   if (random(3)) {
    (new Color(line)).setTransform({rb:i*512/k/m-256, gb:i*255/k/m, bb:random(512)-256});
   } else {
    (new Color(line)).setTransform({rb:255, gb:255, bb:255});
   }
   line.onEnterFrame = function() {
    if (swirl_bool) {
     var x = this.__x;
     this.__x += 10*Math.cos(this.__y*z)*Math.sin(this.__y*t);
     this.__y += 10*Math.sin(x*z)*Math.cos(x*t);
    } else {
     this.__x += 10*Math.cos(this.__y*z)*Math.sin(this.__y*t);
     this.__y += 10*Math.sin(this.__x*z)*Math.cos(this.__x*t);
    }
    this.clear();
    this.lineStyle(1, 0x66EE66);
    if (line_bool>1) {
     this.moveTo(this.ox-this._x, this.oy-this._y);
     this.lineTo(this.__x-this._x, this.__y-this._y);
    } else if (line_bool == 1) {
     this.moveTo(this.ox, this.oy);
     this.lineTo(this.__x+this.lx, this.__y+this.ly);
    } else {
     this.moveTo(this.ox-this.lx, this.oy-this.ly);
     this.lineTo(this.__x-this.lx, this.__y-this.ly);
    }
    this.ox = this.__x;
    this.oy = this.__y;
   };
   i++;
  }
}
clearInterval(val);
val = setInterval(onMouseDown, 20000);
};
onEnterFrame = function () {
world._mc._rotation += rad_speed;
bmp.draw(world);
bmp.applyFilter(bmp, bmp.rectangle, new Point(0, 0), blurFilter);
bmp.applyFilter(bmp, bmp.rectangle, new Point(0, 0), colorFilter);
};
world._visible = false;
world._y = 100000;
onMouseDown();

能不能修改成上面可加图层的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-14 07:59:32 | 显示全部楼层
6# xxzhf
cs3可以做,只要是cs3以上版本都可以。
回复 支持 反对

使用道具 举报

发表于 2010-7-12 09:23:51 | 显示全部楼层
学一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x
回复 支持 反对

使用道具 举报

发表于 2010-7-12 09:24:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2010-7-12 09:46:57 | 显示全部楼层
学习

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[立即注册]

x
回复 支持 反对

使用道具 举报

发表于 2010-7-12 17:14:53 | 显示全部楼层
怎么做的.请老师写下教程.
没有做出来{:1_169:}
我用的是CS5
回复 支持 反对

使用道具 举报

发表于 2010-7-13 15:32:54 | 显示全部楼层
有些句子读不懂,能注释就好了
回复 支持 反对

使用道具 举报

发表于 2012-7-18 15:37:51 | 显示全部楼层
可惜没有教程,学习起来吃力了!!!
回复 支持 反对

使用道具 举报

发表于 2014-6-7 14:33:51 | 显示全部楼层
学一下啊   吧 错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则

2345