Comunidad de diseño web y desarrollo en internet online

problema con removeMovieClip y scroll

Citar            
MensajeEscrito el 27 Sep 2008 07:26 pm
hola hermanos
llevo dos ultimos problemas antes de terminar una pagina que estoy haciendo
gracias a la ayuda paciente de elchininet logré hacer una especie de carrito-reserva ..en el que hayu que apretar un boton para que se guarde lo que esta en el array articulos....en el array added(lo que se va agregando al carrito)
cuando se aprieta el boton tambien sucede que aparece un boton creado dinamicamente que tiene la facultad de borrar el articulo del array added al ser y apretado. Una vez apretado este deberia desaparecer.
Ahora tengo dos carritos..uno de prueba y otro el definitivo
el en el de prueba esta el mismo codigo que en el otro y funciona el this.removeMovieClip();
y en el definitivo no. Lo unico que cambia es que los botones de agregar no estan dsde el principio ..pero eso no deberia importar...el problema esta en el de borrar...
posteo un pedacito de codigo
carrito de prueba:

Código ActionScript :

//para crear los botones de borrar
this["articulo" + i].numero = i;
   this["articulo" + i].onRelease = function():Void{
      this.gotoAndStop(2);
      added.addToArray(valores[this.numero]);
     boton = this._parent.createEmptyMovieClip("boton" +[this.numero], this._parent.getNextHighestDepth());
     alignButtons("boton", _root, 0, 15, this); 
     boton.item =valores[this.numero];
     boton.borrado = this.numero;
   fondo = boton.createEmptyMovieClip("fondo", boton.getNextHighestDepth()); 
   texto = boton.createTextField("texto", boton.getNextHighestDepth(), 0, 0, 0, 0);

//función del boton borrar
boton.onRelease = function():Void{
      added.deleteToArray(this.item);
      _root["articulo"+this.borrado].gotoAndStop(1);  
      this.removeMovieClip();
      this.texto.filters = []; 
      this.texto.textColor = "0x666666"; 
       
       
   } 
}


ahora el carrito final lleva esto

Código ActionScript :

_root["agregar"+i].numero = i
_root["agregar"+i].onRelease = function():Void{
   this.enabled=false;
   added.addToArray(valores[this.numero]);
   boton = this._parent.createEmptyMovieClip("boton" +[this.numero], this._parent.getNextHighestDepth());
   boton.item =valores[this.numero];
   boton.borrado = this.numero;
   fondo = boton.createEmptyMovieClip("fondo", boton.getNextHighestDepth()); 
   texto = boton.createTextField("texto", boton.getNextHighestDepth(), 0, 0,
//funcion boton
boton.onRelease = function():Void{
      added.deleteToArray(this.item);
      _root.removeMovieClip("boton"+this.borrado);
      _root["agregar"+this.borrado].enabled=true;
       _root["agregar"+this.borrado].gotoAndStop(2);
   } 


el codigo es mucho mas largo..con unos prototipos para borrar el articulo del array creados por elchininet pero no tengo idea porque en el segundo no funciona

lo segundo(lo del scroll ) mejor lo pregunto despues de resolver esto
muchas gracias al que me pueda ayudar :cool:

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 27 Sep 2008 11:51 pm
Pensé que lo irías a resolver por ti mismo, debes aprender de que cuando veas que algo no funciona hacer un ejemplo sencillo a ver si te trabajan las cosas y del experimento irás aprendiendo.

Crea un MovieClip en un documento nuevo y ponle de nombre de instancia "cuadro", después pega esto en el primer frame y observa que ocurre:

Código ActionScript :

//---Cuadro original
cuadro.onPress = function():Void{
   
   this.removeMovieClip();
   
}

//---Copia del cuadro
copiaCuadro = cuadro.duplicateMovieClip("copiaCuadro", this.getNextHighestDepth(), {_y:cuadro._y + 200});

copiaCuadro.onPress = function():Void{
   
   this.removeMovieClip();
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Sep 2008 04:41 am

hola elchininet


gracias por responder otra vez tna rapido


entendi a que te referis:no se puede eliminar un mc que esta en el escenario..solo lo que se attacha.
entonces como en mis doscarritos son attachados los botones no sabia que ahcer....intente en ponerle una profundidad fija..y se borraban pero obviamente si agergaba otro boton de borrar se ponia arriba del otro
puede ser que el getNextHighestDepth me lo deje en una profundidad fuera del rango? lei algo asi en la ayuda del flash

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 28 Sep 2008 11:25 am
No entiendo todavía la diferencia entre tus dos carritos

entonces como en mis doscarritos son attachados los botones no sabia que ahcer


Lo unico que cambia es que los botones de agregar no estan dsde el principio


Obviamente si hay uno que te da problemas, debes mirar lo que cambia con respecto al otro y hacer las pruebas que te dije en un documento nuevo para que experimentes que ocurre en cada caso.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Sep 2008 04:15 pm
creeme que lo hice
pero no encuentro cual puede ser
un carrito es el del accordion que tiene botones que llevan los de agregar al fotograma 2 y despues el resto es practicamente igual y el otro(el de prueba) era el original que andaba..en el que los botones de agregar estan desde el principio en el fotograma donde se ven ..y listo
el resto es practicamente igua..salvo que saque los filters :S :(

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 28 Sep 2008 04:51 pm
A simple vista veo que no utilizas la misma forma de borrar los botones:

En el que funciona

Código ActionScript :

this.removeMovieClip(); 


En el que no funciona

Código ActionScript :

_root.removeMovieClip("boton"+this.borrado); 


Anteriormente dijiste que ya habías probado de todas las formas de borrar el botón, lo que te podría quizás demostrar de que el problema no está aquí, sino en otra parte.

Me parece que lo que debes hacer no es esperar a que alguien adivine la respuesta, porque yo en realidad no la sé y creo que más nadie tampoco, podemos llegar a un post muy largo como el anterior. Te aconsejo que hagas un documento en blanco, y vayas poco a poco haciendo las cosas paso a paso hasta que te encuentres con un problema, y hasta que no lo resuelvas no sigas hacia adelante porque sino obtendrás un código extenso que no se sabe ni donde podría estar fallando.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Sep 2008 03:14 am
hola el chininet..la verdad que ese consejo de hacerlo todo de nuevo en un documento nuevo es muy eficaz..lo voy a implementar dsde ahora Cool OK...el problema lo encontre despues de una horita de andar probando.
teniendo todo ya armado y andando..me refiero a los botones de agregar y borrar...agergue el accordion al escenario y ahi me dio el error...
al principio pense que era un problema de profundidades o algun nombre sobrepuesto...pero despues sin attacharlo pero teniendolo en la biblioteca me dio lo mismo...
entonces probe con otros 4 componentes y tambien pasa lo mismo. al sacar el componente de la biblio... no da ese error Aw Crap
decis que tengo que buscar una alternativa al accordion? o se te ocurre alguna idea de porque será?o será un bug?



edito:
decidi hacer un menu con submenu emergente para not ener el problema con el accordion
ahora solo me quedaria la dudilla de como ahcer para que los botones de agregar tengan un scroll
nota:ahora estan en el escenario...
el problema se da al agregar mas de 10...ya no se ve el 11avo por eso necesitaba un scroll =)

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 29 Sep 2008 03:15 am
los botones de borrar
perdon me equivoque xD

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 29 Sep 2008 08:36 pm
El problema con el acordeón no lo conocía primera vez que oigo de él pueda que sea un bug, aunque lo dudo, pero si intentaste de todas las maneras posibles y no pudiste puede que sea eso.

Es una lástima porque la solución para tu scroll te la iba a dar con el componente scrollPane, así que debes buscar una solución para el primer problema. Bueno aquí de todas maneras va el tip de situar los botones con scroll.

Crea un documento nuevo y sitúa un componente scrollPane en el escenario y ponle de nombre de instancia "myPane", después sitúa un MovieClip vacío en la biblioteca linkeado como "contenido" y en la propiedad de contentPath del componente pones el nombre con que has linkeado el MovieClip ("contenido"), después sitús este código en el primer frame, enseguida te darás cuenta como debes realizarlo en tu caso:

Código ActionScript :

var myMovie:MovieClip = myPane.content;

var boton:MovieClip;
var posY:Number = 0;

for(var i:Number = 0; i < 10; i++){
   
   boton = myMovie.createEmptyMovieClip("boton" + i, i);
   
   with(boton){
      
      beginFill(0x000000, 100);
      moveTo(0, 0)
      lineTo(50, 0);
      lineTo(50, 10);
      lineTo(0, 10);
      lineTo(0, 0);
      endFill();
      
   }
   
   boton._y = posY;
   posY += boton._height + 10;
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Sep 2008 09:08 pm
exelente


ahora acabdo de probar arreglarlo pero me parece no tiene solucion :S
saque todos los componentes y se podia borrar..pero tambien aunque saque el accordion y no use el scroll pane para hacer el scroll....me queda todavia unos textinput y textarea que uso para unos formularios :S

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 29 Sep 2008 09:37 pm
Sigue mi consejo, empieza desde el inicio, esto la mayoría de las veces a mi me resulta.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Sep 2008 10:35 pm
ahora estoy mas que condundido :S
mira te digo las opcione que tengo(en realidad lo digo mas para mi que otra cosa, pero diciendoselo a otra persona capas me ordeno)
1:accordion con los botones que llevan los botones de agregar al frame 2(donde estan los botones)...y los botones de borrar que por ahora no funcionan
2: el menu despleagable que hice ..aunque la unica forma que encontre de hacer este fue attachando los botones de agregar por lo que no se vana agregar los botones de borrar ni los articulos al array(segun me dijiste una vez).
3:tirarme ahora mismo de la ventana
4:tirar la pc y esperar que con el golpe nazca un carrito super cool
las 4 opciones tienen unos fallos importantes

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 30 Sep 2008 02:48 pm
puede ser que el problema de los componentes sea debido a los prototypos¿?

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 30 Sep 2008 10:01 pm
No lo sé, prueba y lo notarás, de ser así cambia los prototypes por simples funciones.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Oct 2008 01:33 pm
osea
modifico los prototypes y pongo que sean funciones
pero dejando lo de andentro intacto right?

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 01 Oct 2008 09:12 pm
No... tendrás que cambiar lo de adentro, ya no sería un prototype si no una función que haría lo mismo pero habría que enviarle los datos como parámetros.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 02 Oct 2008 04:05 pm
disculpame
me explicarias otra vez lo ultimo que me dijiste? :S

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 02 Oct 2008 08:47 pm
Compara el prototype y la función siguiente:

Prototype

Código ActionScript :

Array.prototype.addValue = function(valor:String):Void{

    this.push(valor);

}

var myArray:Array = ["uno", "dos"];

myArray.addValue("tres");

trace(myArray);


Función

Código ActionScript :

function addValue(theArray:Array, valor):Void{
   
   theArray.push(valor);
   
}

var myArray:Array = ["uno", "dos"];

addValue(myArray, "tres");

trace(myArray);


Si los analizas los dos verás que no son iguales pero realizan los mismos resultados

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 04 Oct 2008 06:16 pm
estuve esperando la respuesta al mail y no llego :S que raro
suerte que decidi fijarme
gracias elchininet
ahora veo eso :evil:

saludos y te aviso si entendi :D

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 07 Oct 2008 09:45 pm
te ahbia respondido que habia hecho las funciones
pero pasaron dos cosas:una que sigue el problema de los componentes y dos , que cuando borras no lo borra ..
aca las funciones que hice

Código ActionScript :

function addToArray(theArray:Array, valor):Void{ 
if(this.indexOf(valor) < 0){ 
theArray.push(valor);
}    
} 
function deleteToArray(theArray:Array, valor):Void{
   var index:Number = thaArray.indexOf(valor); 
    if(index >= 0){ 
   theArray.splice(index, 1); 
   }
}
function indexOf(search):Number{  
     
   var total:Number = this.length;  
   var index:Number = -1;  
   var item:Number = 0;  
   var finded:Boolean = false;  
     
   while(item < total && !finded){ 
        
      if(this[item] == search){            
         index = item;  
         finded = true;            
      }else{            
         item++;            
      }         
   }  
     
   return index;  
     

y en los botones

Código ActionScript :

//boton de borrar
 deleteToArray(added, this.item);
//boton de agregar
addToArray(added, valores[this.numero]);


todo esto te lo pongo para que veas nada mas pero igual voy a volver a poner los prototipos ya que no se resolvio el problema..
debe estar en otro aldo el problema de los componentes
voy a seguir buscando que pasa :(

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 08 Oct 2008 09:08 am
Bueno en cuanto a las funciones:

Código ActionScript :

function addToArray(theArray:Array, valor):Void{  
   if(this.indexOf(valor) < 0){  
      theArray.push(valor); 
   }
}


Con "this" te estás refiriendo a la línea de tiempo principal que es donde se encuentra situada la función, recuerda que ya no es un prototype (por algo le has pasado el Array como parámetro).

Por otro lado si ya eliminaste los prototypes no puedes utilizar lo siguiente:

Código ActionScript :

thaArray.indexOf(valor)


Ya que indexOf no es ningún método de la clase Array, el método anteriormente se creaba con el prototype pero ya no, por lo tanto debes enviarle el arreglo como parámetro.

Debes dedicarle un poco más de tiempo ya que no has llegado a comprender el cambio en su totalidad.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:39 pm
si lo se
todavia no lo aprendi bien pero creo que igual no hay que utilizar el cambio ya que cambiando a funciones sigue el problemas con los coimponentes
asi que viene por otr lado la cosa
por ahora mantengo los prototipos tuyos y sigo buscando cual puede ser el problema =) gracias xD
cualquier cosa que se te ocurra avisame

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 08 Oct 2008 06:32 pm
hola que tal
mira
hice un ultimo intento de ver si podia llamar a un swf que tuviera un componente cualquiera ...y si asi no molestaba mas
pero pasa lo mismo asi que opté por usar campos de introduccion de texto en vez del componente textinput(que por cierto nunca supe cual es la diferencia entre los dos..salvo que los segundos son personalizables y pesan mas).
entonces quedo arreglado lo del carrito pero quedó en el camino una duda xD
el scroll que me habias pasado era perfecto pero no puedo usar componentes
se te ocurren otras posibilidades ?
grazie mille :D

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 08 Oct 2008 07:00 pm

ironeric23 escribió:


entonces quedo arreglado lo del carrito pero quedó en el camino una duda xD
el scroll que me habias pasado era perfecto pero no puedo usar componentes
se te ocurren otras posibilidades ?
grazie mille :D


yo no se ya que estas haciendo, pero si los componentes de flash te dan problemas crea los tuyos serian mas bonitos y sabrias lo que harian.

Saludos.

Por DiegoAzul

376 de clabLevel



 

Mx

firefox

 

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