
Etiquetas: Foam useMouseDragger solverIterations addGlobalForceGenerator RigidBody addElement INFINITE_MASS createRectangle
//Importo las clases necesariasimport flash.display.Sprite;
import org.generalrelativity.foam.Foam;
import flash.events.*;
import org.generalrelativity.foam.dynamics.element.ISimulatable;
import org.generalrelativity.foam.dynamics.element.body.RigidBody;
import org.generalrelativity.foam.dynamics.enum.Simplification;
import org.generalrelativity.foam.util.ShapeUtil;
import org.generalrelativity.foam.dynamics.force.Gravity;
import org.generalrelativity.foam.math.Vector;
import org.generalrelativity.foam.dynamics.force.Friction;
import org.generalrelativity.foam.dynamics.force.spring.RigidBodyBungee;
import org.generalrelativity.foam.view.Renderable;
import org.generalrelativity.foam.dynamics.element.body.Circle;
//Creo las variables "generales" de la películaconst FALL_LIMIT:int = 1000;
var foam:Foam;//Función que contruye la escenafunction Empezar(){
CrearFPS();
CrearEscenaFoam();
CrearElementos();
CrearEscenario();
//Inicializa el motor FOAMfoam.simulate();
}//Crea una instancia de FPS para ver a cuantos fps va la película (clase personalizada)function CrearFPS(){
var FPS = new FrameRate();
FPS.setPosition(30,20);
addChild(FPS);
}//Crea la instancia de FOAM y añade las fuerzas globales a la escenafunction CrearEscenaFoam(){
//Creo la escena FOAMfoam = addChild( new Foam() ) as Foam;
//Habilito el arrastre por medio de ratón en la escenafoam.useMouseDragger( true );
foam.solverIterations = 2;
//Añado fuerza de gravedad y fricción como fuerzas globales de la escenafoam.addGlobalForceGenerator( new Gravity( new Vector( 0, 1.3 ) ) );
foam.addGlobalForceGenerator( new Friction( 0.01 ) );
}//Crea los elementos dinámicos dentro de la escena function CrearElementos() {
//Crea 20 polígonos con 1-6 ladosfor (var i:int = 0; i < 11; i++) {
//generan la posicion x-y, el tamaño, y el numero de vérticesvar rx:Number = 50 + Math.random() * 600;
var ry:Number = -150 + Math.random() * 200;
var rSize:Number = 20 + Math.random() * 20;
var rNumVertices:Number = 2 + Math.floor( Math.random() * 5 );
//crea un cuerpo con los parámetros aleatorios que hemos creado. var body:RigidBody = new RigidBody( rx, ry, rSize, ShapeUtil.createSymmetricPolygon( rNumVertices, rSize ) );
//añade un cuerpo a la escenafoam.addElement( body );
} //Además de crear polígonos con la sintaxis anterior, también se pueden crear círculos con la sintaxis //(x,y,radio):foam.addElement( new Circle( 100, -100, 40 ));
foam.addElement( new Circle( 100, -90, 30 ));
}//Crea las paredes, el suelo y las rampasfunction CrearEscenario(){
//Paredesfoam.addElement( new RigidBody( 0, 50, Simplification.INFINITE_MASS, ShapeUtil.createRectangle( 40, 700 ) ) );//Izquierda
foam.addElement( new RigidBody( 700, 50, Simplification.INFINITE_MASS, ShapeUtil.createRectangle( 40, 700 ) ) );//Derecha
//Suelofoam.addElement( new RigidBody( 350, 400, Simplification.INFINITE_MASS, ShapeUtil.createRectangle( 700, 40) ) );
//Techofoam.addElement( new RigidBody( 350, -300, Simplification.INFINITE_MASS, ShapeUtil.createRectangle( 700, 40 ) ) );
}Empezar();
No hay comentarios