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

📄 model.as

📁 FlashEd 0.2 是个游戏引擎包
💻 AS
字号:
/*******************ENGLISHproject: 3d engineby: ivan ivanoff (www.i2off.org)based on the work made by : stuart schoneveld (www.illogicz.com) email: avatar@i2off.orgapologies:	to my wife and kids for supporting me.	to jorge, valerialaura & mariano, for bothering them all the time.	thx to valerialaura for the english translation--------------------ABOUT THIS CLASSit is instanciated to create a model--------------------ABOUT IT'S PUBLIC METHODS-setFreezable(f, mf, df, pf, pp)	sets whether this model can be freezed when the freeze mode is activated or not.		f: boolean indicating if it may be freezed		mf: modifier of the global chances to be freezed		df: not used now		pf: not used now		pp: not used now-setFX1(d, c, m)	sets if FX1 can be performed on this model		d: boolean. whether it is affected or not		c: array. list of coord. indices affected by the FX1			 (i.e: [0,1,3,6])		m: modifiier of the effect-setFX2(d, m)	sets if FX2 can be performed on this model		d: boolean. whether it is affected or not		m: modifiier of the effect-setModColor(i, a, b)	models allow every polygon to have a little colour variation.	this method activates or deactivates this variation.		i: boolean. activates or deactivates the variation.		a: modifier of A colour		b: modifier of B colour-setColor(r, g, b)	colour setting for the model. r, g, b values for the three colour channels (0-255)-setAlpha(a)	alpha setting for the model.-setCoordinates(px, py, pz)	sets model coords. px, py and pz are the coords. over every axis.-getCoordinates() 	returns the coords. of the model on an object with x, y, and z properties.-setRotation(xr, yr)	sets the model rotation. xr and yr are values for the rotation on both axis, in radians.-getRotation()	returns rotation (in radians) of the model on an object with x and y properties.-rotateBy(xr,yr)	increments rotation on xr and/or yr radians of the model.-addCoord(coord)	adds a coord to the model. The coords. are the points to construct the polygonds.	coord is an insatnce of the Coord class. returns the added coord.	!every coord has an index of the order in which it was added. these indexes are zero based.-removeCoord(coord)	removes a coord from the model. coord is an instance of Coord class.-addPolygon(poli)	adds a polygon to the model. poli is an instance of Polygon class.	polygons are lists of commands taking the coords as it's reference.	they are like a description of how they should be drawn.	returns the added polygon.-removePolygon(poli)	removes a polygon that was added. poli is an instance of Polygon class.-onTicker ()	event to be overwritten. this event is called on each loop of the render.	to activate the capture of this event is necesary to set 	doOnTicker property on true.	--------------------ABOT IT'S PUBLIC PROPERTIES-isFreezable	whether it's freezable or not.-modPorFrezar	modifier of the global chances for being freezed.-doFX1	whether it is affected by FX1 or not.-coordsFX1	list of coords indexes affected by the FX1.-modFacFX1	modifier of the FX1-doFX2	whether it is affected by FX2 or not.-modFacFX2	modifier of the FX2-_layer	layer to draw on	models can be assigned to different layers. If a model is set in front of another but on an 	lower layer, it will be shown behind.	layers are great for working with textures. (see addTexture on engine3D class)-modDepth	lets you modified the depth index. this lets you have models above that should be seen below.-isColorVar	whether every polygon may have colour variations or not.-modColorA	modifier of A colour.-modColorB	modifier of B colour.-doOnTicker	whether it will receive the onTicker event or not.-properties	if you want to have other properties on this method, they should be placed in this object.	--------------------HOW TO USE-it's reccomended to make a method to create the model, set it's properties, add coordinates and polygons.function square(){	var mo = new Model()	//coord 0	mo.addCoord(new Coord(0, 0, 0));	//coord 1	mo.addCoord(new Coord(50, 0, 0));	//coord 2	mo.addCoord(new Coord(50, 50, 0));	//coord 3	mo.addCoord(new Coord(0, 50, 0));		var ld = [];	ld.push([0, 'moveTo']);	ld.push([1, 'lineTo']);	ld.push([2, 'lineTo']);	ld.push([3, 'lineTo']);	ld.push([0, 'lineTo']);	mo.addPolygon(new Polygon(ld));		return mo}////////////////////////ESPANOLproyecto: engine 3dpor: ivan ivanoff (www.i2off.org)basado en el trabajo de: stuart schoneveld (www.illogicz.com) email: avatar@i2off.orgperdones:	A mi mujer e hijos por aguantar.	A jorge, valeria y mariano, por joderlos a cada rato.	--------------------ACERCA DE ESTA CLASEEsta es instanciada para crear un modelo.--------------------ACERCA DE SUS METODOS PUBLICOS-setFreezable(f, mf, df, pf, pp)	si este modelo puede ser freezado cuando esta activado el modo 	correspondiente. 		f: booleano que indica si puede ser freezado o no		mf: modificador de las posibilidades globales de ser freezado		df: inhabilitado		pf: inhabilitado		pp: inhabilitado-setFX1(d, c, m)	si sobre este modelo se puede efectuar el efecto FX1		d: booleano que indica si puede ser afectado o no		c: lista con los indices de coordenadas a las que afecta el FX1			 (ej: [0,1,3,6])		m: modificador del factor de efecto-setFX2(d, m)	si sobre este modelo se puede efectuar el efecto FX2		d: booleano que indica si puede ser afectado o no		m: modificador del factor de efecto-setModColor(i, a, b)	los modelos permiten que cada uno de sus polygonos tengan una pequenia	variacion de color. Este metodo activa o desactiva esa variacion		i: booleano que activa o desactiva la variacion de color		a: modificador de color A		b: modificador de color B-setColor(r, g, b)	seteo de color del modelo. R G B son los valores de cada canal de color	 (0-255)-setAlpha(a) 	seteo del alpha del modelo.-setCoordinates(px, py, pz)	setea las coordenadas del modelo. PX PY PZ son las coordenadas sobre cada	eje-getCoordinates() 	devuelve las coordenadas del modelo en un objeto modelado asi {x,y,z}-setRotation(xr, yr)	setea la rotacion del modelo. XR YR es la rotacion sobre los ejes en 	radianes-getRotation()	devuelve la rotacion (en radianes)del modelo en un objeto modelado asi {x,y}-rotateBy(xr,yr)	incrementa la rotacion en XR y/o YR radianes del modelo-addCoord(coord)	agrega una coordenada al modelo. Las coordenadas son los puntos sobre los	que se arman los poligonos. Coord es una instancia de la clase Coord().	devuelve la coordenada ya agregada.	!Cada coordenada, tiene un indice generado por el orden en el que son 	agregadas. Asi la primera coordenada es el indice 0-removeCoord(coord)	remueve una coordenada. Coord es una instancia de la clase Coord()-addPolygon(poli)	agrega un poligono al modelo. Poli es una instancia de Polygon(). Los	poligonos son listas de comandos que toman como referencia a las 	coordenadas. Se podria decir que son una descripcion de como deben 	dibujarse. Devuelve el poligono ya agregado-removePolygon(poli)	remueve un poligono previamente agregado. Poli es una instancia de 	Polygon().-onTicker ()	evento para ser sobreescrito. Este evento es llamado con cada vuelta del	render del engine. Para activar la captura de este evento hay que setear	la propiedad doOnTicker en true	--------------------ACERCA DE SUS PROPIEDADES PUBLICAS-isFreezable	si es freezable o no-modPorFrezar	modificador de las posibilidades globales de ser freezado-doFX1	si puede ejecutar el efecto FX1-coordsFX1	lista de indices de coordenadas que se ven afectadas por el FX1-modFacFX1	modificador del factor de efecto de FX1-doFX2	si puede ejecutar el efecto FX2-modFacFX2	modificador del factor de efecto de FX2-_layer	layer en el que es dibujado	Uno puede asignar 	modelos a distintos layers. Teniendo en cuenta que a si un objeto esta 	ubicado delante de otro, pero en un layer inferior, se ve por detras.	Los leyers son optimos para el trabajo con texturas (ver addTexture de	la clase engine3d())-modDepth	permite modificar el indice de depth. Esto permite tener modelos delante que 	en verdad deberian ir detras-isColorVar	si cada poligono puede variar su color-modColorA	indice de modificacion de color A-modColorB	indice de modificacion de color B-doOnTicker	si recive el evento onTicker()-properties	si quiero que este metodo contenga propiedades propias se las debo volcar	aqui.		--------------------MODO DE USO-es recomendable crear un metodo que cree el modelo, setee todas sus propiedades, agregue las coordenadas y agregue los poligonos. Por ejemplo:function cuadrado(){	//creo la instancia de modelo	var mo = new Model()		//creo las coordenadas		//coord 0	mo.addCoord(new Coord(0, 0, 0));	//coord 1	mo.addCoord(new Coord(50, 0, 0));	//coord 2	mo.addCoord(new Coord(50, 50, 0));	//coord 3	mo.addCoord(new Coord(0, 50, 0));		//seteo propiedades	isColorVar = true	modColorA = 10	modColorB = 10		//creo el poligono	var ld = [];	ld.push([0, 'moveTo']);	ld.push([1, 'lineTo']);	ld.push([2, 'lineTo']);	ld.push([3, 'lineTo']);	ld.push([0, 'lineTo']);	mo.addPolygon(new Polygon(ld));		return mo}*******************/class Model {	var _id;	var coords:Object;	var polygons:Array;	var isFreezable:Boolean = false;	var isFreezado:Boolean = false;	var modPorFrezar:Number = 5;	var doPoligonoF:Boolean = false;	var polygonF:Object = null;	//poligonF no existe mas, no es necesario, porque ahora usa comandos dentro del poligono	var porPoligF:Number = 1;	var doFX1:Boolean = false;	//: si puede verse afectado por el FX1	var coordsFX1;	//: que coordenadas se ven afectadas por el FX1, debe ser un array	var modFacFX1 = 30;	//: modificador para el indice de FX1	var doFX2:Boolean = false;	//: si puede verse afectado por el FX2	var modFacFX2 = 30;	//: modificador para el indice de FX2	var isDisplayed:Boolean = false;	//: si esta visible o no, es para saber de una vuelta a otra del render	var _layer:Number = 0;	//: a que layer pertenece, si al normal o a uno de mascara, esto es para cuando se hace el attach para el poligono	var modDepth:Number = 100000;	//: por si quiero modificar con un indice el depth en el que va a estar el objeto	var isColorVar:Boolean = false;	//:si el color es varible	var modColorA:Number = 10;	//:	var modColorB:Number = 5;	//:los dos indices para ver si varia color	var doOnTicker:Boolean;	//: funcion a hacer en cada ticker (u on enterFrame)	var _centro:Object;	//no va esto, en verdad van el x y z	//: la coordenada del centro, para hacer los calculos de posicion (y mas adelante de colicion)	var x;	var y;	var z;	var xrot;	var yrot;	var red;	var green;	var blue;	var alpha;	var contenedor;	var CoordsIds = 0;	var PolygonsIds = 0;	var properties:Object	//un contenedor para setear variables	function Model(isf, mpf, dof, pf, ppf, df1, cf1, mf1, df2, mf2, l, md, isc, mca, mcb, dot) {		coords = new Object()		//_id = _global.3DengineRun//.idModels++		_id = _global.engine3DRun.idModels++;		polygons = new Array();		setCoordinates(0, 0, 0);		setRotation(0, 0);		setColor(255, 0, 0);		setAlpha(100);		properties = new Object()		isf != undefined && isf != null ? isFreezable=isf : null;		mpf != undefined && mpf != null ? modPorFrezar=mpf : null;		dof != undefined && dof != null ? doPoligonoF=dof : null;		pf != undefined && pf != null ? polygonF=pf : null;		ppf != undefined && ppf != null ? porPoligF=ppf : null;		df1 != undefined && df1 != null ? doFX1=df1 : null;		cf1 != undefined && cf1 != null ? coordsFX1=cf1 : null;		mf1 != undefined && mf1 != null ? modFacFX1=mf1 : null;		df2 != undefined && df2 != null ? doFX2=df2 : null;		mf2 != undefined && mf2 != null ? modFacFX2=mf2 : null;		l != undefined && l != null ? _layer=l : null;		md != undefined && md != null ? modDepth=md : null;		isc != undefined && isc != null ? isColorVar=isc : null;		mca != undefined && mca != null ? modColorA=mca : null;		mcb != undefined && mcb != null ? modColorB=mcb : null;		dot != undefined ? doOnTicker=dot : null;	}	function setFreezable(f, mf, df, pf, pp) {		if (typeof (f) == "boolean") {			isFreezable = f;		}		if (typeof (df) == "boolean") {			doPoligonoF = f;		}		if (mf != null && mf != undefined) {			modPorFrezar = mf;		}		if (pf != null && pf != undefined) {			polygonF = pf;		}		if (pp != null && pp != undefined) {			porPoligF = pp;		}	}	function setFX1(d, c, m) {		if (typeof (d) == "boolean") {			doFX1 = d;		}		if (c != null && c != undefined) {			coordsFX1 = c;		}		if (m != null && m != undefined) {			modFacFX1 = c;		}	}	function setFX2(d, m) {		if (typeof (d) == "boolean") {			doFX2 = d;		}		if (m != null && m != undefined) {			modFacFX2 = m;		}	}	function setModColor(i, a, b) {		if (typeof (i) == "boolean") {			isColorVar = i;		}		if (a != null && a != undefined) {			modColorA = a;		}		if (b != null && b != undefined) {			modColorB = b;		}	}	function setColor(r, g, b) {		red = r;		green = g;		blue = b;	}	function setAlpha(a) {		alpha = a;	}	function onAdd(parent) {		contenedor = parent.depositoGrafico;		for (var i in polygons) {			var p = polygons[i];			var l = contenedor["layer"+_layer];			var idn = l.ids++;			p.mc = l.attachMovie("PolygonBase", "p"+idn, idn);			p.mc.model = this		}		for (var i in polygonF) {			var p = polygonF[i];			var l = contenedor["layer"+_layer];			var idn = l.ids++;			p.mc = l.attachMovie("PolygonBase", "p"+idn, idn);			p.mc.model = this		}		//despues hacerlo sobre polygonF		var c = coords;		for (var i in c) {			c[i].update();		}	}	function onRemove() {		var f = polygons;		for (var i in f) {			removeMovieClip(f[i].mc);		}		var f = this.polygonF;		for (var i in f) {			removeMovieClip(f[i].mc);		}	}	function setCoordinates(px, py, pz) {		x = px;		y = py;		z = pz;		for (var i in coords) {			coords[i].modelMoved();		}	}	function getCoordinates() {		return {x:x, y:y, z:z};	}	function setRotation(xr, yr) {		xrot = xr;		yrot = yr;		for (var i in coords) {			coords[i].modelRotated();		}	}	function getRotation() {		return {x:xrot, y:yrot};	}	function rotateBy(xr, yr) {		setRotation(xrot+xr, yrot+yr);	}	function addCoord(coor) {		coor._id = CoordsIds++;		coords[coor._id] = coor;		coor.parent = this;		coor.update();		return coor;	}	function removeCoord(coor) {		delete coords[coor._id];	}	function addPolygon(poli) {		poli._id = PolygonsIds++		polygons[poli._id] = poli;		poli.parent = this;		return poli;	}	function removePolygon(poli) {		delete polygons[poli._id];	}	function addPolygonF(poli) {		poli._id = PolygonsIds++;		polygonF[poli._id] = poli;		poli.parent = this;		return poli;	}	function removePolygonF(poli) {		delete polygonF[poli._id];	}	function onTicker () {}}

⌨️ 快捷键说明

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