Comunidad de diseño web y desarrollo en internet online

Error 2078

Citar            
MensajeEscrito el 09 Sep 2010 12:34 pm
Hola gente!
Vengo a pediros ayuda porque tengo un problema que no se resolver.
Tengo un codigo que me funciona y le añado otro, que por si solo tambien funciona, y juntos no lo hacen.
El primer codigo es este:

Código ActionScript :

//importamos las librerias
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.events.*;
import flash.events.Event;
import flash.utils.Timer;

//creamos cargadores y cargamos en ellos las imagenes
var imagen1:Loader = new Loader();
imagen1.load(new URLRequest("http://www.mipagina.com/varios/balneario.jpg"));
var imagen2:Loader = new Loader();
imagen2.load(new URLRequest("http://www.mipagina.com/varios/cama.jpg"));
var imagen3:Loader = new Loader();
imagen3.load(new URLRequest("http://www.mipagina.com/varios/comedor.jpg"));
var imagen4:Loader = new Loader();
imagen4.load(new URLRequest("http://www.mipagina.com/varios/cama_azul.jpg"));
var imagen5:Loader = new Loader();
imagen5.load(new URLRequest("http://www.mipagina.com/varios/guarderia.jpg"));
var imagen6:Loader = new Loader();
imagen6.load(new URLRequest("http://www.mipagina.com/varios/hall.jpg"));
var imagen7:Loader = new Loader();
imagen7.load(new URLRequest("http://www.mipagina.com/varios/piscina.jpg"));

// Creamos Sprites que nos va a servir de contenedor para los cargadores de las imagenes
var contenedor0:Sprite = new Sprite();
var contenedor1:Sprite = new Sprite();
var contenedor2:Sprite = new Sprite();
var contenedor3:Sprite = new Sprite();
var contenedor4:Sprite = new Sprite();
var contenedor5:Sprite = new Sprite();
var contenedor6:Sprite = new Sprite();

// metemos los cargadores dentro de los contenedores
this.addChild(contenedor0);
contenedor0.addChild(imagen1);
this.addChild(contenedor1);
contenedor1.addChild(imagen2);
this.addChild(contenedor2);
contenedor2.addChild(imagen3);
this.addChild(contenedor3);
contenedor3.addChild(imagen4);
this.addChild(contenedor4);
contenedor4.addChild(imagen5);
this.addChild(contenedor5);
contenedor5.addChild(imagen6);
this.addChild(contenedor6);
contenedor6.addChild(imagen7);

// creamos el primer tween, pero le decimos que no inicie
var mov:Tween = new Tween(contenedor0, "alpha", Regular.easeOut, 0, 1, 1, true);
mov.stop();

// este for nos sirve para varias cosas:
for (var i = 6; i >= 0; i--)
{
   //le damos su nombre correspondiente a todos los contenedores.
   getChildAt(i).name = "contenedor" + i;
   
   //los ponemos transparentes
   getChildAt(i).alpha = 0;
   
   //les damos el nivel inverso desde el que se han cargado (el mas alto el 0, el mas bajo el 6)
   setChildIndex(getChildByName("contenedor" + i), numChildren - 1);
   
   //cuando sea el contenedor0 empezaremos con la animación. De este modo no se hace sin que se vea.
   if (getChildByName("contenedor" + i).name == "contenedor0")
   {
      mov.addEventListener(TweenEvent.MOTION_FINISH, espera1);
      mov.start();
   }
   
   //trace(getChildByName("contenedor" + i).name + " --> " + getChildIndex(getChildByName("contenedor" + i)));
}

function espera1(e:TweenEvent):void
{
   var mov:Tween = new Tween(contenedor1, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor0);
}

function mover_contenedor0(e:TweenEvent):void
{
   contenedor1.alpha = 1;
   var mov:Tween = new Tween(contenedor0, "x", Strong.easeIn, 0, -1500, 2, true);;
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera2);
}

function espera2(e:TweenEvent):void
{
   setChildIndex(contenedor0, 0);
   var mov:Tween = new Tween(contenedor2, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor1);
}

function mover_contenedor1(e:TweenEvent):void
{
   contenedor2.alpha = 1;
   var mov:Tween = new Tween(contenedor1, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera3);
}

function espera3(e:TweenEvent):void
{
   setChildIndex(contenedor1, 0);
   var mov:Tween = new Tween(contenedor3, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor2);
}

function mover_contenedor2(e:TweenEvent):void
{
   contenedor3.alpha = 1;
   var mov:Tween = new Tween(contenedor2, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera4);
}

function espera4(e:TweenEvent):void
{
   setChildIndex(contenedor2, 0);
   var mov:Tween = new Tween(contenedor4, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor3);
}

function mover_contenedor3(e:TweenEvent):void
{
   contenedor4.alpha = 1;
   var mov:Tween = new Tween(contenedor3, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera5);
}

function espera5(e:TweenEvent):void
{
   setChildIndex(contenedor3, 0);
   var mov:Tween = new Tween(contenedor5, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor4);
}

function mover_contenedor4(e:TweenEvent):void
{
   contenedor5.alpha = 1;
   var mov:Tween = new Tween(contenedor4, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera6);
}

function espera6(e:TweenEvent):void
{
   setChildIndex(contenedor4, 0);
   var mov:Tween = new Tween(contenedor6, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor5);
}

function mover_contenedor5(e:TweenEvent):void
{
   contenedor6.alpha = 1;
   var mov:Tween = new Tween(contenedor5, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera7);
}

function espera7(e:TweenEvent):void
{
   setChildIndex(contenedor5, 0);
   var mov:Tween = new Tween(contenedor0, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor6);
}

function mover_contenedor6(e:TweenEvent):void
{
   var mov:Tween = new Tween(contenedor6, "x", Strong.easeIn, 0, -1500, 2, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, espera8);
}

function espera8(e:TweenEvent):void
{
   setChildIndex(contenedor6, 0);
   var mov:Tween = new Tween(contenedor1, "x", Regular.easeOut, 0, 0, 3, true);
   mov.addEventListener(TweenEvent.MOTION_FINISH, mover_contenedor0);
}


y el segundo codigo es este:

Código ActionScript :

setChildIndex(btn0, numChildren - 1);
btn0.addEventListener(MouseEvent.CLICK, salto);
//lo que sigue es la funcion de salto a la imagen que queramos al pulsar el boton correspondiente
function salto(e:MouseEvent):void
{
   trace("HOOLA!");
}


Los únicos objetos que tengo colocados son un boton que he creado y las copias que he hecho de éste (cada uno con su identificador distinto, claro XD)

El error que me da es este:
Error #2078: No se puede modificar el nombre de propiedad de un objeto colocado en la línea de tiempo.

A ver si alguien me puede echar una mano.
Muchas gracias!!

Fran.

Por SeiyaJapon

54 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 09 Sep 2010 02:33 pm
Supongo que la línea que da el problema es esta:

setChildIndex(btn0, numChildren - 1);

Quítala para confirmarlo. Si es esa, verifica que btn0 realmente este apuntando a un MovieClip existente (trázalo)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Sep 2010 07:53 am
Muy buenas Jorge.
Lo acabo de probar, pero me quedo igual. No es eso.
Según lo que yo entendía, era que no podía darle un nombre al los botones del escenario desde el cuadrado de las propiedades. Aunque les he quitado el nombre a cada uno y me sigue saliendo el fallo.
Pero he descubierto el fallo.
Dentro del For cambiaba el valor de la profundidad y el nombre a unos objetos. Lo que ocurria es que Flash no me los ponia todos seguidos, como yo creía. Yo pensaba que pondría primero todos los botones que hay en pantalla y luego lo que cargo desde código. O sino al revés.
Y resulta que ni lo uno ni lo otro.
Así que lo que he hecho es modificar el código y añadir una función para ordenar la profundidad de los objetos. Al final a funcionado. Este es el trozo de código cambiado:

Código ActionScript :

// metemos los cargadores dentro de los contenedores
this.addChild(contenedor0);
contenedor0.addChild(imagen1);
contenedor0.name = "contenedor0";
this.addChild(contenedor1);
contenedor1.addChild(imagen2);
contenedor1.name = "contenedor1";
this.addChild(contenedor2);
contenedor2.addChild(imagen3);
contenedor2.name = "contenedor2";
this.addChild(contenedor3);
contenedor3.addChild(imagen4);
contenedor3.name = "contenedor3";
this.addChild(contenedor4);
contenedor4.addChild(imagen5);
contenedor4.name = "contenedor4";
this.addChild(contenedor5);
contenedor5.addChild(imagen6);
contenedor5.name = "contenedor5";
this.addChild(contenedor6);
contenedor6.addChild(imagen7);
contenedor6.name = "contenedor6";
 
//cambio la profundidad de los botones para que nos los cojamos al darle valores a los contenedores en el for
for (var i = 0; i < 7; i++)
{
            setChildIndex(getChildAt(i), numChildren - 1);
}
 
// creamos el primer tween, pero le decimos que no inicie
var mov:Tween = new Tween(contenedor0, "alpha", Regular.easeOut, 0, 1, 1, true);
mov.stop();
 
// este for nos sirve para varias cosas:
for (i = 6; i >= 0; i--)
{
            //los ponemos transparentes
            getChildByName("contenedor" + i).alpha = 0;
           
            //les damos el nivel inverso desde el que se han cargado (el mas alto el 0, el mas bajo el 6)
            setChildIndex(getChildByName("contenedor" + i), numChildren - 1);
           
            //cuando sea el contenedor0 empezaremos con la animación. De este modo no se hace sin que se vea.
            if (getChildByName("contenedor" + i).name == "contenedor0")
            {
                        mov.addEventListener(TweenEvent.MOTION_FINISH, espera1);
                        mov.start();
            }
           
            //trace(getChildByName("contenedor" + i).name + " --> " + getChildIndex(getChildByName("contenedor" + i)));
}
 
profundidad_botones();
 
function profundidad_botones():void
{
            for (i = 6; i >= 0; i--)
            {
                        setChildIndex(getChildByName("btn" + i), numChildren - 1);
            }
}

Por SeiyaJapon

54 de clabLevel



 

España

safari
Citar            
MensajeEscrito el 10 Sep 2010 07:54 am
Por cierto, muchas gracias por contestar!!!

Por SeiyaJapon

54 de clabLevel



 

España

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.