快速业务通道

3D盒子

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12
ateEmptyMovieClip("TextureLayer",2);
for(var i in Rectlist){
//贴图绑定
Rectlist[i].actable=true; //并且通过检测这个变量,做到尽量不执行AS
var Texturenow=Texturelayer.createEmptyMovieClip("套子"+i,i);
//..............................................................
Rectlist[i].texture2=[]; //"texture2[]"用于指向这个面的4个三角形
for(var j=0;j<4;j++){ //将每个面分割为4个三角形(上-右-下-左)
var Texturenow2=Texturenow.createEmptyMovieClip("三角图"+i+"_"+j,(i+1)*(j+1));
//Texturenow2.j=j;//j为0-1-2-3,分别对应于四个三角形:0上-1右-2下-3左
var pic=Texturenow2.createEmptyMovieClip("pic",0);
//----------建立三角形遮罩-------
var maskMC=pic.createEmptyMovieClip("遮罩",1);
maskMC.lineStyle(0,0);
maskMC.beginFill(0);
maskMC.moveTo(2,2);
maskMC.lineTo(-100,0);
maskMC.lineTo(0,-100);
maskMC.lineTo(1,1);
maskMC.endFill();
var maskedMC=pic.attachMovie(Rectlist[i].pp_name,"pic00",0);//贴上原始图片
maskedMC._rotation=-45-90*j;//原始图片旋转到指定角度
maskedMC.setMask(maskMC);
//------------end---------------
Texturenow2._visible=0;
Rectlist[i].texture2[j]=Texturenow2;
}
//.............................................................
//Texturenow._visible=0; //移出屏幕
//Texturenow._alpha=50;
Rectlist[i].texture=Texturenow;//"texture"用于指向这个面的整个图形
}
//-----------------------------------------------------------------------------------------------
// 渲染函数
// ====================将正方形的MC贴到任意平行四边形====================================
function renderTriTexture(va, vb, vc, textureMC){
var Rander=false;
//a、c相对b的坐标(a,b) (c,d)
var a=va.vx-vb.vx
var b=va.vy-vb.vy
var c=vc.vx-vb.vx
var d=vc.vy-vb.vy
//检验表面方向,如果顶点A、B、C旋向为逆时针则为正面
if (a<0&&d>=c*b/a) Rander=true;
else if (a>0&&d<=c*b/a) Rander=true;
else if (a==0){
if (b>0&&c>=0) Rander=true;
if (b<=0&&c<0) Rander=true;
}
//第三步把图形逆时针转动角Angle3 = 0.5 * arctg( 2(ab+cd) / bb+dd-aa-cc )
if(Rander){
var Angle3=0.5*Math.atan(2*(a*b+c*d)/(b*b+d*d-a*a-c*c));
if (!isFinite(Angle3)) Angle3=1.5707963267949
var cosAngle3=Math.cos(Angle3);
var sinAngle3=Math.sin(Angle3);
//第二步的结果设为(Xa,Ya) ,(0,0) , (Xc,Yc),就是将最终显示顺时针转动Angle3
var Xa=a*cosAngle3-b*sinAngle3;
var Ya=a*sinAngle3+b*cosAngle3;
var Xc=c*cosAngle3-d*sinAngle3;
var Yc=c*sinAngle3+d*cosAngle3;
//要注意某数为0的错误
if(Xa==0&&Xc==0||Ya==0&&Yc==0){
rander=false;
}else if (Yc!=0&&Ya!=0){
var scale=Xa/Yc; //横纵相对缩放率
var reallength=Math.sqrt(Xc*Xc+Yc*Yc*scale*scale)//正方形整体拉伸之后边长
var xscale=reallength/100; //第二步要设置的贴图的_xscale
var yscale=reallength/100*Yc/Xa //和_yscale
//第一步图形顺时针旋转Angle1
var Angleco=180/Math.PI; //弧度->角度转换系数
if ((Ya/scale)<=0) var Angle1=90-Math.atan(Xa/Ya/scale)*Angleco
else if ((Ya/scale)>0) var Angle1=270-Math.atan(Xa/Ya/scale)*Angleco
}else if(Ya==0){
var xscale=Xa/100;
var yscale=Yc/100;
Angle1=180
}else if(Yc==0){
var xscale=Xc/100;
var yscale=Ya/-100;
Angle1=90;
}
}
//开始贴图
//-------------------------------------
if(Rander){
textureMC._visible=1;
textureMC._x=CameraCenterX+vb.vx;
textureMC._y=CameraCenterY+vb.vy;
textureMC._xscale=100*xscale;
textureMC._yscale=100*yscale;
texture

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号