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

📄 engine3d.as

📁 FlashEd 0.2 是个游戏引擎包
💻 AS
📖 第 1 页 / 共 2 页
字号:
/*******************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's instanciated by the engine's component. It contains the render systme and the global properties.--------------------ABOUT IT'S PUBLIC METHODS-addModel(model)	adds a new model to the scene. model is an instance of the Model class	returns the added model.-removeModel(model)	removes a model from the scene. model is an instance of the 	Model class previously added to the scene.-getModels()	returns a list of all available models.-removeCamera(cam)	removes a camera from the scene. cam is an instance of the Camera3D class.-setCamera(cam)	adds and sets the camera to use in the scene. cam is an instance of the Camera3D class.-reset()	removes all models and cleans the scene.-setScene(int)	sets a scene as active eliminating the current scene. int is an integer representing	the scene number of the list of available scenes setted with the property: scenes.-onFreezeModel()	event to be overwritten. notifies the moment when a model is freezed. -addTexture(layer, texture)	allows the given layer to be used as a mask for an item in the library (texture)--------------------ABOUT IT'S PUBLIC PROPERTIES-layers	the amount of different layers you wish to use. 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.	-freezeMode	sets whether freeze mode is active or not. freeze mode active stops rendering	sections of a freezed model.	-porFrezar	this value affects the chance of freezing.	the freezing will occur on a chance of 1/porFrezar.	-FXNMode	whether the FXN (where N is 1,2, etc) mode is on or off.	FX can stop, strech or contract parts of the affected polygon.	-FXNFac	this value is used on the calculation of the FX.	-scenes	a list containing the different scenes. These are functions receiving	an instance of the engine as it's parameter. Every scene has the 	step by step description of camera and polygons creation.--------------------HOW TO USE-drag the component to the scene-give the instance a beautiful name (i.e:my_3d)!it's highly recommended to crete methods for model creation so you don't haveto write in the scene the step by step for every polygon-create a method to simplify model creation (i.e. square)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}-create the scene (a function) that will create the camera and modelsvar sc1 = function (engine) {	// Create camera	var c = engine.setCamera(new Camera3D());	c.setCoordinates(0, 0, -100);	c.setRotation(0, 0);	// Create model	var m = engine.addModel(_root.square());	m.setCoordinates(0, 0, 0);	m.setColor(200, 224, 204);}-add the scenemy_3d.scenes = [sc1];-set the scenemy_3d.setScene(0)--------------------WHAT ARE FREEZE AND EFFECTS?these are effects over what you see on the screen.they do not affect the real model but the way they are shown.--------------------WHAT IS A SCENE?a scene must be a function that has an engine parameter to receive an instance of the component.the engine is needed to create the camera and add the different models.//////////////////////////////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 por el componente del engine. Es la que contiene el sistema de render y las propiedades globales.--------------------ACERCA DE SUS METODOS PUBLICOS-addModel(model)	agrega un modelo a la escena. El model es una instancia de la clase Model().	devuelve el modelo agregado-removeModel(model)	remueve un modelo de la escena. El model es una instancia de la clase 	Model() previamente agregada a la escena.-getModels()	devuelve una lista con todos los modelos disponibles.-removeCamera(cam)	remueve uns camara de la escena. Cam es una instancia de la clase 	Camera3D().-setCamera(cam)	agrega y setea la camara que se usa en la escena. Cam es una instancia de 	la clase Camera3D()-reset()	borra todos los modelos y limpia la escena.-setScene(int)	setea como activa una escena eliminando a la que se este ejecutando. int es 	un entero que representa el numero de escena de la lista de escenas seteadas	con la propiedad: scenes-onFreezeModel()	evento a ser sobreescrito que recoge notifica del momento en el cual un 	modelo es freezado.-addTexture(layer, texture)	este metodo permite que un layer determinado no se dibuje normalmente sino 	como mascara de un objecto en libreria (texture)--------------------ACERCA DE SUS PROPIEDADES PUBLICAS-layers	la cantidad de layers distintos que se quieren usar. 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)-freezeMode	si esta activo o no el modo de freeze. Este lo que hace es dejar de 	redibujar secciones de un modelo freezado.-porFrezar	la posibilidad global que tienen los modelos de ser freezados.	-FXNMode	si esta activo o no el mode de FXN (1, 2, ETC). Este detiene partes del	poligono afectado, las estira o las contrae.-FXNFac	factor para el calculo de aplicacion de o de los FXN	-scenes	lista que contiene las distintas escenas. Estas son funciones que reciben 	como parametro la instancia del engine. Cada escena tiene la descripion	paso a caso de la creacion de la camara y cada uno de sus polygonos--------------------MODO DE USO-draguear el componente en la escena-nombrar la instancia (ej:my_3d)!es recomendable crear metodos para la creacion de los modelos para no escribiren la escena toda el paso a paso de cada uno de los polygonos-crear metodo para simplificar la creacion del modelo (ej: cuadrado)function cuadrado(){	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}-crear la escena (una funcion) que crea la camara y los modelosvar esc1 = function (engine) {	// Crea la camara	var c = engine.setCamera(new Camera3D());	c.setCoordinates(0, 0, -100);	c.setRotation(0, 0);	// Crea un modelo	var m = engine.addModel(_root.cuadrado());	m.setCoordinates(0, 0, 0);	m.setColor(200, 224, 204);}-agrega la escenamy_3d.scenes = [esc1];-setea la escenamy_3d.setScene(0)--------------------QUE ES FREEZADO Y EFFECTS?son efectos sobre lo que se ve en pantalla. Estos efectos no afectan realmente al modelo. Sino a la forma en la que estos son mostrados--------------------QUE ES UNA ESCENAuna escena debe ser una funcion que recivira como parametro la instancia del componente para poder crear en ella la camara y los distintos modelos.*******************/class engine3D extends MovieClip {	var depths:Object;	var models:Object;	var cameras:Object;	var camera:Object;	var depositoGrafico:MovieClip;	var layers:Number = 1;	//cuantos layers graficos tiene	var idModels = 1;	var freezeMode = false;	var porFrezar = 10;	var porPoligF = 1;	//la posibilidad de dibujar el poligonoF	var FX1Mode = false;	var FX2Mode = false;	var FX1Fac = 10;	var FX2Fac = 10;	var scenes:Array;	function engine3D() {		trace("a");		_global.engine3DRun = this;		_global.engine3DCore = new Object();		depths = new Object();		models = new Object();		camera = undefined;		cameras = new Object();	}	function init(l) {		//el movieclip tiene que tener en el primer frame un llamado al init		if (l == null || l == undefined || typeof (l) != "number") {			l = 1;		}		layers = l;		this.createEmptyMovieClip("depositoGrafico", 1);		for (var i = 0; i<l; i++) {			var la = depositoGrafico.createEmptyMovieClip("layer"+i, (i+1)*2);			la._depth = (i+1)*2;			la.ids = 0;		}	}	function addModel(model) {		models[model._id] = model;		model.onAdd(this);		return model;	}	function removeModel(model) {		models[model._id].onRemove();		delete models[model._id];	}	function getModels() {		return models;

⌨️ 快捷键说明

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