Tengo problemas con la memoria, creo.

Antes de nada, agradeceros vuestra paciencia. Bueno, ya he preguntado al tablón publico un par de veces y no he logrado nada conreto así que bueno, si no me puedes ayudar no pasa nada, pero estoy bastante por no decir muy desesperada!
Ahí ba:
Tengo un proyecto separado en diferentes movies. Cuando creo el proyector, cuando pasa de una a otra, la memoria que esta utilizando (lo he visto con el administrador de tareas), parte desde 30MB (movie principal) hasta 50-60MB que entonces me da un error macromedia y finaliza el programa(proyector). He leído que los members se van cargando en memoria pero que cuando necesita de la memoria los descarga.
¿Qué instrucciones tengo que usar para ir de una película a otra? ¿Tengo qué descargar movies y members cada vez que paso de una a otra? ¿Tengo qué precargarlas?
Hasta ahora los proyectos que había realizado nunca me habían dado ningún problema.
Igual el problema es otro... Lo no se.

1 respuesta

Respuesta
1
En teoría Director administra la RAM para la reprocucción de las .DIR. Pero ciertamente no es nada de eficiente.
Soy un completo enemigo de las MIAM y la instrucción Play ya que su ejecución significa 2 o más archivos DIR abiertos al mismo tiempo.
Para hacer los cambios entre movies, lo que utilizo es
go to movie "@:movie.dir"
o
go to movie the moviePath&"\movie.dir"
La verdad es que utilizo más las sintaxis de @ y no utilizo the moviePath porque me presenta problemas en Mac.
Lo sugerido es realizar controles de RAM o control de fugas de RAM durante todo el proyecto, pero en la práctica es bastante tedioso.
Lo que si puedes hacer es que antes de saltar de una movie a otra hagas desgarga con:
Unload fromFramenum, toFramenum
O
UnloadMovie whichMovie
Por ejemplo
On exitFrame me
UnloadMovie the movieName
Go to "@:movie2.dir"
end
Hola Claudio!
Yo tenia puesto:
on exitFrame me
go to "movie2.dir"
unloadMovie "Movie1.dir"
end
¿Puede ser que vaya a movie2 sin descargar movie1? Supongo que si, bueno estoy cambiando todo, a ver que pasa.
De todas formas, en el "memory inspector" tengo normalmente cast&score 4MB y other memory 335862KB. ¿Qué es la other memory concretamente? Más que nada es para ir comrobando...
Muchas gracias.
El administrador de memoria que poseen los MS-Windows es algo extraña por lo tanto el Memory Inspector de Director no es muy eficiente en ese tema.
Si no me equivoco Other Memory corresponde a la memoria utilizada por otros programas y lo que utiliza el sistema operativo. No es extraño que lo usado sea mayor que la memoria real instalada en tu computador, ya que el administrador de memoria de Windows utiliza memoria virtual (espacio en disco duro) para simular más memoria.
En el handler que me enviaste la instrucción
UnloadMovie "Movie1.dir"
Nunca que ejecuta porque en la linea anterior saliste de la película.
La idea es hacerlo al revés
On exitFrame me
UnloadMovie "Movie1.dir"
Go to "movie2.dir"
end
Aunque lo ideal es descargar la película desde la otra.
Es decir, antes de salir la primera película utilizas una variable en que guardas el nombre de la película.
On exitFrame me
Global gUltimaPelicula
gUltimaPelicula=the movieName
go to "movie2"
end
Y en la entrada de la segunda película haces lo siguiente. En un movie Script
On startMovie me
Global gUltimaPelicula
UnloadMovie gUltimaPelicula
end
Espero te sea de utilidad.
Si tienes dudas agradecería mucho que las hagas entre hoy Jueves o mañana Viernes ya que salgo de vacaciones y estaré de regreso en Marzo.
Me pasaré a no disponible en todoexpertos.
Hola!
La estoy cambiando y poniendo como:
on mouseUp me
unloadMovie "Movie1.dir"
go to "movie2.dir"
end
Lo de descargarlo después de abrir la otra película ¿por qué es mejor? Se utiliza una variable global que de la otra forma no la necesito.
Muchas gracias. Y bueno, espero que lo pases muy bien en tus vacaciones, y que para cuando vuelvas poder decirte: YA ESTÁ, LO CONSEGUÍ! No en serio, muchas gracias por tu paciencia.
Hola!
Me acabo de desmoralizar... ¿Sabes cómo funciona unLoadMovie? Porque acabo de hacer una prueba:
on mouseUp me
unloadMovie miPelicula2
unload 1,1000
go to frame miFrame of movie miPelicula1
end
Hasta ahí bien, el problema es que miPelicula2 no existe, luego...¿cómo se que me descarga realmente una película que existe si al ponerle que descargue una que no existe no me da un error de que no existe?
Por favor... dime que es posible...
Gracias.
¿Qué son miPelicula2 y miPelicula1?
¿Son variables o el nombre de las películas?
Tengo la percepción que estas volviendo atrás en la pregunta.
-- Para descargar una película completa lo primero es no estar usándola y por ese motivo la instrucción
unloadMovie "Movie1.dir"
Debe ser usada desde otra película.
-- Para descargar los castmembers utilizados en score entre los frame 1 y 1000 se usa
unload 1,1000
pero ojo que no descargará el frame que estés utilizando en el momento que escribas esa línea.
Puedes utilizar la instrucción
Put ramNeeded(firstFrame, lastFrame)
Para saber cuanta memoria es necesaria para desplegar una animación, por ejemplo, si deseas ver cuanta memoria es necesaria para ejecutar del frame 1 al 30 haces lo siguiente:
Put ramNeeded(1, 30)
-- 3000000
El resultado es en Bytes.
Suerte
C
Hola otra vez!
A ver miPelicula2 y miPelicula1 son el nombre de las películas (si, me equivoque debía haber puesto "miPelicula2.dir").
De acuerdo la descargaré en la siguiente película, pero me llevará un tiempillo así que espero que para cuando vuelvas haya acabado el problema.
Muchas gracias!
Lo otro que puedes hacer es lo siguiente. Agregar el path de la película.
unloadMovie the moviePath&"\miPelicula2.dir"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas