Durante este tutorial, aprenderemos cómo implementar la clase SharedObject. Almacenaremos todos los datos esenciales de un MovieClip localmente, luego los recargaremos la próxima vez que se abra la aplicación!
Encontramos a este increíble autor gracias a FlashGameLicense.com, el lugar para comprar y vender juegos Flash..
Gracias a manicho por el icono del disco duro..
Echemos un vistazo al resultado final en el que trabajaremos:
Dibuje una imagen en el cuadro con el mouse y presione el botón Guardar. Actualice esta página en su navegador y haga clic en Cargar. Verás reaparecer tu doodle, habiendo sido cargado desde tu disco duro; La animación de fondo estará incluso en el mismo cuadro que estaba antes.!
Comencemos creando un nuevo .fla. Guárdalo y abre el panel de propiedades en Flash. Estoy utilizando Flash CS5, pero este tutorial debería funcionar con todas las versiones de Flash CS. En el panel de propiedades, presione Editar y asegúrese de que su configuración sea idéntica a la imagen de abajo:
Ahora que hemos configurado nuestro .fla, comencemos nuestra Clase de documentos. Para comenzar, abra su editor de código ActionScript favorito y guarde un archivo .as llamado "Main.as" en el mismo directorio que su .fla. A continuación, vaya al panel "Publicar" de Flash. Ajuste el campo de texto "Clase" a "Principal". Ahora abra Main.as y copie y pegue el siguiente código para crear nuestra clase de documento principal.
paquete import flash.display.Bitmap; importar flash.display.BitmapData; importar flash.display.Graphics; importar flash.display.Shape; importar flash.display.Sprite; importar fl.controls.ComboBox import flash.events.Event; import flash.events.MouseEvent; importar flash.geom.Matrix; import flash.geom.Rectangle; importar flash.net.SharedObject; Clase pública Main extiende Sprite función pública Main (): void
Ahora vamos a crear nuestro MovieClip principal. Contendrá 3 cuadros. Cada uno con una forma de color. Dibuja un rectángulo rojo, conviértelo en un MovieClip con F8 y configura el nombre del MovieClip en "myObject". Asegúrese de que el punto de registro es la esquina superior izquierda. Luego crea dos nuevos marcos vacíos dentro del MovieClip. Rellena uno con un triángulo verde y el otro con un círculo azul..
El resultado final debería verse un poco así:
Ahora vamos a utilizar un ComboBox, que es básicamente una lista desplegable. Asegúrese de que la instancia de myObject en el escenario también esté etiquetada como myObject. Luego abra: Ventana> Componentes y arrastre el elemento "ComboBox" a la biblioteca. Si no está utilizando el IDE de Flash, debe hacer clic derecho> Exportar a SWC el ComboBox en la biblioteca.
Ahora podemos crear la variable "myComboBox", situada encima de la función constructora.
var privado myComboBox: ComboBox = nuevo ComboBox ()
A continuación, agregue el siguiente código a su constructor Main ():
// Detiene myObject MovieClip en el primer fotograma myObject.gotoAndStop (1) // Agrega los siguientes objetos al ComboBox y les asigna a cada etiqueta única myComboBox.addItem (label: "Rectangle")) myComboBox.addItem (label: "Circle") myComboBox.addItem (label: "Triangle") // Agrega el ComboBox addChild (myComboBox) // Lo mueve a las coordenadas correctas myComboBox.move (280,150)
Aquí hay una instantánea de cómo debería verse su aplicación cuando se ejecuta:
miObjeto
MarcosQueremos que nuestro MovieClip cambie los marcos cuando seleccionamos un elemento diferente!
Comencemos agregando un EventListener a nuestro constructor, el detector de eventos Event.CHANGE, que verifica cuándo cambia el objeto seleccionado en el ComboBox. Esto es exactamente cuando el usuario elige un nuevo elemento ComboBox.
myComboBox.addEventListener (Event.CHANGE, changeObjectFrame)
A continuación crearemos la función changeObjectFrame (). Esta función comprueba para ver cuál es la etiqueta actual en el ComboBox, que es el nombre del objeto que el usuario ha seleccionado. Luego irá al cuadro correcto de miObjeto
para mostrar el tipo de objeto seleccionado.
función privada changeObjectFrame (e: Event): void //myComboBox.selectedLabel es el nombre del objeto actual seleccionado que definimos anteriormente ... if (myComboBox.selectedLabel == "Rectangle") myObject.gotoAndStop (1) if ( myComboBox.selectedLabel == "Triángulo") myObject.gotoAndStop (2) if (myComboBox.selectedLabel == "Circle") myObject.gotoAndStop (3)
Ahora puede seguir adelante y compilar la aplicación. Debería poder cambiar a un objeto diferente seleccionándolo en el menú desplegable.
A continuación, vamos a añadir un poco de animación a nuestro programa. Entrar en el miObjeto
MovieClip en el primer fotograma. Selecciona todo el rectángulo rojo y presiona F8 para convertirlo en un MovieClip. Asegúrese de que el punto de registro esté en la esquina superior izquierda. Haz esto con cada forma dentro de la miObjeto
Clip de película
A continuación tendremos que darle una animación a cada MovieClip. Vaya al rectángulo MovieClip de forma rectangular y haga clic derecho> Crear interpolación de forma en el relleno de forma roja.
A continuación, seleccione el fotograma número 60 de MovieClip en la línea de tiempo y presione F6 para crear un nuevo fotograma clave. Haz esto con el marco 30 también. Ahora puede ir al marco 30 y cambiar el color del relleno de la forma. He elegido cambiar el color a un naranja dorado. Ahora, si reproduce la animación, el color debería cambiar de Rojo> Naranja> Rojo.
Sigue adelante y haz esto para cada forma en el miObjeto
MovieClip. Ahora puedes seguir adelante y compilar la aplicación; Cada forma seleccionada cambiará de color..
La aplicación actual debería actuar así:
Ahora, permitamos que el usuario dibuje un pequeño doodle personalizado en MovieClip. Esto es similar a mi último tutorial en el que permitimos al usuario dibujar un diseño personalizado en el reproductor. Sin embargo, lo llevaremos un paso más allá en este tutorial al permitirle al usuario GUARDAR su mensaje. Pero vamos salvar eso para mas tarde!
Comencemos configurando una instancia de la clase Shape. Agregue este código sobre su constructor:
var privado myCanvas: Shape = new Shape ()
A continuación vamos a agregar la variable myCanvas al escenario ... Agregar este código al final de nuestro constructor.
addChild (myCanvas))
Haremos esto muy rápido. Si desea más información sobre cómo usar la clase Shape para dibujar, consulte mi otro tutorial.
Comience por crear una variable mouseIsDown ...
// Comprueba si el mouse está abajo privado var mouseIsDown: Boolean = false
Ahora adelante y agregue los siguientes oyentes de eventos:
stage.addEventListener (MouseEvent.MOUSE_MOVE, drawDoodle) stage.addEventListener (MouseEvent.MOUSE_DOWN, mouseDown) stage.addEventListener (MouseEvent.MOUSE_UP, mouseUp)
Y aquí están las 3 funciones que se adjuntan a los EventListeners:
función privada mouseUp (e: MouseEvent): void mouseIsDown = false función privada mouseDown (e: MouseEvent): void mouseIsDown = true // Mueve el puntero del mouse al mouse myCanvas.graphics.moveTo (myCanvas.mouseX, myCanvas.mouseY) ; función privada drawDoodle (e: MouseEvent): void // Si se hace clic con el mouse si (mouseIsDown) // Establece la configuración del dibujo correctamente myCanvas.graphics.lineStyle (5, 0, 1) // Dibuja la línea de dibujo myCanvas. graphics.lineTo (myCanvas.mouseX, myCanvas.mouseY);
Ahora puedes probar el programa y debería estar dibujando bien. Sin embargo, todavía no hemos limitado el espacio de dibujo de nuestro lienzo, por lo que los dibujos fuera de los límites de myObject todavía se muestran. En el siguiente paso, resolveremos todo esto.!
En mi tutorial anterior, el proceso de enmascaramiento fue muy fácil porque cada objeto enmascarado permaneció igual en toda la aplicación. Esta vez, necesitamos tener una máscara que se ajuste a cada MovieClip.
Sigamos adelante y clic derecho> Copiar nuestro miObjeto
en el escenario. Ahora tenemos que hacer clic derecho> Pegar en lugar del objeto para que sea exactamente donde está nuestro miObjeto
estaba. Ahora cambie el nombre de la instancia a "myObjectAsMask". Cambie a la clase principal y agregue las siguientes líneas al constructor:
// ¡Esto debería ser todo explicativo! myCanvas.mask = myObjectAsMask myObjectAsMask.gotoAndStop (1)
Hasta ahora, la máscara solo debería funcionar para el primer objeto. Necesitamos ajustar la función changeObjectFrame para cambiar nuestra máscara para cumplir con la nueva forma de myObject. Agregue el código resaltado a la función changeObjectFrame:
función privada changeObjectFrame (e: Event): void if (myComboBox.selectedLabel == "Rectangle") myObject.gotoAndStop (1) if (myComboBox.selectedLabel == "Triangle") myObject.gotoAndStop (2) if (myComboBox.selectedLabel == "Circle") myObject.gotoAndStop (3) // Borra doodle myCanvas.graphics.clear () // Sincroniza myObject y myObjectAsMask en marcos myObjectAsMask.gotoAndStop (myObject.currentFrame)
A continuación: agregaremos un botón para guardar en nuestra aplicación. Más adelante, esto guardará todos los datos de myObject en un SharedObject. Crea un nuevo botón y diseñalo como quieras. He incluido mi propio botón, pero mostrarle cómo dibujar uno no es importante.
Arrastre una instancia del botón al escenario y asígnele el nombre de instancia de "saveStuff". Luego agregue el siguiente detector de eventos al constructor:
saveStuff.addEventListener (MouseEvent.CLICK, saveObjectData)
A continuación, agregue esta función vacía que usaremos para agregar nuestro código que guarda el objeto..
Función privada saveObjectData (e: MouseEvent): void
Para comenzar a usar la clase SharedObject, necesitaremos crear una nueva instancia de la clase SharedObject. Si nunca ha usado la clase SharedObject antes, este sería un buen momento para revisar este tutorial sobre Trabajar con SharedObjects para tener una idea básica de cómo funcionan. Use este código para crear un SharedObject:
private var mySaveData: SharedObject = SharedObject.getLocal ("saveData")
Vaya dentro de la función saveObjectData y agregue el siguiente código para comenzar nuestra operación de guardar:
// Crea una nueva matriz dentro del programa var myDataArrayInProgram: Array = new Array () // Agrega algunos datos aleatorios a nuestra Array myDataArrayInProgram.push ("WhateverDataYouWant") // Crea una variable dentro de SharedObject // y establece su valor en el valor de nuestro // array local mySaveData.data.myDataArray = myDataArrayInProgram // "Vacía" los datos para guardarlos en la // computadora (aunque el nombre sugiere lo contrario, // ¡esto realmente almacena los datos!) mySaveData.flush ()
Si desea verificar si este código es efectivo, simplemente agregue este fragmento de código al final de su función:
trace (mySaveData.data.myDataArray)
Hasta ahora, todo está bien. Hemos logrado crear un SharedObject y hemos almacenado con éxito algunos bytes de datos en él. El siguiente paso es comenzar a preparar nuestro programa para reconstruir nuestro MovieClip. En este paso, agregaremos todos los datos necesarios a nuestro SharedObject para que nuestra aplicación reconstruya el MovieClip desde cero.
Para hacer esto, tendremos que insertar todos nuestros datos en la matriz de programas MyDataArray para que se adjunten a nuestro SharedObject. He modificado la función saveObjectData para hacer todo esto. Puedes verlo a continuación:
función privada saveObjectData (e: MouseEvent): void var myDataArrayInProgram: Array = new Array () // Agrega la ubicación X del objeto myDataArrayInProgram.push (myObject.x) // Agrega la ubicación Y del objeto myDataArrayInProgram.push (myObject.y) // Agrega el currentFrame del objeto // (El objeto actual elegido) myDataArrayInProgram.push (myObject.currentFrame) // Agrega el marco actual de // la animación del objeto actual myDataArrayInProgram.push (myObject.getChildAt (0) .currentFrame) mySaveData. data.myDataArray = myDataArrayInProgram mySaveData.flush () trace (mySaveData.data.myDataArray)
IMPORTANTE: getChildAt ()
Accede a los hijos del objeto en función de su índice. Cuando solo hay un objeto en un MovieClip, puede estar seguro de que getChildAt (0)
te llevará a eso!
MÁS IMPORTANTE: No te preocupes si recibes el siguiente error:
1119: acceso de la propiedad posiblemente indefinida currentFrame a través de una referencia con tipo estático flash.display: DisplayObject.
Si es así, es probable que tenga activado el Modo estricto en la configuración de su flash. El problema es ese getChildAt ()
devuelve un DisplayObject, y para flash, que podría ser un mapa de bits, Sprite, MovieClip, etc. El problema con DisplayObject.currentFrame
es que solo la clase MovieClip tiene la propiedad currentFrame, porque ninguna otra clase tiene animación.
Para resolver esto, vaya a: Archivo> Configuración de publicación> Configuración de ActionScript y deseleccione "Errores: Modo estricto"
Editor: Alternativamente, podrías emitir el objeto devuelto por getChildAt () como un MovieClip, así:myDataArrayInProgram.push ((myObject.getChildAt (0) como MovieClip) .currentFrame)
Esto le dice a Flash, "trata este objeto como una Clip de película".
Aún no estamos en la etapa en la que podemos usar nuestros datos de guardado, pero aún es bueno crear la opción de UI para cargar el objeto SharedObject antes de tiempo. Al igual que el botón Guardar, puedes diseñar este botón para que sea como quieras; No te voy a guiar a través de dibujarlo.
Cree un nuevo botón y arrastre una instancia al escenario. A continuación, establezca el nombre de instancia en "loadStuff".
Y ahora solo agrega el siguiente Event Listener:
loadStuff.addEventListener (MouseEvent.CLICK, loadObjectData)
Y crea la función loadObjectData así:
Función privada loadObjectData (e: MouseEvent): void
Ahora vamos a agregar un nuevo botón a nuestra interfaz de usuario. Este botón eliminará todo en nuestro SharedObject y también borrará el garabato actual en myCanvas.
Al igual que los otros botones, elegiré mi propio gráfico; Puedes elegir el tuyo o usar el mío..
Esta vez puede establecer el nombre de instancia del botón en "clearStuff".
Ahora agregue este escucha de eventos:
clearStuff.addEventListener (MouseEvent.CLICK, clearObjectData)
Y crea la función clearObjectData así:
función privada clearObjectData (e: MouseEvent): void // Borrar SharedObject mySaveData.clear () // Borra los gráficos de myCanvas myCanvas.graphics.clear ()
Ahora estás empezando a preguntar: "¿Por qué no puedo guardar el doodle del usuario como cualquier otra propiedad?" Desafortunadamente, Flash no le permite guardar directamente MovieClips, Bitmaps o incluso Formas dentro de un SharedObject, pero puede hacerlo guardando el valor píxel por píxel DE la imagen.
Debes preguntar: "¡Pero el garabato no es un mapa de bits, es una imagen vectorial dibujada por el usuario contenida en forma?" Eso es correcto, pero podemos convertirlo en datos basados en mapas de bits tomando una instantánea con la clase BitmapData!
Continúe y cree la siguiente variable sobre el constructor de nuestra aplicación Principal:
private var bitmapDataSnapshot: BitmapData
Esta variable será la "cámara" que toma una instantánea del doodle..
Ahora agregue las siguientes líneas resaltadas a la función saveObjectData en la ubicación que se muestra a continuación:
función privada saveObjectData (e: MouseEvent): void var myDataArrayInProgram: Array = new Array () myDataArrayInProgram.push (myObject.x) myDataArrayInProgram.pact por tipo de dispositivo de inspección de información del hotel: / Crea una nueva instancia de la clase BitmapData, // hace que sea el tamaño del escenario, habilita la transparencia, // y establece el relleno en un bitmapDataSnapshot blanco transparente = nuevo BitmapData (640, 480, verdadero, 0) // Le dice al la cámara para tomar una instantánea // de myCanvas, omite los siguientes 3 parámetros, // y le dice al área de instantáneas que solo incluya // lo que cubre myObject MovieClip bitmapDataSnapshot.draw (myCanvas, null, null, null, new Rectangle ( 250, 30, 150, 100)) mySaveData.data.myDataArray = myDataArrayInProgram mySaveData.flush () trace (mySaveData.data.myDataArray)
Vamos a concluir el proceso de guardado de nuestro programa. Ahora que hemos creado una instancia de BitmapData con todos nuestros datos de myCanvas, necesitamos almacenarla dentro de un ByteArray para ser enviado a nuestro SharedObject. Para hacer esto, podemos usar una función muy útil dentro de la Clase BitmapData. Su nombre es getPixels ()
.
getPixels ()
devuelve un ByteArray de todos los datos de píxeles de un BitmapData. A diferencia de la clase BitmapData, ByteArrays puede almacenarse dentro de SharedObjects para que sean la herramienta adecuada para guardar nuestro Doodle.
Todo lo que necesita hacer es agregar esta línea de código en su función saveObjectData justo después de terminar su trabajo de BitmapData:
// Empuja el valor de // ByteArray devuelto de la función getPixels () // en myDataArrayInProgram // getPixels () requiere un rectángulo que // muestra qué parte de los píxeles del objeto // ¡realmente queremos! // NOTA: ¡El rectángulo actual es solo // una aproximación de donde debería aparecer el doodle //! mySaveData.data.myDataArray.push (bitmapDataSnapshot.getPixels (nuevo Rectángulo (250, 30, 150, 100)))
En el último paso. Una vez que se guardan los datos, necesitamos que el usuario actualice la página para probar que su garabato se ha guardado en su disco duro y no solo se ha guardado en la memoria temporal. Dibuje un cuadro negro alrededor del escenario y agregue un texto que le pida al jugador que se actualice. Luego selecciona todo el objeto y presiona F8. Asegúrese de marcar la casilla "Exportar para Actionscript" y configure la "Clase" en "refreshScreen". Ahora puedes eliminar el objeto en el escenario ...
A continuación se muestra la refreshScreen que he dibujado:
Ahora agregue este código al final de su función saveObjectData:
addChild (new refreshScreen ())
La función finalizada de saveObjectData debería tener este aspecto:
función privada saveObjectData (e: MouseEvent): void var myDataArrayInProgram: Array = new Array () myDataArrayInProgram.push (myObject.x) myDataArray. = new BitmapData (640, 480, true, 0) bitmapDataSnapshot.draw (myCanvas, null, null, null, new Rectangle (250, 30, 150, 100)) myDataArrayInProgram.push (bitmapDataSnapshot.getPixels (new Rectangle (250, 30 , 150, 100))) mySaveData.data.myDataArray = myDataArrayInProgram mySaveData.flush () trace (mySaveData.data.myDataArray) addChild (new refreshScreen ())
Es hora de reconstruir nuestro Doodle completo del ByteArray que guardamos anteriormente!
Debes estar pensando: "¿Qué diablos hago con un ByteArray, es solo un montón de mumbo-jumbo confuso?" Y tienes razón, lo es! Afortunadamente, Adobe también nos ha dado una gran función llamada setPixels ()
que le da el mismo Rectángulo y ByteArray, para recrear el mismo BitmapData que tenía!
Antes de reconstruir todo nuestro MovieClip, debemos seguir adelante y realizar una prueba para ver si podemos reconstruir el BitmapData en sí. Modifica tu loadObjectData
funciona para que se vea así:
función privada loadObjectData (e: MouseEvent): void // Crea un BitmapData y // lo hace del tamaño del escenario, y // aplica todas las configuraciones antiguas var loadBitmapData: BitmapData = new BitmapData (640, 480, true, 1) // Establece los píxeles de loadBitmap // usando nuestro viejo rectángulo, y // accediendo a nuestro SaveData ByteArray // (4to elemento en myDataArray (myDataArray [3])) loadBitmapData.setPixels (new Rectangle (250, 30, 150 , 100), mySaveData.data.myDataArray [3]) // Crea un nuevo mapa de bits y le dice que // cargue su imagen desde loadBitmapData var display: Bitmap = new Bitmap (loadBitmapData) // Mueve la máscara del objeto // cabeza de reproducción a el marco derecho myObjectAsMask.gotoAndStop (mySaveData.data.myDataArray [2]) // Enmascara la imagen con la máscara display.mask = myObjectAsMask // Agrega el mapa de bits al escenario addChild (pantalla)
¡Ahora es el momento de poner todo esto junto! Primero, haga clic derecho en miObjeto
(en biblioteca)> Propiedades. Ahora marque la casilla "Exportar para Actionscript" y configure la "Clase" en "myObjectType". Compara tus propiedades con las de la imagen:
Si todo es lo mismo, entonces estamos listos para irnos! Agregue esto sobre nuestro constructor:
private var myNewObject: myObjectType;
Y añadir todos de esto a la cima de loadObjectData ()
.
// Crea una nueva instancia de myObjectType (myObject) myNewObject = new myObjectType () // Establece la X en la posición anterior myNewObject.x = mySaveData.data.myDataArray [0] // Establece la Y en la posición antigua myNewObject.y = mySaveData.data.myDataArray [1] // Selecciona el objeto antiguo myNewObject.gotoAndStop (mySaveData.data.myDataArray [2]) // Mueve la cabeza lectora al cuadro de animación correcto myNewObject.getChildAt (0) .gotoAndStop (mySaveData.data.data) .myDataArray [3]) // Agrega el objeto a la etapa addChild (myNewObject) // Elimina el escucha del evento comboBox myComboBox.removeEventListener (Event.CHANGE, changeObjectFrame) / Elimina el "doStuff". .CLICK, saveObjectData) loadStuff.removeEventListener (MouseEvent.CLICK, loadObjectData) clearStuff.removeEventListener (MouseEvent.CLICK) .Piezas_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Grupos_Gr. ) ciervo e.removeEventListener (MouseEvent.MOUSE_UP, mouseUp) // Elimina la UI innecesaria removeChild (myObject) removeChild (saveStuff) removeChild (loadStuff) removeChild (clearStuff) removeChild (myComboBox) removeChild (myCanvas)
Probar la aplicación, debería funcionar perfectamente.
¡Felicidades! Has reconstruido oficialmente un MovieClip usando la clase SharedObject!
Si la aplicación anterior funciona, debería presentar una imagen en pausa de donde guardó myObject. Para que la animación vuelva a reproducirse, vamos a crear un botón "Reproducir". Aquí está el que he elegido:
Arrástrelo justo debajo miObjeto
en el escenario y establece su nombre de instancia en "playAnimation".
Ahora agregue esto al fondo de nuestro constructor:
// Oculta el botón playAnimation.visible = false // Agrega botones Event Listener playAnimation.addEventListener (MouseEvent.CLICK, playObjectAnimation)
Luego pon esto en el fondo de loadObjectData ()
.
// Muestra el botón playAnimation.visible = true
Por último, agregue esta función a su programa:
función privada playObjectAnimation (e: MouseEvent): void myNewObject.play ()
Aquí está nuestro código fuente de aplicación final. Si hay alguna diferencia entre su código y este, regrese y vea dónde tomó un camino diferente.
paquete import flash.display.Bitmap; importar flash.display.BitmapData; importar flash.display.Graphics; importar flash.display.Shape; importar flash.display.Sprite; importar fl.controls.ComboBox import flash.events.Event; import flash.events.MouseEvent; importar flash.geom.Matrix; import flash.geom.Rectangle; importar flash.net.SharedObject; public class Main extiende Sprite private var myComboBox: ComboBox = new ComboBox () private var myCanvas: Shape = new Shape () private var mouseIsDown: Boolean = false private var mySaveData: SharedObject = SharedObject.getLocal ("saveData") private var bitmapDataSnapshot : BitmapData private var myNewObject: myObjectType public function Main (): void myObject.gotoAndStop (1) myComboBox.addItem (label: "Rectangle")) myCombcopaccpcpcppcppcppcpcpppcpcppcpcpppcppcppcppcpppcppcppcppcoquejo label: "Circle") addChild (myComboBox) myComboBox.move (280, 150) myComboBox.addEventListener (Event.CHANGE, changeObjectFrame) addChild (myCanvas) en el centro de la luz de la mano o en el centro de la actividad o en el gimnasio. , mouseDown) stage.addEventListener (MouseEvent.MOUSE_UP, mouseUp) en el que se encuentra el estado de la persona que trabaja. eEvent.CLICK, clearObjectData) playAnimation.visible = false playAnimation.addEventListener (MouseEvent.CLICK, playObjectAnimation) función privada clearObjectData (por ejemplo: MyContactos), (por ejemplo, por ejemplo). e: MouseEvent): void myNewObject = new myObjectType () myNewObject.x = mySaveData.data.myDataArray [0] myNewObject.y = mySaveData.data.myDataArray [1] myNewObject.gotoA yStop en los parques de plantas de los parques de animales e instalaciones de la empresa. myNewObject.getChildAt (0) .gotoAndStop (mySpaveBox) loadObjectData) clearStuff.removeEventListener (MouseEvent.CLICK, clearObjectData) stage.removeEventListener (MouseEvent.MOUSE_MOVE, drawDoodle) por ejemplo. veChild (myObject) removeChild (saveStuff) removeChild (loadStuff) removeChild (clearStuff) removeChild (myComboBox) removeChild (myCanvas) var loadBitmapData: BitmapData = nuevo BitmapData (640, 480, true, 1) loadBitmapData. , 150, 100), mySaveData.data.myDataArray [4]) var display: Bitmap = bitmap nuevo (loadBitmapData) myObjectAsMask.gotoAndStop (mySaveData.data.data.data.myDataArray [2]) display.mask = myObjectAsMask addiestation = verdadero función privada playObjectAnimation (e: MouseEvent): void myNewObject.getChildAt (0) .play () playAnimation.visible = false función privada saveObjectData (e: MouseEvent): void var myDataArrayInProgram: Array = new Array () myDataArrayInProgram.push (myObject.x) myDataArrayInProgram.push (myObject.y) myDataArrayInProgram.push (myObject.current lucrationparam.p.p.P.). bitmapDataSnapshot.draw (myCanvas, null, null, null, new Recta ngle (250, 30, 150, 100)) myDataArrayInProgram.push (bitmapDataSnapshot.getPixels (new Rectangle (250, 30, 150, 100)) mySaveData.data.myDataData.data.data.data.myDataData.data.data. myDataArray) función privada mouseUp (e: MouseEvent): void mouseIsDown = false función privada mouseDown (e: MouseEvent): void mouseIsDown = true myCanvas.graphics.moveTo (myCanvas.mouseX, myCanvas.mousey); función privada drawDoodle (e: MouseEvent): void if (mouseIsDown) myCanvas.graphics.lineStyle (5, 0, 1) myCanvas.graphics.lineTo (myCanvas.mouseX, myCanvas.mouseY); función privada changeObjectFrame (e: Event): void if (myComboBox.selectedLabel == "Rectangle") myObject.gotoAndStop (1) if (myComboBox.selectedLabel == "Triangle") myObject.gotoAndStop (2) if (myComboBox.selectedLabel == "Circle") myObject.gotoAndStop (3) myCanvas.graphics.clear () myObjectAsMask.gotoAndStop (myObject.currentFrame)
Como puede ver, con un poco de ajustes, es absolutamente posible guardar todos los datos de MovieClip en SharedObjects para cargarlos más adelante. Esto significa que si está escribiendo un juego, puede crear fácilmente estados de salvar en lugar de tener pequeños puntos de control ...
Buena suerte al usar este método de guardar datos en sus juegos y aplicaciones, para ayudar a que sus programas sean mejores que nunca!
Gracias por leer!