Fdream's Blog
专注于WEB前端开发
Powered by Google

学flash初期看到的经典3D代码

21 晴天 2005-5
Fdream 发表于 Flash, 已被阅读 15402 次, 评论 0 条
关键词:flash 3D AS
[ 阅读字体大小: ]

看下效果先:

记得当时是从一本书上抄来的,没有什么注释,现在又拿出来看了看,发现自己数学功底不够,还是没能看懂,哪位高人看懂了帮忙解释下,谢谢了!

引用内容:

function init(){

_root.createEmptyMovieClip("pad",1);

pad._x=270;

pad._y=200;

};

ya=Math.PI;

//设定观测点的距离

fl=10000;

x=new Array(-100,100,100,-100,-100,100,100,-100);

y=new Array(-100,-100,100,100,-100,-100,100,100);

z=new Array(-100,-100,-100,-100,100,100,100,100);

xp=new Array();

yp=new Array();

function square(x1,y1,x2,y2,x3,y3,x4,y4,col){

pad.beginFill(col,50);

pad.lineStyle(1,0,100);

pad.moveTo(x1,y1);

pad.lineTo(x2,y2);

pad.lineTo(x3,y3);

pad.lineTo(x4,y4);

pad.lineTo(x1,y1);

pad.endFill();

};

_root.onEnterFrame=function(){

init();

cosxa=Math.cos(xa);

sinxa=Math.sin(xa);

cosya=Math.cos(ya);

sinya=Math.sin(ya);

xa+=pad._ymouse/2000;

ya+=pad._xmouse/2000;

for(i=0;i<8;i++){

ypt=cosxa*y-sinxa*z;

zpt=cosxa*z+sinxa*y;

xpt=cosya*x-sinya*zpt;

zpt=cosya*zpt+sinya*x;

scale=fl/(fl+zpt+200);

xp=xpt*scale;

yp=ypt*scale;

};

square(xp[0],yp[0],xp[1],yp[1],xp[2],yp[2],xp[3],yp[3],0xff0000);

square(xp[0],yp[0],xp[3],yp[3],xp[7],yp[7],xp[4],yp[4],0x00ff00);

square(xp[4],yp[4],xp[5],yp[5],xp[6],yp[6],xp[7],yp[7],0x0000ff);

square(xp[1],yp[1],xp[2],yp[2],xp[6],yp[6],xp[5],yp[5],0xff00ff);

square(xp[0],yp[0],xp[1],yp[1],xp[5],yp[5],xp[4],yp[4],0xffff00);

square(xp[2],yp[2],xp[3],yp[3],xp[7],yp[7],xp[6],yp[6],0x00ffff);

};

_root.onMouseDown=function(){

_root.draw=true;

};

_root.onMouseUp=function(){

_root.draw=false;

};

Related articles 您可能对这些文章也感兴趣:
Related comments 与该文相关的评论:(我也想说几句)
Add a comment 我来说两句: 
禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
arrow
用户名:   密码:  (匿名可不写) 同时注册?
验证码:   看不清?换个图片  看不清楚?换个图片

 
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.1875024 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号