Posted on 06-07-2008
Filed Under (ActionScript, Desarrollo) by Programlocura

Hace tiempo que no posteaba tutoriales, asi que vamos a ver como crear Motion Tweens con Action Script 2.0.

Actionscript:
  1. // Función que Produce el Movimiento
  2. // ----------------------------------
  3. function floatMC(mc) {
  4. import mx.transitions.Tween;
  5. var posy = mc._y;
  6. var rel_posy = posy - 25;
  7.  
  8. var func = mx.transitions.easing.Back.easeInOut;
  9. var speed = 1;
  10.  
  11. var myTween:Tween = new Tween(mc, "_y", func, posy, rel_posy, speed, true);
  12.  
  13. myTween.onMotionFinished = function() {
  14. myTween.yoyo();
  15. }
  16.  
  17. }

No se preocupen, ya lo explico :P.
Yo lo creé en forma de función porque lo necesitaba usar para varios movieclips (Aunque podria haber hecho una función que moviese todos juntos, pero al final lo hice de esta forma) y creí que era la mejor opción.

Vamos por partes:
1. Lo que primero debemos hacer es importar la clase MotionTween. Con una simple llamada "import" está listo.

Actionscript:
  1. import mx.transitions.Tween;

2. Aquí simplemente declaro 2 variables (posy, rel_posy) una de ellas contiene la coordenada en _y del movieclip pasado por parámetro, y la otra contiene la posición relativa (Sumada a la posición actual) a la que deberá transportarse.

Actionscript:
  1. var posy = mc._y;
  2. var rel_posy = posy - 25;

3. Creamos otras 2 variables (func, speed) en las cuales almacenaremos la propiedad que determina el tipo de movimiento (mx.transitions.easing.[VARIOS].[VARIOS]) y uno que determina la velocidad del movimiento (speed).

Actionscript:
  1. var func = mx.transitions.easing.Back.easeInOut;
  2. var speed = 1;

Atención! Los posibles valores que puede tener la variable "func" son los siguientes:

  • Back – Extiende la animación sobre uno o ambos extremos del "Tween"
  • Bounce – Crea un efecto de rebote en la transición en uno o ambos extremos.
  • Elastic – Crea una mezcla entre el BOUNCE y el BACK.
  • Regular – Movimiento más lento sobre los extremos de la transición (uno o ambos).
  • Strong – Similar al regular más pronunciado cuando se combina con otros métodos de easing.
  • None – Movimiento lineal entre ambos extremos.

Uso: var func = mx.transitions.easing.[Reemplazar Aqui].easeInOut;
Ej.: var func = mx.transitions.easing.Regular.easeInOut;

4. Aquí declaramos la ultima variable a utilizar, llamada myTween (un objeto de la clase Tween) que tendrá como parámetros las cosas que determinamos anteriormente.

Actionscript:
  1. // Tween(movieclip, "parametro_movimiento", Tipo_Movimiento, Posicion_inicial, posicion_final, velocidad, usar_segundos_o_frames)
  2. // El ultimo parametro: "usar_segundos_o_frames" se determina con true o false, si se pone a true utiliza los segundos.
  3. var myTween:Tween = new Tween(mc, "_y", func, posy, rel_posy, speed, true);

5. Luego, haciendo referencia al objeto (myTween) utilizamos el metodo "onMotionFinished" de la manera que vemos abajo, y habiéndole indicado que se ejecute al finalizar el movimiento principal, ejecutamos el metodo "yoyo();" que nos permite hacer un loop del movimiento (ejecuta inversamente el movimiento inicial).

Actionscript:
  1. myTween.onMotionFinished = function() {
  2. myTween.yoyo();
  3. }

Ejemplo:

Esta pelicula requiere Flash Player 9

(0) Comments    Read More   
Posted on 04-05-2008
Filed Under (Desarrollo, PHP) by Programlocura

Hace un tiempo viendo la necesidad de hacer la subida de archivos un poco menos engorrosa escribi esta clase. No es de lo más util, y le falta mucha depuración, pero te saca de apuros =P.

PHP:
  1. // -------------------------------------------------------------------------------------
  2. // Operaciones con sus Metodos
  3. // -------------------------------------------------------------------------------------
  4. // setMaxSize($peso)                    Setea el Peso maximo que puede tener el archivo
  5. // setAllowedExtensions($extensiones)   Setea un array con las extensiones permitidas
  6. //
  7. // startUpload($ruta)               Procesa el archivo y lo almacena en la "ruta"
  8. //
  9. // getSize()                            Retorna el peso del archivo en Kb (Kilobytes)
  10. // getErrorMsg()                        Retorna un mensaje en caso de exito o de fallo
  11. // getErrorId()       Retorna la ID del Mensaje de error
  12. // getExtension()                  Retorna la extension del archivo
  13. // -------------------------------------------------------------------------------------
  14.  
  15. class Uploader {
  16.  
  17. var $archivo;
  18. var $temp_file;
  19.  
  20. var $max_size;
  21. var $arr_extensions;
  22. var $path;
  23. var $id_error;
  24. var $error;
  25.  
  26. var $size;
  27. var $extension;
  28.  
  29. function Uploader($file) {
  30. $this->archivo = $_FILES[$file]["name"];
  31. $this->temp_file = $_FILES[$file]["tmp_name"];
  32. $this->size = $_FILES[$file]["size"] / 1024;
  33. $posicion = strrpos($_FILES[$file]["name"],".")+1;
  34. $this->extension = substr($_FILES[$file]["name"], $posicion);
  35. }
  36.  
  37. function startUpload($ruta) {
  38. if ($this->max_size != "") {
  39. $a = $this->size;
  40. $b = $this->max_size;
  41. $c = $this->extension;
  42. $d = $this->arr_extensions;
  43.  
  44. $tmp = $this->temp_file;
  45. $arc = $this->archivo;
  46.  
  47. if (($a <$b) && (in_array($c, $d))) {
  48. // Copia
  49. if (copy($tmp, $ruta.$arc)) {
  50. $this->id_error = 1;
  51. }else{
  52. $this->id_error = 2;
  53. }
  54. }elseif ($a> $b){
  55. $this->id_error = 3;
  56. }elseif (!(in_array($c, $d))) {
  57. $this->id_error = 4;
  58. }
  59. }else{
  60. $this->id_error=5;
  61. }
  62. }
  63.  
  64. function setMaxSize($max) {
  65. $this->max_size = $max;
  66. }
  67.  
  68. function setAllowedExtensions($arr) {
  69. $this->arr_extensions = $arr;
  70. }
  71.  
  72. function getExtension() {
  73. return $this->extension;
  74. }
  75.  
  76. function getSize() {
  77. return $this->size;
  78. }
  79.  
  80. //
  81. // Se pueden Modificar los Mensajes para cada caso
  82. //
  83. function getErrorMsg() {
  84. switch($this->id_error) {
  85. case 1:
  86. $this->error = "El archivo se subió exitosamente";
  87. break;
  88. case 2:
  89. $this->error = "El archivo no pudo ser copiado a la ruta especificada";
  90. break;
  91. case 3:
  92. $this->error = "El Peso del archivo es mayor al permitido";
  93. break;
  94. case 4:
  95. $this->error = "No es una extension permitida";
  96. break;
  97. case 5:
  98. $this->error = "Debe subir un archivo y setear un peso maximo";
  99. break;
  100. }
  101.  
  102. return $this->error;
  103. }
  104.  
  105. function getErrorId() {
  106. return $this->id_error;
  107. }
  108. }
  109.  
  110. ?>

Es muy facil de utilizar, veamos un ejemplo rapido:

PHP:
  1. include_once("class.Uploader.inc.php");
  2. $ext = array(".jpg", ".jpeg");
  3. $up = new Uploader("file");
  4. $up->setMaxSize(5000);
  5. $up->setAllowedExtensions($ext);
  6. $up->startUpload("aqui_sube/");
  7. echo $up->getError();
  8. ?>

Como ven lo unico que hacemos es crear un objeto ($up) y le asignamos el nombre del "campo archivo".
Hay que gestionar mejor los errores al igual que comprobar algunas cosas mas... Pero es bueno para dar una idea de como hacer una clase util para manejar cosas que son siempre utiles para el programador... Una subida común nos podria llevar mas de 10 lineas de codigo, aqui solo nos lleva 5.

Descargá la clase: Uploader Class.

(0) Comments    Read More