Comunidad de diseño web y desarrollo en internet online

Duda con clase para utilizar el teclado.

Citar            
MensajeEscrito el 19 Abr 2011 09:10 pm
Hola amigos como va, bueno les cuento que estuve viendo una clase que sirve para trabajar con el teclado, en mi caso me va a servir para mover un MovieClip con las flechas del teclado. El caso es que no me gusta trabajar la clase sin comprenderla y se me está haciendo bastante difícil entender bien que hace cada cosa, así que dejo el código, comentando lo que más o menos se o fuí investigando, y aver si alguno me puede ayudar a traducirlo por completo.

Código ActionScript :

package com.senocular.utils {
   
   import flash.display.Stage;
   import flash.events.KeyboardEvent;
   import flash.ui.Keyboard;

//La clase Proxy permite anular el comportamiento predeterminado
// de las operaciones de ActionScript.(por ejemplo, la recuperación
// o modificación de propiedades) de un objeto. 
//La clase Proxy no tiene ningún constructor; no se debe intentar 
//crear una instancia de Proxy. Por el contrario, 
//se debe crear una subclase de la clase Proxy para anular métodos 
//como getProperty y presentar un comportamiento personalizado.
//Si intenta utilizar un método de la clase Proxy sin anular el método,
// se emitirá una excepción.
//La clase Proxy es una sustitución de las funciones Object.__resolve y 
//Object.addProperty de ActionScript 2.0, que ya no están disponibles
// en ActionScript 3.0. La función Object.addProperty() permitía crear 
//dinámicamente métodos get y set en ActionScript 2.0.
//Aunque ActionScript 3.0 proporciona métodos get y set en tiempo de 
//compilación, no es posible asignarlos dinámicamente a un objeto
//a no ser que se utilice la clase Proxy.
   import flash.utils.Proxy;

//Para evitar interferencias con el espacio de nombres public, los 
//métodos de la clase Proxy se encuentran en el espacio de nombres 
//flash_proxy.
   import flash.utils.flash_proxy;

//una clase dinámica es aquella que puede ser modificada, tanto sus 
//propiedades como métodos, en tiempo de ejecución.
   dynamic public class KeyObject extends Proxy {
      
      
//Las variables estáticas, que se asocian a una clase en lugar 
//de a una instancia de una clase, son útiles para almacenar
//y compartir información que se aplica a toda una clase de objetos. 
//Por ejemplo, una variable estática es adecuada si se desea 
//almacenar un recuento del número de veces que se crea una 
//instancia de una clase o si se desea almacenar el número máximo 
//de instancias de la clase permitidas. 
      private static var stage:Stage;

//La clase Object se encuentra en la raíz de la jerarquía de clases de 
//ActionScript. Los objetos se crean mediante constructores,
//empleando la sintaxis de operador new, y se le pueden asignar 
//propiedades dinámicamente. Los objetos también pueden 
//crearse mediante la asignación de un literal de objeto 
      private static var keysDown:Object;
      
      public function KeyObject(stage:Stage) {
         construct(stage);
      }
      
      public function construct(stage:Stage):void {
         KeyObject.stage = stage;
         keysDown = new Object();
         stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
   //eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);
         stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
      }
      
      
      //Apartir de acá para abajo me trabé
      // ¿Qué hace este método? - ¿Qué es override?
      flash_proxy override function getProperty(name:*):* {
         return (name in Keyboard) ? Keyboard[name] : -1;
      }
      
      public function isDown(keyCode:uint):Boolean {
         return Boolean(keyCode in keysDown);
      }
      
      public function deconstruct():void {
         stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
         stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);
         keysDown = new Object();
         KeyObject.stage = null;
      }
      
      private function keyPressed(evt:KeyboardEvent):void {
         keysDown[evt.keyCode] = true;
      }
      
      private function keyReleased(evt:KeyboardEvent):void {
         delete keysDown[evt.keyCode];
      }
   }
}

Por jasinski

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2011 02:17 pm
La verdad no tiene sentido esta clase para algo tan simple como manejar el teclado, ¿porque tratar de sustituir Object.__resolve y Object.addProperty de AS2? Basicamente copia las propiedades del keyboard a un objeto custom keysDown, pero no le veo mucho sentido a no ser en un contexto mas amplio que lo justifique
Si quieres manejar el teclado, mirate la clase Keyboard en la ayuda y comienza por el principio

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 May 2011 10:22 pm
Yo trabajo con esta clase porque en mis juegos cuando lo hacia de la manera por "default" no me respondía cuando tecleaba varias teclas a la vez... y con esta clase no hay nada de problemas, ademas de que es muy sencillo trabajar con ella...

Por danmolo

36 de clabLevel



Genero:Masculino  

Indie Game Developer

safari

 

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