Dinamizar variables AS3 - Papervision3D
Por más que he buscado (ando bastante pez en AS3 y estoy empezando con Papervision3D), no encuentro la forma de 'dinamizar' las variables y crear Sprites diferentes que contengan un Bitmap. Tengo esto:
<code>for (var i=0; i<arrayImagenes.length; i++)
{
var container:Sprite = new Sprite();
container.x = 100*i;
container.y = 100*i;
addChild( container );
scene = new MovieScene3D( container );
material = new BitmapFileMaterial(arrayImagenes[i]);
material.doubleSided = true;
material.smooth = true;
//create plane
plane = new Plane( material, 256, 256, 3, 3);
//plane.x = 100*i;
//plane.y = 100*i;
// register plane
scene.addChild( plane );
}
camera = new Camera3D();
camera.z = -500;
camera.zoom = 5;
this.addEventListener( Event.ENTER_FRAME, enterFrame );</code>
donde cada indice del array tiene un '1.jpg', '2.jpg'... y claro, sólo cargo y muestro el último índice del array. No logro dar con la notación. Alguna sugerencia?
tpmmds
Hola:
Exacto, el sprite container en PV3D1.7 es donde se crea el escenario Scene3D. y si quieres colocar dicho escenario en una posición dada de la pantalla es este sprite el que tienes que modificar. Por ejemplo, es habitual hacer:
container.x = 0.5*stage.stageWidth;
container.y = 0.5*stage.stageHeight;
para colocar el escenario 3D centrado en el stage.
En PV3D 2 ya no es necesario, pues creas un visor que es el que has de añadir al escenario y colocar en la posición deseada.
Un saludo
isma
Ok, lo he arreglado así:
<code> var container:Sprite = new Sprite();
addChild( container );
scene = new MovieScene3D( container );
for (var i=0; i<arrayImagenes.length; i++)
{
material = new BitmapFileMaterial(arrayImagenes[i]);
material.doubleSided = true;
material.smooth = true;
//create plane
plane = new Plane( material, 256, 256, 3, 3);
plane.x = 100*i;
plane.y = 100*i;
// register plane
scene.addChild( plane );
}
camera = new Camera3D();
camera.z = -500;
camera.zoom = 5;
this.addEventListener( Event.ENTER_FRAME, enterFrame );</code>
Supongo que el Sprite es necesario para crear la escena, no? Lo más probable es que estuviese liado intentando crear un sprite por imagen, cuando es un único sprite para la escena y diferentes planos para la imagen. Es correcto? Gracias por tu ayuda.
tpmmds
Hola:
Saca el sprite container y la línea donde creas la escena 3d del bucle, y colócalo antes del for:
var container:Sprite = new Sprite();
container.x = 100*i;
container.y = 100*i;
addChild( container );
scene = new MovieScene3D( container );
for (....
Quita las dobles barras de plane.x y plane.y, o colocarás todos los planos en la misma posición; cuando se colocan dos elementos en las misma posición el error se aprecia muy rápido porque las texturas fliquean muchísimo.
Y por el resto parece que está todo bien. Pero vamos, no lo he probado; es lo que deduzco del código.
Un saludo.
P.D.:Por lo que veo, estás utilizando PV3D 1.7, asegurate que el paquete de clases con que configuras el proyecto es éste y no otro.