Problema con CustomScroll en Director

Ante todo decirle que llevo muy poco haciendo multimedias, me dedicaba más bien a la programación Desktop y Web, pero ahora trabajo las multimedias específicamente en Director.Hay cosas que no logro aun, para no abarcar mucho en esta pregunta iré poco a poco.
Los scroll no me funcionan bien, yo trabajo con una diseñadora ella me da los objetos hechos en flash y yo los importo hacia Director, en este caso tengo las dos flechas y el dragguer swf y la barra un png, explico como funciona :
¿Cuándo entro al frame tengo allí un indice de contenidos dentro de un field y lo voy seleccionando con el mouse allí el scroll funciona bien, cada linea del Field es miembro de un cast(Indice) y este hace referencia a otro miembro de otro cast(Contenido), más o menos así indice1(cast indice) refiere a contenido1(cast contenido) el contenido como es lógico no se muestra al entrar a la pantalla solo cuando se da click sobre el indice entonces aparece un Text que esta inicialmente vacío y luego allí sale el texto que viene del cast Contenido en un Text también y el scroll refiere al Text vacío que yo pongo pues no puedo poner un scroll para cada miembro del cast contenido lo ideal es que tenga uno solo y los contenidos se ajusten con este scroll, ahora el contenido se muestra pero con el problema de que como no le funciona el scroll pues no se ajusta y se muestra fuera del plano donde debe salir, yo utilizo el Custom Scroll que trae Director pero al parecer ellos trabajan esto desde el comienzo del frame y como yo doy la orden de que salga el scroll después de estar dentro del frame puede que allí este el problema, es por pensar en algo eso se me ocurre, cual seria la solución allí?
Lo otro es que yo utilizo mucho el updateStage y el pause, pause para detener el cabezal cuando entre en un frame y el updateStage para actualizar cada vez que haya un cambio en la pantalla pero esto al parecer implica que luego que yo actualizo una vez los swf no funcionan bien.Hay alguna forma de detener el cabezal que no se con pause y como limitarme al uso de las actualizaciones de pantallas.
Ah se me olvidaba, tengo un botón imprimir, yo utilizo PrintOmatic, funciona bien si quiero imprimir el cast Indice pero si quiero imprimir un Contenido me dice que el sprite esta vacío o sea que parece que encima del Text vacío que yo puse esta saliendo el que viene del contenido se solapan, ¿puedo prescindir del Text vacío? No se si podrás entender este enredo, espero que si pues veo que eres experto en el tema. Saludos.
                      Dieter.

1 Respuesta

Respuesta
1
Las preguntas que planteas no me veo capacitado para respondértelas al 100% sin ver el código, son bastante complejas, no obstante intentaré darte mis impresiones por si te puedan servir de ayuda o como pistas para buscar la solución.
Vaya por delante que no me considero un experto en Director. Me he registrado como tal animado por la definicón que propone el portal "Para ser experto no es necesario ser un "sabio" en la materia, sino simplemente conocer un poco más ese tema que el resto de la gente y tener ganas de ayudar y compartir tus conocimientos. La razón principal para hacerse experto en todoexpertos.com es el deseo de ayudar a los demás, el formar parte de esta comunidad de ayuda virtual. Todos necesitamos ayuda alguna vez.". Me he sentido identificado con ella, algunas veces me han ayudado en este foro y si puedo devolver algo de esa ayuda a otros pues genial.
Hecha esta salvedad vamos con lo que planteas.
Ese de hacer cada línea del scroll como un miembro del Cast es un poco enrevesado y nunca lo he realizado así. No me extraña que te esté dando la lata. El scroll de Director está pensado para navegar por las líneas de un campo de texto. Efectivamente, parece que para el efecto que quieres lograr tu no te valdrá lo que viene en la Librería y tendrás que hacerte tu propio script. Lo primero que yo no haría sería eso de que el sprite esté vacío de inicio, si tal haz dos sprites uno vacío y otro con texto y mueve la cabeza de frame en vez de cambiar en tiempo de ejecución el contenido del sprite.
Para no utilizar el Pause emplea un script que lo único que tenga es un comando "go to the frame" harás que la ejecución no pare y la cabeza de reproducción se quede en el sitio.
Creo que utilizas mucho el updatestage porque vienes de una programación donde cambiar los contenidos en tiempo de ejecución es habitual. A lo mejor no tienes muy presente la metáfora de Director, de los miembros, los actores, el escenario y la cabeza de reproducción que se mueve como un reproductor de cine. Intenta que en vez de cambiar contenidos y comportamientos en un sólo frame mejor cambia a otro frame donde sea todo igual menos lo que quieras cambiar, eso te dará menos problemas en Director.
Aunque la programación va progresando día a día, debes conocer las limitaciones del Director y usarlo para lo que se puede, explotar sus ventajas y en caso de buscarle los límites o te ciñes a lo que te da, o te rayas o buscas otra herramienta. Es un análisis que yo me hago antes de decidir con qué herramienta voy a desarrollar tal o cual producto.
Lo que comentas del PrintOMatic creo que es por lo mismo de antes, Porque le dices que imprima un member o un sprite que no tiene nada. Tu lo llenas de contenido con Lingo o con Javascript pero el Xtra va a buscar el contenido que tiene en el reparto (cast) o en el escenario (sprite) y ese, inicialmente, no tiene nada.
Lo dicho, siento no poder concretar más. Desde luego, mi impresión es que en vez de intentar que te funcione con el enfoque que tienes ahora que replantees la estrategia, que reflexiones si no estarás aplicando soluciones de programación en cliente o en servidor a una herramienta que acaba de incorporar a su programación el soporte a la sintaxis de Javascript.
Si muy buena tu aclaración Miguel pero aun me surgen dudas, a ver si entendí, lo que me planteas es que por decirle de alguna forma duplique la label que tengo ya creada, y luego añada los nuevos cambios(sprite) luego en la primera haga una acción cuando lo requiera go "label nueva" a la nueva que he creado ya con los cambios hechos de tal forma que el cabezal se mueva hasta ella, estoy por probar esa opción, la opción go to the frame funciona pero hay casos en que no es así, pienso que con la solución de crear nuevas label se pueda solucionar, quisiera saber desde el punto de vista de optimización si es correcto por decir de algún modo abusar de la creación de label pues tengo idea de que los proyectos hechos en Director consumen algo de memoria y tengo que pensar en todo tipo de usuario y recursos de hardware, por otra parte aquí te anexo un código que tengo hecho para autoajustar la pantalla, o sea este código lo que hace es usando la xtra Budi Api captura el estado actual de la configuración de la pantalla, la guarda y luego ajusta al tamaño de la multi que es 800x600 luego al salir vuelve al estado original que tenia el usuario pero no me funciona, tienes idea de como solucionar esto, solo cuento con esta xtra y no puedo en estos momentos pagar ninguna, tengo otra que se llama Display Mode pero sin registro, allí para darte una pista aun no se donde poner los comportamientos para toda la película, veras el código y te darás cuenta que este es para eso, yo solo se poner los comportamientos para una parte de la película en especifico.Por otra parte tengo un pequeño problema con el sonido, yo incorporo sonidos a la multi, son 3 archivos de sonido que tengo importados en un cast que se llama extras, todos están puestos en el canal 1 y los tengo ubicados de tal forma que cubra el área que deseo, o sea la parte de la multimedia donde va a sonar cada uno, los dos primeros funcionan bien, incluso pasan de una pantalla a otra sin dejar de sonar pero luego en la pantalla créditos tengo uno y cuando selecciono este botón desde cualquier pantalla lo que hace es mover el cabezal hasta esta label allí debería empezar a sonar pero no sucede así, me puedes explicar si utilizo el mismo procedimiento en los anteriores porque este no funciona, es cierto lo que dices que luego de venir trabajando con otra filosofía de programación esta me cuesta un poco de trabajo y a veces pienso en soluciones basadas en ellas cuando en esta no funcionan así pero esocon el tiempo ya me iré acostumbrando, es muy bueno tener personas como tu dispuesta a ayudar, gracias por tus aclaraciones y seguimos comunicándonos para ayudarnos en todo lo que a informática se refiere. Saludos,
                             Dieter.
Código para redimensionar la pantalla usando xtra Budi Api.
on startMovie
Global alto, ancho, ScrHgt
set Alto=baScreenInfo("height")
set Ancho=baScreenInfo("width")
set ScrHgt=baScreenInfo("depth")
set showing = baHideTaskBar(true)
set Ok = baSetDisplay(800, 600, 32, "temp", true)
end
on stopMovie
global alto,ancho,ScrHgt
set Ok = baSetDisplay(ancho, alto, ScrHgt, "temp",true)
set Showing=baHideTaskbar(false)
end
Vamos allá.
Tienes que crear un script de tipo movie para que afecte a toda la película y no al sprite o al frame donde lo tengas colocado. Para ello creas te un script normal (CTRL+0) y metes este código:
On startMovie
global w,h,d
set h = baScreenInfo( "height" )
set w = baScreenInfo( "width" )
set d = baScreenInfo( "depht" )
set OK = baSetDisplay( 800 , 600 , 32 , "temp" , true )
end 

Más o menos viene a ser lo que tienes tu en el StartMovie. Vas a la ventana de Property Inspector y en la pestaña Script lo pasas de tipo Behaviour a tipo Movie. Con esto tendrás un "script movie", es como una "función global" o una "superclase" a la que puedes llamar desde cualquier parte del movie.
Te creas otro script, esta vez si quieres uno de tipo Behaviour y le metes este código:
on exitFrame me
global w,h,d
set OK = baSetDisplay( w , h , d , "temp" , true )
_player.quit()
end

Este script lo puedes poner en un frame que esté etiquetado con una Label que utilices para salir, por ejemplo.
Con esto deberías tener solucionado el redimensionamiento de la pantalla.
Con el tema de los sonidos... Ufff, es difícil, muy difícil. Funcionan cuando le salen del carajo, no tienen un comportamiento regular, al menos yo no he dado con él todavía. He logrado evitar los problemas que comentas metiendo los sonidos en archivos Flash, en swf. Si ya se que es raro, pero tenía que discurrir algo que me funcionase. Así incorporo el sonido a la película sin emplear un canal de audio, como un sprite más. Y así no me da problemas.
Cualquier aportación para aprender más sobre como manejar correctamente la música de fondo, los sonidos y demás... será bienvenida, y agradecida.
Por cierto, ten cuidado con el código que te encuentres por ahí de Lingo. La mayoría funciona en Director 7 u 8, pero cuando se lo metes a MX... y ya no digamos al 11.
Intercambiando emails como este es como más se aprende. A ver si podemos ir creando una pequeñita comunidad. Seguro que nos vendría de perlas a todos tener a quien preguntar sobre un programa tan particular cuando uno se atasca. Je je.
Perfecto Miguel, logre redimensionar la pantalla pero hay un pequeño problemita, me sale ubicado el escenario a la izquierda y casi no se ve, en el foro vi una respuesta a esto pero ahora la verdad no recuerdo, debe ser algún problema con la alineación pero ahora no veo la opción para arreglarlo, dime si lo sabes tu.En cuanto a lo del sonido el problema es que tengo que varios en un mismo canal y en el mismo cast y el único que no me funciona es el de la ultima pantalla mira yo lo controlo de esta forma por si te sirve
sound(1).stop() esto es para detenerlo
para activarlo
sound(1). play([#member:member("sonido","castsonido"),#loopcount:0])
No se por que no lo carga, aunque pensándolo bien no es rara la opción que das de meterlo en el swf porque en este caso es una pantalla de Créditos que es un swf, intentare con esa opción a ver que tal. Bueno amigo esta pregunta la voy a finalizar y a puntuar luego que me respondas, para sumarte puntos, ya luego abriré otra más, si pienso lo mismo de la comunidad de programadores es muy bueno, mira yo nunca había programado en este tipo de filosofía pero me esta gustando y ademas mi trabajo lo exige y estar en un foro como este donde hay gente que como tu les gusta ayudar pues es magnifico, que sepas que igual puedes preguntar sobre cualquier cosa que si lo se con gusto te lo respondo, si ya he visto los problemitas de trabajar con diversas versiones de Director y de Flash a menudo no hay compatibilidad lo que hago es por ejemplo en el caso de que sea un swf que no me funcione lo que hago es guardarlo como flash 5 que es bastante compatible con las versiones superiores de Director, los códigos de Director hasta ahora no me han dado problemas con las versiones trabajo con Director MX 10.1.Saludos,
                               Dieter.
Lo que comentas sobre los sonidos a mi también me pasa. No acabo de controlar cómo va esto y por qué para otro tipo de members si funciona y para estos no. Lo que te decía, cuando me dan problemas estas cosas opto por pasar el sonido a un flash y va perfecto. Es una solución chabacana, pero acabas con el problema.
Sobre lo que comentas para centrar. Es muy sencillo. Vas al Property Inspector. Pulsas en la pestaña Display Template y allí tienes unas coordenadas en el apartado Location. Prueba poniendo 0,0.
Seguimos en contacto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas