⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 engine3d.as

📁 FlashEd 0.2 是个游戏引擎包
💻 AS
📖 第 1 页 / 共 2 页
字号:
	}	function removeCamera(cam) {		delete cameras[camera._id];	}	function setCamera(cam) {		return camera=cam;	}	function reset() {		var rT = render;		render = null;		for (var i in models) {			models[i].onRemove();		}		delete models;		depths = new Object();		models = new Object();		camera = undefined;		cameras = new Object();		idModels = 1;		removeMovieClip(depositoGrafico);		this.createEmptyMovieClip("depositoGrafico", 1);		for (var j = 0; j<layers; j++) {			var la = depositoGrafico.createEmptyMovieClip("layer"+j, (j+1)*2);			la._depth = (j+1)*2;			la.ids = 0;		}		render = rT;	}	function onEnterFrame() {		render();	}	function render() {		depths = new Object();		var c = camera;		if(c.doLink == true){            if(c.doLinkRota==true){                var lr = c.link.getRotation()                var xr = lr.y + c.linkRotaOffsetAngle                var offR = c.linkRotaOffsetZ                var off = c.linkOffset                off.z = Math.sin(xr)*offR                off.x = Math.cos(xr)*offR            }            if (c.linkTipoEasyng == 1) {                var cCoord = c.getCoordinates()                //trace(cCoord.x +":"+cCoord.y+":")                var lCoord = c.link.getCoordinates()                var lpar = c.linkParamsEasyng[0]                var off = c.linkOffset                var dif = {x:(lCoord.x + off.x)-cCoord.x,y:(lCoord.y + off.y)-cCoord.y,z:(lCoord.z + off.z)-cCoord.z}                //trace(dif.x+":"+dif.y+":" +dif.z)                var step = {x:dif.x*lpar,y:dif.y*lpar,z:dif.z*lpar}                //trace(step.x +":"+step.y+":"+step.z)                c.setCoordinates(cCoord.x+step.x, cCoord.y+step.y, cCoord.z + step.z)            }		}		if (c.doPivot == true) {			var PIVOTold = c.pivotOldCoord;			var PIVOTccoor = c.getCoordinates();			var PIVOTpcoor = c.pivot.getCoordinates();			if (PIVOTold.x != PIVOTpcoor.x || PIVOTold.y != PIVOTpcoor.y || PIVOTold.z != PIVOTpcoor.z || c.doLinkRota==true) {			//le agrego que esto lo haga si c.doLinkRota==true porque quizas solo roto al pivot				if (PIVOTpcoor.z>=PIVOTccoor.z) {					//rx					var r = Math.atan2(PIVOTpcoor.x-PIVOTccoor.x, PIVOTpcoor.z-PIVOTccoor.z);					//ry					var iz1 = PIVOTccoor.z					var iz2 = PIVOTpcoor.z					var ix1 = PIVOTccoor.x					var ix2 = PIVOTpcoor.x					var ipo = Math.sqrt((ix2-ix1)*(ix2-ix1)+(iz2-iz1)*(iz2-iz1))					//trace(ipo);					var r2 = Math.atan2(PIVOTpcoor.y-PIVOTccoor.y,ipo);					//var r2 = Math.atan2(PIVOTpcoor.y-PIVOTccoor.y, PIVOTpcoor.z-PIVOTccoor.z);				} else {					//rx					var r = Math.atan2(PIVOTpcoor.x-PIVOTccoor.x, PIVOTpcoor.z-PIVOTccoor.z);					var iz1 = PIVOTpcoor.z					var iz2 = PIVOTccoor.z					var ix1 = PIVOTccoor.x					var ix2 = PIVOTpcoor.x					var ipo = Math.sqrt((ix2-ix1)*(ix2-ix1)+(iz2-iz1)*(iz2-iz1))					//trace(ipo);					var r2 = Math.atan2(PIVOTpcoor.y-PIVOTccoor.y,ipo);				}				/*if (r>1.5707963267949) {									var rr = r%1.5707963267949;								} else {									var rr = r;								}*/				c.setRotation(-r2, r);				c.pivotOldCoord = new Object();				c.pivotOldCoord.x = PIVOTpcoor.x;				c.pivotOldCoord.y = PIVOTpcoor.y;				c.pivotOldCoord.z = PIVOTpcoor.z;			}		}		var mr = models;		//!!!!!!!!!!!ESTA PARTE DESPUES PODRIA HACERLA SOLO CUANDO SE MUEVE LA CAMARA		var cx = c.x;		var cy = c.y;		var cz = c.z;		var fov = c.fov;		var xsin = Math.sin(c.xrot);		var xcos = Math.cos(c.xrot);		var ysin = Math.sin(c.yrot);		var ycos = Math.cos(c.yrot);		//!!!!!!!!!!!		for (var i in mr) {			var m = mr[i];			if (m.doOnTicker == true) {				m.onTicker();			}			//if (m.isFreezado != true) {			var pl = m.coords;			var inv = false;			var cpol = -1;			for (var j in pl) {				cpol++;				var p = pl[j];				var px = p.wx-cx;				var py = p.wy-cy;				var pz = p.wz-cz;				var x = ycos*px-ysin*pz;				var tz = ycos*pz+ysin*px;				var z = xcos*tz-xsin*py;				var y = xcos*py+xsin*tz;				var k = fov/z;				if (k<0) {					inv = true;					break;				}				p.k = k;				//esta linea que sigue la pongo aca, porque es en verda el if de los fx, esto es para ahorrarme el else				p.vx = x*k;				if (FX1Mode == true && m.doFX1 == true) {					if (m.coordsFX1[cpol] != undefined && m.coordsFX1[cpol] != null) {						p.vx = x*k+(FX1Fac+m.modFacFX1);					}				}				if (FX2Mode == true && m.doFX2 == true) {					if (p.vx>0) {						p.vx = (x*k)*((x*k)/(FX2Fac+m.modFacFX2));					}				}				p.vy = y*k;				p.vz = z;			}			//}			if (inv) {				var pr = m.polygons;				for (var j in pr) {					var prjm = pr[j].mc;					prjm.dr.clear();					for (var j2 in prjm.at) {						prjm.at[j2].removeMovieClip();						removeMovieClip(prjm.at[j2]);					}				}				m.isDisplayed = false;				continue;			}			//esto es si no es invisible			var pr = m.polygons;			//var coo = m.coords			//no, para eso ya esta pl, que son las coords			for (var j in pr) {				var p = pr[j];				if (freezeMode == true) {					if (m.isFreezable == true && p.isFreezado == false) {						if (random(porFrezar+m.modPorFrezar) == 0) {							onFreezeModel();							p.isFreezado = true;							//m.isFreezado = true						}					}				} else {					p.isFreezado = false;					//m.isFreezado = false				}				if (p.isFreezado != true) {					var mcdr = p.mc.dr;					var mcat:MovieClip = p.mc.at;					mcdr.clear();					if (m.isColorVar == true) {						if (p.modColorF == null) {							var vc = random(m.modColorA)+m.modColorB;							p.modColorF = vc;						} else {							var vc = p.modColorF;						}					} else {						var vc = 0;					}					mcdr.beginFill((m.red+vc) << 16 | (m.green+vc) << 8 | (m.blue+vc), m.alpha);					var u = 0;					var atts = 0;					//para llevar el control de los attachs					//var zz = 0;					var cuentaPuntos = new Object();					for (var ii = 0; ii<p.listaDibujar.length; ii++) {						var pi = p.listaDibujar[ii];						//pi = [coordIndice, tipo, [params]]						var Tcoo = pl[pi[0]];						switch (pi[1]) {						case "lineTo" :							//zz += Tcoo.vz;							cuentaPuntos[pi[0]] = Tcoo.vz;							mcdr.lineTo(Tcoo.vx, Tcoo.vy);							break;						case "moveTo" :							mcdr.moveTo(Tcoo.vx, Tcoo.vy);							break;						case "curveTo" :							//zz += Tcoo.vz;							cuentaPuntos[pi[0]] = Tcoo.vz;							var Tcoo2 = pl[pi[2][0]];							mcdr.curveTo(Tcoo2.vx, Tcoo2.vy, Tcoo.vx, Tcoo.vy);							break;						case "beginFill" :							//trace(pi[2][0]+":"+ pi[2][1])							mcdr.beginFill(pi[2][0], pi[2][1]);							break;						case "lineStyle" :							mcdr.lineStyle(pi[2][0], pi[2][1], pi[2][2]);							break;						case "attach" :							//zz += Tcoo.vz;							cuentaPuntos[pi[0]] = Tcoo.vz;							var atid = atts++;							if (m.isDisplayed == false) {								var atmc = mcat.attachMovie(pi[2][0], "a"+atid, atid+1);							} else {								var atmc = mcat["a"+atid];							}							atmc._x = Tcoo.vx;							atmc._y = Tcoo.vy;							atmc._xscale = atmc._yscale=int(k*100);							break;						case "attachif" :							//zz += Tcoo.vz;							cuentaPuntos[pi[0]] = Tcoo.vz;							var atid = atts++;							if (random(pi[2][1]) == 0) {								var atmc = mcat.attachMovie(pi[2][0], "a"+atid, atid+1);							}							atmc._x = Tcoo.vx;							atmc._y = Tcoo.vy;							atmc._xscale = atmc._yscale=int(k*100);							break;						case "attachFreeze" :							var atid = atts++;							break;						case "attachFreezeAnim" :							//no reatachea							var atid = atts++;							break;						case "attachFreezeRandom" :							//que sea una lista paa atachar							var atid = atts++;							break;						}					}					mcdr.endFill();					var cdep = 0;					var cdepT = 0;					for (var dep in cuentaPuntos) {						cdep++;						cdepT += cuentaPuntos[dep];					}					var cdepF = cdepT/cdep;					var dd = m.modDepth-int(cdepF*10);					while (depths["d"+dd] == true) {						dd--;					}					depths["d"+dd] = true;					p.mc.swapDepths(dd);				}			}			if (m.isFreezado != true) {				m.isDisplayed = true;			}		}	}	function setScene(s) {		reset();		scenes[s](this);	}	function onFreezeModel() {	}	function addTexture(l, t) {		var d = depositoGrafico["layer"+l]._depth;		var m = depositoGrafico.attachMovie(t, "t"+l, d-1);		m.setMask(depositoGrafico["layer"+l]);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -