Comunidad de diseño web y desarrollo en internet online

SharedObjects para guardar el fotograma dentro de un clip

Citar            
MensajeEscrito el 03 Jun 2013 05:31 pm
Hola, he revisado los posts de este foro referente a SharedObjects pero en ninguno de ellos he encontrado respuesta a lo que necesito. Os comento:

En base a este tutorial http://www.cristalab.com/tutoriales/sharedobjects-en-flash-c10l/#comment-form sin estar familiarizado con ShareObjects lo entiendo porque está muy bien explicado.

Necesito hacer lo mismo pero que en vez de guardar campos de formulario guarde el fotograma de ciertos clips. Es decir, a medida que el juego que estoy terminando va avanzando, ciertos clips van canviando al fotograma 2, al 3, 4… para mostrar diferentes cosas. Pues necesito adaptar el tutorial http://www.cristalab.com/tutoriales/sharedobjects-en-flash-c10l/#comment-form de manera que me guarde la posición de los fotogramas de esos clips, y que los recupere al cargar los datos.

Muchas gracias por la ayuda,
Bernat

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 03 Jun 2013 06:34 pm
Pues en algun punto guardas el _currentFrame

miSO.data.fotograma = _currentFrame

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 03 Jun 2013 08:14 pm
Hola Jorge, muchas gracias por la respuesta, pero me temo que tengo que pedir más ayuda. En este tipo de programación voy muy verde. Durante el prceso del juego, le voy diciendo que al clip "puntuacion" vaya al fotograma 2, al 3, al 4… a medida que va evolucionando el juego (de esta forma voy haciendo que acumule estrellas (en el fotograma 2 hay una, el 23 hay dos estrellas, etc.).
Entonces, lo que necesito hacer es que al guardar detecte en que fotograma dentro del clip ""puntuación" se encuentra y lo guarde. Luego, la función de cargar que decupere esa posición de fotograma del clip.

Seguramente ya es lo que tu me decías, pero no se que tengo que hacer con ese código, ni como especificar que haga referencia a ese clip (colocando ese código dentro del clip?)

graicas!

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 04 Jun 2013 01:40 pm

solisarg escribió:

Pues en algun punto guardas el _currentFrame

miSO.data.fotograma = _currentFrame

Jorge


Hola, me podrías ampliar un poco cómo se tiene que aplicar? muchas gracias!

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 04 Jun 2013 02:37 pm
Hola,
he intentado comprender el funcionamiento y he logrado que funcione bien excepto en que no guarda los datos tras cerrar el swf y volver a abrirlo.

Este es el código que he utilizado:
(el clip que tiene que recordar el frame se llama "puntuacion")

En root:

Código :

function guardarDatos(nombre:String) {
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame");
   disco_so.flush();
}
function cargarDatos(dato) {
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame");
   return disco_so.data.savedFrame;
}


En botón guardar:

Código :

on (release) {
   var savedFrame:Number = _root.puntuacion._currentframe;
   _root.disco_so.data.savedFrame = savedFrame;
}


Botón cargar:

Código :

on (release) {
   puntuacion.gotoAndStop(_root.disco_so.data.savedFrame);
}


mil gracias!

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Jun 2013 02:47 pm
Boton guardar

Código ActionScript :

guardar.onPress = function(){
   var disco_so:SharedObject  = SharedObject.getLocal("savedFrame");
   disco_so.data.savedFrame = _root.puntuacion._currentframe;
   disco_so.flush();
}
cargarDatos.onPress = function() {
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame");
   puntuacion.gotoAndStop(disco_so.data.savedFrame);
}


Si metes todo en el mismo lugar te aseguras que estas accediendo a los datos, si tienes todo por ahi tienes que ver que todo este en scope, es decir por ejemplo que el clip puntuacion este en el escenario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por solisarg el 13 Jun 2013 06:13 pm, editado 1 vez

Argentina

chrome
Citar            
MensajeEscrito el 13 Jun 2013 04:49 pm
Hola Jorge, mil gracias por la ayuda!

Pero la verdad es que no me funciona. Dice que hay un error de sintaxi en la línea

Código :

var disco_so:SharedObject; = SharedObject.getLocal("savedFrame");

dice: "El operador '=' debe ir seguido de un operando"

Esto es lo que tengo en el código:

Código :

function guardarDatos(nombre:String) {
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame");
   disco_so.flush();
}
function cargarDatos(dato) {
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame");
   return disco_so.data.savedFrame;
}

guardar.onPress = function(){
   var disco_so:SharedObject; = SharedObject.getLocal("savedFrame");
   disco_so.data.savedFrame = _root.puntuacion._currentframe;
   disco_so.flush();
}
cargarDatos.onPress = function() {
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame");
   puntuacion.gotoAndStop(disco_so.data.savedFrame);
}


Mil gracias Jorge!!!

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Jun 2013 06:14 pm
De AS npi, verdad?

Tienes un punto y coma

var disco_so:SharedObject; = SharedObject.getLocal("savedFrame");

El punto y coma significa que termina el comando, nunca debes tener un punto y coma en medio de un comando, si yo lo puse ser'a porque copy&paste del tuyo un poco apurado, me suele pasar.
Seria

var disco_so:SharedObject = SharedObject.getLocal("savedFrame");

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 13 Jun 2013 06:19 pm
pues la verdad es que tengo un nivel bajo de AS pero intento aprender tanto como puedo,
mil gracias, voy a ver si funciona

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Jun 2013 06:23 pm
Tal cual no funciona, pero eliminando la segunda parte del código si!!!!
Jorge, me salvas la vida!

Dejo el código final por si a alguien más le puede servir:

Código :

function guardarDatos(nombre:String) {
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame");
   disco_so.flush();
}

guardar.onPress = function(){
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame");
   disco_so.data.savedFrame = _root.puntuacion._currentframe;
   disco_so.flush();
}
cargarDatos.onPress = function() {
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame");
   puntuacion.gotoAndStop(disco_so.data.savedFrame);
}

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Jun 2013 07:36 pm
Dos últimas preguntas importantes que mucha gente lo pregunta en foros (en esp y engl) pero nadie dice nada claro al respecto:

1- Cuanto tiempo quedaran guardado los datos en el ordenador del usuario?
2- El si se cuelga en internet y se carga el swf desde un html variarà algo?

Muchas gracias

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 13 Jun 2013 07:59 pm
A diferencia de las cookies los SharedObjects no prescriben, y los datos se guardan en el disco rídigo del usuario, por lo cual siempre estan disponibles, aunque no tenga conexión

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 13 Jun 2013 08:30 pm
Mil gracias!!!

Por Bernat

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 14 Jun 2013 11:37 am
He aplicado esto a que guarde la situación de varios clips, y me funciona, pero no se si es una forma limpia, y no sólo quiero resolverlo sino aprender todo lo que pueda, me podéis decir si es correcto el código así, o si se puede hacer más limpio?
Haciendo un solo savedFrame no me funciona.

Código :

function guardarDatos(nombre:String){
   var disco_so:SharedObject;
   disco_so = SharedObject.getLocal("savedFrame1");
   disco_so = SharedObject.getLocal("savedFrame2");
   disco_so = SharedObject.getLocal("savedFrame3");
   disco_so.flush();
}

guardar.onPress = function(){
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame1");
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame2");
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame3");
   disco_so.data.savedFrame1 = _root.clip1._currentframe;
   disco_so.data.savedFrame2 = _root.clip2._currentframe;
   disco_so.data.savedFrame3 = _root.clip3._currentframe;
   disco_so.flush();
};

cargarDatos.onPress = function(){
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame1");
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame2");
   var disco_so:SharedObject = SharedObject.getLocal("savedFrame3");
   _root.clip1.gotoAndStop(disco_so.data.savedFrame1);
   _root.clip2.gotoAndStop(disco_so.data.savedFrame2);
   _root.clip3.gotoAndStop(disco_so.data.savedFrame3);
};

Por Bernat

6 de clabLevel



 

safari

 

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