Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2010, 17:35
eronemamone
 
Fecha de Ingreso: mayo-2010
Mensajes: 49
Antigüedad: 14 años, 6 meses
Puntos: 0
Problemas al crear galeria interactiva

Buenas,

Tenía en AS2 un codigo para recrear galerias, y poder pasear a traves de las imagenes, estoy intentando pasarlo a AS3, y no he logrado hacerlo funcionar. me compila pero no me funciona. En AS2 me funcionaba perfectamente, pero al empezar a pasarlo a AS3, me estoy liando al no poder crear objetos directamente.

SCENE3D es un movieclip que contiene otros moviclips llamados Object+Num.
escenario lo he creado para poder llamar a la funcion pero creo que eso ha sido un desvario de estas horas.



Podríais echar un ojo a ver si veis el fallo ?


function galeria(event:Event) {

//creamos un objeto viewer
var viewer:Object = new Object();
viewer.z=0;
viewer.x=0;
viewer.y=0;

// parametros de la camara "viewer"
var d:Number = 150; // distancia del observador al plano 2d
var viewerSpeed:Number = 10; // velocidad del viewer
var tooClose:Number = 100; // cuando es demasiado cerca

// crear dibujo plano: una movie clip scene3D
// y la posicion en medio además de otro para incluirlo
var escena:Scene3D = new Scene3D();
escena.x = stage.width/2;
escena.y = stage.height/2;
plano.addChild(escena);
// numero objetos
var numberOfObjects:Number = 9;

// definicion de los arrays de cordenadas
var xdata:Array = new Array();
var ydata:Array = new Array();
var zdata:Array = new Array();
var thisObj:Object = new Object();

xdata = []; ydata = []; zdata = [];

xdata = [ -1000, -500, 0, 500, 1000,
-1000, -500, 0, 500, 1000,
-1000, -500, 0, 500, 1000 ]

ydata = [ 100, 100, 100, 100, 100,
100, 100, 100, 100, 100,
100, 100, 100, 100, 100 ]

zdata = [ 600, 601, 602, 603, 604,
900, 901, 902, 903, 904,
1200, 1201, 1202, 1203, 1204 ]

// añadimos los objetos
for (var i:Number = 1; i <= numberOfObjects; i++) {
escena["object"+i].loadMovie("sanJuan/"+i+".JPG");
thisObj = escena["object"+i];
placeObj();
}

// y los colocamos
function placeObj() {
thisObj.x = xdata[i-1];
thisObj.y = ydata[i-1];
thisObj.z = zdata[i-1];
}

// mostramos
function displayObj() {
// limites en la linez z
if (viewer.z < -1000 ) {
viewer.z = -1000
}
if (viewer.z > 900 ) {
viewer.z = 900
}

// limites linea x
if (viewer.x < -1200 ) {
viewer.x = -1200
}
if (viewer.x > 1800 ) {
viewer.x = 1800
}

// limites linea y
if (viewer.y < -700 ) { viewer.y = -700 }
if (viewer.y > 300 ) { viewer.y = 300 }

// calculamos posicion relativa del viewer
var tx:Number = thisObj.x - viewer.x; // tx,ty,tz son la
var ty:Number = thisObj.y - viewer.y; // coordenadas de los objetos
var tz:Number = thisObj.z - viewer.z; // relativas a la camara

// el radio de perspectiva
var pRatio:Number = d/tz;

// aplicamos el radio y escalamos
thisObj.x = tx * pRatio;
thisObj.y = -ty * pRatio; // need minus sign for Flash coords
thisObj.scaleX = thisObj._yscale = 100 * pRatio;

// poner capas delante
thisObj.swapDepths(Math.round(-thisObj.z));

// comprobacion demasiado cerca
if ( tz <= tooClose)
{ thisObj.visible = false; }
else thisObj.visible = true;
}

// creamos al viewer
addChild(plano)
plano.addEventListener(Event.ENTER_FRAME,crearGale ria);


function crearGaleria (){

// ponemos los datos de cordenadasdel ratn al viewer
viewer.x += (mouseX - escena.x)/viewerSpeed;
viewer.y += -(mouseY - escena.y)/viewerSpeed;

// teclas para el movimiento
var up:Boolean = false;
var down:Boolean = false;
var left:Boolean = false;
var right:Boolean = false;


stage.addEventListener(KeyboardEvent.KEY_DOWN,keyP ressHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,keyRel easeHandler);



function keyPressHandler(event:KeyboardEvent):void
{
switch( event.keyCode )
{
case Keyboard.UP:
up = true;
break;

case Keyboard.DOWN:
down = true;
break;

case Keyboard.LEFT:
left = true;
break;

case Keyboard.RIGHT:
right = true;
break;
}
}

function keyReleaseHandler(event:KeyboardEvent):void
{
switch( event.keyCode )
{
case Keyboard.UP:
up = false;
break;

case Keyboard.DOWN:
down = false;
break;

case Keyboard.LEFT:
left = false;
break;

case Keyboard.RIGHT:
right = false;
break;
}
}
if (up == true) {
viewer.z += viewerSpeed;
}
else if (down == true) {
viewer.z -= viewerSpeed;
}

// Mostramos
for (i= 1; i <= numberOfObjects; i++)
{
thisObj = escena["object"+i];
placeObj();
displayObj();
}
}


}


Muchas gracias