ander michelle的又一作品——curtain,照例奉上源文件

说实话他的作品确实很精彩,看过下面的网址就知道了
http://lab.andre-michelle.com/
每一个作品都凝聚了作者不少的心血,于是对像我这样刚入门不久的人来说,看起来就有点费劲,贴上来也是希望在大家的帮助下能把源文件分析得透彻一点,这样也有利于自己水平的提高。
演示地址: http://www.healdream.com/blog/upload/curtain.swf
class Strings
{
static var MAINNODES_NUM: Number = 6;
static var STRINGS_NUM: Number = 20;//定义线条数

private var timeline: MovieClip;
private var mainNodes: Array;
private var stringClips: Array;

function Strings( timeline: MovieClip )
{
this.timeline = timeline;

init();
}

private function init( Void ): Void
{
//-- Main Nodes (height)
var dh: Number = 400 / ( MAINNODES_NUM - 1 );

mainNodes = new Array;

var mainNode: Object;

for( var i = 0 ; i < MAINNODES_NUM ; i++ )
{
// cx: center X
mainNode = { cx: 200, cy: i * dh };

mainNode.ra = Math.random() * Math.PI * 2;
mainNode.xa = Math.random() * Math.PI * 2;
mainNode.ya = Math.random() * Math.PI * 2;

mainNodes.push( mainNode );
}

//-- String Nodes
stringClips = new Array;

for( var s = 0 ; s < STRINGS_NUM ; s++ )
{
stringClips[s] = timeline.createEmptyMovieClip( s.toString(), s );
}
}

function render(): Void
{
var sin: Function = Math.sin;
var cos: Function = Math.cos;

var n: Number = MAINNODES_NUM;
var i: Number;

var dx: Number;
var dy: Number;
var qi: Number;

var mainNode: Object;
var stringClip: MovieClip;
var moveTo: Boolean = true;

while( --n > -1 )
{
mainNode = mainNodes[n];

mainNode.x = cos( mainNode.ra ) * sin( mainNode.xa ) * 100;

if( n > 0 && !moveTo )
{
mainNode.y = sin( mainNode.ra ) * cos( mainNode.ya ) * 100;
}
else
{
mainNode.y = 0;
}

//-- random rotation
mainNode.ra += Math.random() / 75 + .005;
mainNode.xa += Math.random() / 75 + .006;
mainNode.ya += Math.random() / 75 + .007;

i = STRINGS_NUM;
dx = mainNode.x / ( i - 1 ) * 2;
dy = mainNode.y / ( i - 1 ) * 2;

while( --i > -1 )
{
//-- fake a 3D effect by Quad.easeOut
qi = i * i / STRINGS_NUM;

stringClip = stringClips[i];

if( moveTo )
{
stringClip.clear();
stringClip.lineStyle( 0, 0xF0F3E0, 10 + qi * ( 90 / STRINGS_NUM ) );
stringClip.moveTo( stringClip.px = mainNode.cx + mainNode.x - dx * qi, stringClip.py = mainNode.cy + mainNode.y - dy * qi );
}
else if( n > 0 )
{
var px = stringClip.px;
var py = stringClip.py;

var mx = ( px + ( stringClip.px = mainNode.cx + mainNode.x - dx * qi ) ) / 2;
var my = ( py + ( stringClip.py = mainNode.cy + mainNode.y - dy * qi ) ) / 2;

stringClip.curveTo( px, py, mx, my );
}
else
{
stringClip.curveTo( stringClip.px, stringClip.py, mainNode.cx + mainNode.x - dx * qi, 0 );
}
}

moveTo = false;
}
}
}

源文件地址:http://www.healdream.com/blog/upload/curtain.fla

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值