Comunidad de diseño web y desarrollo en internet online

Problema con AS3, XML y un Scroll

Citar            
MensajeEscrito el 05 Ago 2008 09:29 am
Buenos días a todos, escribo aquí porque me estoy volviendo loco.

Os explico, he hecho una aplicacion con AS3, que lo que hace es generar botones tirando de un XML, y que estos al pulsar, me vayan generando otros botones... etc Parecido a un organigrama.

Cuando tengo todo realizado, me encuentro con el problema, de que cuando generan demasiados botones se salen del escenario, Y NO TENGO NARICES HA APLICARLES UN SCROLL, PLEASEEEEEEEE que ALGUIEN ME AYUDE, llevo días probando cosas y no tengo narices.

Os pego el AS3 de los frames

FRAME1

import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.filters.DropShadowFilter;
import cargaXML;
import Movimiento;
import Mimenu;
import Mimenu;

var cargador:cargaXML=new cargaXML();
var parseador:parseaXML=new parseaXML();


var datos:XML=new XML();
datos.ignoreWhitespace=true;

cargador.lanzaXML("xmls/principal.xml",5,MovieClip(root));

stop();

FRAME2
function elementoclickado1(event:MouseEvent):void{
var enlace1:String;
enlace1=event.currentTarget.enlace.toString();
carga_segundo(enlace1);
}
function carga_segundo(s:String):void{
peli1.visible=false;
peli2.visible=false;
peli3.visible=false;
peli4.visible=false;
peli5.visible=false;
peli6.visible=false;
peli7.visible=false;
peli8.visible=false;
peli9.visible=false;
colores1.visible=false;
cargador.lanzaXML(s,32,MovieClip(root));
stop();

FRAME5
var peli1:MovieClip=new MovieClip();
var botones_t1:Array=new Array();
var n:Number=new Number();
var px:Number=new Number();
var py:Number=new Number();


n=0;


while (datos.procesos_estrategicos.ventas.boton[n]) {
var boton:Class = getDefinitionByName("boton_amarillo") as Class;
var peli:Object = new boton();
botones_t1[n]=peli;

peli1.addChild(DisplayObject(peli));

px=parseInt(datos.procesos_estrategicos.ventas.boton[n].attribute("px"));
py=parseInt(datos.procesos_estrategicos.ventas.boton[n].attribute("py"));
peli.campo.text=(datos.procesos_estrategicos.ventas.boton[n]).toString();
peli.x=px;
peli.y=py;
peli.enlace=(datos.procesos_estrategicos.ventas.boton[n].attribute("enlace"));
peli.addEventListener(MouseEvent.MOUSE_DOWN,elementoclickado1);


n++;
addChild(peli1);
}

peli1.x=150;
peli1.y=230;

FRAME6
var peli2:MovieClip=new MovieClip();
var botones_t2:Array=new Array();
var enlaces:Array= new Array();

n=0;

while (datos.procesos_operativos.ventas.boton[n]) {

var botonp2:Class = getDefinitionByName("boton_amarillo") as Class;
var pelip2:Object = new botonp2();
botones_t2[n]=pelip2;

peli2.addChild(DisplayObject(pelip2));

px=parseInt(datos.procesos_operativos.ventas.boton[n].attribute("px"));
py=parseInt(datos.procesos_operativos.ventas.boton[n].attribute("py"));
pelip2.campo.text=(datos.procesos_operativos.ventas.boton[n]).toString();
pelip2.x=px;
pelip2.y=py;
pelip2.id=n;
pelip2.enlace=(datos.procesos_operativos.ventas.boton[n].attribute("enlace"));


pelip2.addEventListener(MouseEvent.MOUSE_DOWN,elementoclickado1);


n++;



}

addChild(peli2);
peli2.x=150;
peli2.y=330;
stop();

CON ESO, ALGUIEN ME PODRÍA DECIR COMO APLICAR UN SCROLL A LO QUE PINTO???
Gracias por adelantado a quien me responda, estoy un poco desesperado

Un saludo

[/list]

Por Snowave

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 09:33 am
El código sin formato me resulta bastante difícil de leer. De todas formas y a simple vista, si desparramas el código por 6 frames la cosa ya viene complicada desde el vamos. Te diría que pintes todo en un MC y lo muestres en un scrollPane

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ago 2008 10:10 am
Hola, en primer lugar gracias por tu respuesta,

Todos los arrays de los botones me los esta pintando en root, y la verdad es que la solución que me comentas, es la primera que pense, pero tampoco soy capaz de pintar esos botones que creo en un movieclip "n", lo podrías echar un vistazo??

Como te digo, llevo varios dias con esto, y no soy capaz de meterlo en un scroll, el resto del aplicativo funciona, solo he pegado los primeros frames, pero luego hay muchos mas, que me van pintando subniveles y subsubniveles.

Te agradecería mucho que me ayudaras, ya que no encuetro nadie que me de una solucion.

GRacias por adelantado

Por Snowave

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 10:28 am
solo he pegado los primeros frames, pero luego hay muchos mas, que me van pintando subniveles y subsubniveles


Un código distribuído entre muchos frames es un claro candidato a fracasar, ya que partes de un problema de estructura. Como lo piensa el scrollPane en AS3 es asignando (sorry, tengo la ayuda en inglés)

the class name of a movie clip in the library, a reference to a display object, or a instance name of a movie clip on the same level as the component.


Es decir, tu planteo no cumple ninguna de las tres condiciones para ser asignada a un scrollPane. Considera hacerlo de alguna de esas maneras (en una clase o pintando dentro de un MC) para poder usar un scrollPane. Hacerlo manualmente (pintar el cuadradote, usar mask, instanciar un scollbar o hacerlo a mano) implica un esfuerzo aún mayor, dado que hay que seguirle la pista a los addChild por todos los frames. Viendo el código que pusiste, me extrañaría que no pudieras transformarlo en clase, ya que escribir ese código implica tener una cieta base

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ago 2008 10:52 am
Ese código lo hicimos entre un desarrollador y yo que soy diseñador, y como te comentaba con anterioridad, he echo multitud de pruebas y no consigo meter los botones generados en un movieclip que cree a tal efecto.

Es la primera aplicacion que hago con AS3 y no me esta resultando nada facil acostumbrado a AS2 y AS1, entiendo que el problema esta aqui:

FRAME 1

cargador.lanzaXML("xmls/principal.xml",5,MovieClip(root));

pero como te digo, no soy capaz, de definir un movieclip, y decirle que me lo pinte dentro.

Si tu o alguien me puede ayudar, se lo agradecería, porque como he dicho con anterioridad, he probado de todo sin ningun efecto positivo.
Un saludo

Por Snowave

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 04:28 pm
una ayudita por favor...

Por Snowave

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 05:19 pm
No podrás hacerlo cuando tu código está desparramado entre muchos frames como te dijo Jorge, es algo duro de decir pero si quieres que funcione bien y hacer que se inserte en un movie tienes que organizarlo en clases, es decir volverlo a hacer.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 05 Ago 2008 05:22 pm
Pues nada entonces, muchas gracias por vuestra ayuda,

Me pondre a reprogramar todo, haber si aprendo AS3 que despues de un monton de años con AS1 y AS2, es como si fuera nuevo

Un saludo

Por Snowave

6 de clabLevel



 

firefox

 

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