Desde que salió Flash CS y ActionScript 3.0 que han habido numerosas quejas de gente que opina que Actionscript 3 es muy diferente a Actionscript 2 y que no entiende por que Adobe ha realizado este cambio tan brusco que se está dejando fuera (según ellos) a mucha gente.
Se han oido muchas opiniones de gente que dice que continuará trabajando en Actionscript 2 por que ven muy complejo Actionscript 3. Freddie hace poco escribió un articulo sobre esta cuestión. Sobre que Actionscript 2 aún tiene mercado y que no es necesario el cambio a Actionscript 3. Es cierto que aun hay tiempo para hacer esta transición pero la pregunta es:
¿Realmente la transición se está haciendo de Actionscript 2 a Actionscript 3? o en realidad se está pretendiendo hacer de Actionscript 1 a Actionscript 3.
El problema es que NO se sabe programar correctamente Actionscript 2. Mucha gente cree saber programar en Actionscript 2 únicamente por utilizar MovieClipLoader o cualquier otra clase introducida para FlashPlayer 7, o simplemente por utilizar Flash 8 y seleccionar "Publicar para Actionscript 2.0" al crear la película. Pero en realidad siguen programando al estilo Actionscript 1.
Actionscript 2.0 lo introdujo Flash Mx 2004 hace más de tres años. Freddie escribió un tutorial mostrando las novedades que traía. Si nos fijamos en la última veremos que dice que Actionscript 2.0 introduce la programación orientada a objetos, y ese es el punto clave.
Flash Mx 2004 y Flash 8 permitieron combinar código de Actionscript 1 junto a código de Actionscript 2 haciendo que fuese más leve el paso de un lenguaje a otro. Permitiendo que gente que no quisiese aprender a programar orientado a objetos pudiese seguir programar como antes aprovechando las funciones que traía la versión 2. Pero esto a llevado al error de mucha gente que cree saber programar en Actionscript 2 cuando no es cierto, o por lo menos no saben hacerlo correctamente.
Hace unos días penHolder escribió un Tip y me pidió mi opinión. Le dije de debía escribirlo con programación orientada a objetos.
Antes de seguir he de decir que NO estoy criticando a penHoder ni diciendo que sea mal programador, su código es correcto y funciona perfectamente, pero es el último tip de AS2 y es un ejemplo que muestra claramente a lo que me refiero (sorry penHolder)
El ejemplo al que me refiero es este, y el código que utiliza es este:
Código :
this.createEmptyMovieClip("botonera", this.getNextHighestDepth()); var labels:Array = Array("home", "about", "services", "contact"); with (botonera) { this._x = 50; for (i = 1; i <= labels.length; i++) { var modelButton:MovieClip = this.attachMovie("boton", "boton" + i, this.getNextHighestDepth()); modelButton._x = 0; modelButton._y = ((i * 0) + this._height) + 5; modelButton.t.text = labels[i - 1]; modelButton.onEnterFrame = function() { this._alpha += (this.a - this._alpha) / this.v; if (this.hitTest(_root._xmouse, _root._ymouse, true)) { this.a = 50; this.v = 5; } else { this.a = 100; this.v = 10; } }; modelButton.onMouseDown = function() { if (this.hitTest(_root._xmouse, _root._ymouse, true)) { if (this._name == "boton1") { trace("welcome home"); } if (this._name == "boton2") { trace("about us"); } if (this._name == "boton3") { trace("our services"); } if (this._name == "boton4") { trace("contact us"); } } }; } }
Creado en Flash 8 y publicado para Actionscript 2, siendo este el resultado:
Ejemplo publicado para AS2
El ejemplo funciona perfectamente, Pero ¿Realmente esto es un ejemplo de código creado para Actionscript 2?
Hagamos una prueba:
Eliminemos del código la asignación de tipo de las variables. Osea donde pone var labels:Array dejaremos var labels y donde pone var modelButton:MovieClip dejaremos var modelButton, quedando así el código:
Código :
this.createEmptyMovieClip("botonera", this.getNextHighestDepth()); var labels = Array("home", "about", "services", "contact"); with (botonera) { this._x = 50; for (i = 1; i <= labels.length; i++) { var modelButton = this.attachMovie("boton", "boton" + i, this.getNextHighestDepth()); modelButton._x = 0; modelButton._y = ((i * 0) + this._height) + 5; modelButton.t.text = labels[i - 1]; modelButton.onEnterFrame = function() { this._alpha += (this.a - this._alpha) / this.v; if (this.hitTest(_root._xmouse, _root._ymouse, true)) { this.a = 50; this.v = 5; } else { this.a = 100; this.v = 10; } }; modelButton.onMouseDown = function() { if (this.hitTest(_root._xmouse, _root._ymouse, true)) { if (this._name == "boton1") { trace("welcome home"); } if (this._name == "boton2") { trace("about us"); } if (this._name == "boton3") { trace("our services"); } if (this._name == "boton4") { trace("contact us"); } } }; } }
En opciones de publicación seleccionemos FlashPlayer 7 y Actionscrip 1.
Comprobemos el resultado:
Ejemplo publicado para AS1
Vayamos más lejos. Eliminemos el método getNextHighestDepth() y dejemos un valor fijo, por ejemplo 1. Ahora publiquemos la pelicula para FlashPlayer 6:
Ejemplo publicado para AS1 y FlashPlayer 6 desde Flash MX
Nota: Para esta última publicación he utilizado Macromedia Flash MX. Versión de Flash que salió al mercado a principios del 2002, más de un año y medio antes de que apareciese Actionscript 2...
Cómo vemos el resultado es el mismo. Es decir, este ejemplo es 99.8% código Actionscript 1.
Entonces... ¿Podemos considerar el código como Actionscript 2 únicamente por añadir el tipo de datos a dos Arrays? Evidentemente NO. Podremos utilizar una o varias funciones propias de Actionscript 2 pero seguiremos programando en Actionscript 1.
Cómo he dicho antes Actionscript 2 introduce la programación orientada a objetos y esa es la única manera de programar correctamente Actionscript 2.
Veamos el ejemplo escrito con programación orientada a objetos
Tampoco me voy a extender mucho en explicar este código, solo diré que utilizaremos dos objetos, uno que será la botonera que a su vez creará los objetos de los botones necesarios. Así que tendremos dos clases:
Botonera.as
Código :
class Botonera { private var _ruta:MovieClip; private var _clip:MovieClip; private var _vinculo:String; private var _botones:Array = new Array(); private var _labels:Array = new Array(); private var _acciones:Function; private var _x:Number; private var _y:Number; private var _distanciaY:Number; public function Botonera(ruta:MovieClip, vinculo:String, labels:Array, acciones:Function, x:Number, y:Number, distanciaY:Number) { _x = x; _y = y; _distanciaY = distanciaY; _ruta = ruta; _vinculo = vinculo; _labels = labels; _acciones = acciones; creaBotonera(); } private function creaBotonera() { _clip = _ruta.createEmptyMovieClip("botonera", _ruta.getNextHighestDepth()); _clip._x = _x; _clip._y = _y; var total = _labels.length; for (var i:Number = 1; i <= total; i++) { creaBoton(_labels[i - 1],i); } } private function creaBoton(label:String, id:Number):Void { var boton:Boton = new Boton(_clip, _vinculo, label, _acciones, _distanciaY, id); _botones.push(boton); } }
Boton.as
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; import mx.utils.Delegate; // class Boton { private var _ruta:MovieClip; private var _clip:MovieClip; private var _vinculo:String; private var _label:String; private var _accion:Function; private var _distanciaY:Number; private var _id:Number; public function Boton(ruta:MovieClip, vinculo:String, label:String, accion:Function, distanciaY:Number, id:Number) { _ruta = ruta; _vinculo = vinculo; _label = label; _accion = accion; _distanciaY = distanciaY; _id = id; creaBoton(); } private function creaBoton():Void { _clip = _ruta.attachMovie(_vinculo, _vinculo + _id, _ruta.getNextHighestDepth()); _clip.t.text = _label; _clip._x = 0; _clip._y = (_id - 1) * (_clip._height + _distanciaY); _clip.boton = _id; _clip.accion = _accion; _clip.onRelease = Delegate.create(this, mouse_down); _clip.onRollOver = Delegate.create(this, mouse_over); _clip.onRollOut = Delegate.create(this, mouse_out); } private function mouse_down():Void { _accion(this._id); } private function mouse_over():Void { var alfa:Tween = new Tween(_clip, "_alpha", Regular.easeIn, 100, 50, 5, false); } private function mouse_out():Void { var alfa:Tween = new Tween(_clip, "_alpha", Regular.easeIn, 50, 100, 5, false); } }
Y en el .fla tendremos esto:
Código :
var labels:Array = new Array("home", "about", "services", "contact"); var botonera:Botonera = new Botonera(this, "Boton", labels, acciones, 50, 20, 5); function acciones(boton) { if (boton == 1) { trace("welcome home"); } if (boton == 2) { trace("about us"); } if (boton == 3) { trace("our services"); } if (boton == 4) { trace("contact us"); } }
Resultado:
AS2 con POO
Evidentemente este código ahora es imposible publicarlo desde Actionscript 1, es un código orientado a objetos con lo que es un código 100% Actionscript 2.
Ahora pasemos el ejemplo a Actionscript 3
Seguiremos teniendo dos objetos, botonera y botón.
Botonera.as
Código :
package { import flash.display.Sprite; import flash.utils.getDefinitionByName; // public class Botonera extends Sprite { private var _ruta:Sprite; private var _clip:Sprite; private var _vinculo:String; private var _botones:Array = new Array(); private var _labels:Array = new Array(); private var _acciones:Function; private var _x:Number; private var _y:Number; private var _distanciaY:Number; public function Botonera(ruta:Sprite, vinculo:String, labels:Array, acciones:Function, x:Number, y:Number, distanciaY:Number) { _x = x; _y = y; _distanciaY = distanciaY; _ruta = ruta; _vinculo = vinculo; _labels = labels; _acciones = acciones; creaBotonera(); } private function creaBotonera():void { _clip = new Sprite(); _clip.x = _x; _clip.y = _y; var total:uint = _labels.length; for (var i:uint = 1; i <= total; i++) { creaBoton(_labels[i - 1],i); } addChild(_clip); } private function creaBoton(label:String, id:Number):void { var ClassReference:Class = getDefinitionByName(_vinculo) as Class; var boton:Sprite = new ClassReference(_clip, label, _acciones, _distanciaY, id) as Sprite _clip.addChild(boton); } } }
Boton.as
Código :
package { import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; import fl.transitions.*; import fl.transitions.easing.*; // public class Boton extends Sprite { private var _ruta:Sprite; private var _clip:Sprite; private var _label:String; private var _accion:Function; private var _distanciaY:uint; private var _id:uint; public function Boton(ruta:Sprite, label:String, accion:Function, distanciaY:uint, id:uint) { _ruta = ruta; _label = label; _accion = accion; _distanciaY = distanciaY; _id = id; creaBoton(); } private function creaBoton() { var texto = getChildByName("t"); texto.text = _label; x = 0; y = (_id - 1) * (height + _distanciaY); addEventListener(MouseEvent.MOUSE_DOWN, mouse_down); addEventListener(MouseEvent.ROLL_OVER, mouse_over); addEventListener(MouseEvent.ROLL_OUT, mouse_out); } private function mouse_down(e:MouseEvent):void { _accion(this._id); } private function mouse_over(e:MouseEvent):void { var alfa:Tween = new Tween(this, "alpha", Regular.easeIn, 1, 0.5, 5, false); } private function mouse_out(e:MouseEvent):void { var alfa:Tween = new Tween(this, "alpha", Regular.easeIn, 0.5, 1, 5, false); } } }
Y en el .fla:
Código :
var labels:Array = new Array("home", "about", "services", "contact"); var botonera:Botonera = new Botonera(this, "Boton", labels, acciones, 50, 20, 5); addChild(botonera); function acciones(boton) { if (boton == 1) { trace("welcome home"); } if (boton == 2) { trace("about us"); } if (boton == 3) { trace("our services"); } if (boton == 4) { trace("contact us"); } }
Ejemplo en Actionscript 3
Evidentemente Actionscript 3 introduce cambios respecto a Actionscript 2, elimina funciones e introduce otras. No utilizaremos attachMovie utilizaremos addChild, no utilizaremos métodos en clip, utilizaremos listeners. etc... Pero los cambios son MÍNIMOS. La base sigue siendo la misma, una programación orientada a objetos.
Conclusión:
Únicamente comparen los códigos... ¿Realmente creemos que ha cambiado tanto Actionscript 3 respecto a Actionscript 2? o es que en realidad no sabemos programar bien Actionscript 2 y aun estamos con Actionscript 1...
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Bleend el 10 de Noviembre de 2007
Lo peor es que empecé programando en el flash 8 el año pasado, así que ya empecé mal.
Bueno, supongo que ahora tengo mas tiempo, pero realmente me da mucha pereza aprender todo esto de las clases.
Es cuestión de fuerza de voluntad.
Por La100rra el 10 de Noviembre de 2007
Por Otaku RzO el 10 de Noviembre de 2007
Personalmente, hace unos meses empece a crear clases pero a pesar de todo sigo usando el AS1 en algunas partes. Nada AS2 100%. Luego de ver tu tip AHORA SI! me doy cuenta de mis fallas.
Mil gracias por este gran tip.
Por xflash el 10 de Noviembre de 2007
Por el resto, se entiende la logico y el porque AS3 es mejor (y porque no soy programador)
Por The Fricky! el 10 de Noviembre de 2007
Por Zguillez el 10 de Noviembre de 2007
xflash :
Por el resto, se entiende la logico y el porque AS3 es mejor (y porque no soy programador)
Ese error del degradado es por que al ir creando las diferentes versiónes se me borró por error. No tiene nada que ver con el código. Todos los ejemplos vinculan el mismo MovieClip desde la biblioteca con lo que visualmente es exactamente lo mismo.
Lo arreglé
Por BLOG el 10 de Noviembre de 2007
Por M@U el 10 de Noviembre de 2007
creiaaun algunos creen... Es muy claro el caso que presentas Zguilles...Simplemente excelente...
Por Victor-Nael el 10 de Noviembre de 2007
Por HernanRivas (logout) el 10 de Noviembre de 2007
Como siempre, excelente.
Por enjoydasilence el 10 de Noviembre de 2007
/* YA ME RECORRI TODO WILSON Y NO ENCUENTRO UNA RAM DDR266 DE UN 1GB (SÓLO DDR400 QUE MI PLACA http://www.biostar.com.tw/app/en-us/mb/content.php?S_ID=242 NO SOPORTA ) */
//Saludos
Por enjoydasilence el 10 de Noviembre de 2007
Por enjoydasilence el 10 de Noviembre de 2007
PD: BuenasoO el Post .
Por Quien yo? el 10 de Noviembre de 2007
Si es cierto que no programamos en POO por que la creación de mas de dos clases, a lenta muchísimo la exportación y prueba de las peliculas flash cuando simplemente estas definiendo unos cuantos eventos.
Entonces si es poco o simple lo que vas a hacer que versión utilizarías? AS1 o AS2 o AS3
Ahora si vemos el código de AS1 es mucho mas corto que el de AS2 o AS3, la pregunta no es que es mas óptimo (por que a lenta a flash) si no como lo quieres hacer?, tienes paquetes y/o clases ya listos?, vas a volver a utilizar estas clases? o es algo rápido que tienes que hacer?
Por Otaku RzO el 10 de Noviembre de 2007
@Quien yo?: la idea con la POO es que desarrolles clases extendibles, de esta forma se podrán extender en otras clases según tus requerimientos (estilos, nuevas funciones, etc). Así no tendrás q reinventar la rueda en cada desarrollo.
Por Phasor el 10 de Noviembre de 2007
En mi opinion, el tema de montar todo en clases esta confundiendo bastante a la gente. Parece que es la panacea de la historia en programacion, y yo pienso que programar al 100% en clases provoca en la mayoria de casos tiempos mayores de desarrollo. Claro está, que depende del tipo de aplicación, cosa que nunca se aclara en ningún artículo sobre POO en Flash. Si voy a programar un interactivo altamente creativo, y "distinto" en la maroría de apartados, ponte tu a programar en clases si tienes una fecha de entrega muy reducida, veras que bien lo pasas... Vamos, que ni uno ni otro, cada cosa es más óptima para un tipo de aplicación.
Por Raxiro el 10 de Noviembre de 2007
Yo en AS2.0 veo que no se nada jajaja, como dice Z me hago cargo, yo hago las cosas asi!
Pero también creo que es muy necesario saber AS3.0 sobre todo para usar Flex y Flash CS3 y aprovecharlos en su máximo. Pero antes que hacer un curso o comprarme un libro de AS3, voy a hacer un buen curso de POO, creo que es fundamental, si bien entiendo bastante, todavía no me cierra el beneficio de usar clases y con un buen curso creo que abrería mis ojos. Y despues de eso, me parece que estaría más que listo para aprender AS3 sólo, como muchos lo hicieron en AS1.
Saludos!
Por Otaku RzO el 10 de Noviembre de 2007
Pero a todo esto, un detalle con respecto al peso de los archivos en los ejemplos:
Código :
Por jose bernal el 10 de Noviembre de 2007
Por gparis el 10 de Noviembre de 2007
No creo que la programación que no sea OOP no tenga valor como código AS2, AS2 introdujo la OOP en flash pero no es simplemente que si no programas en OOP es AS1, de hecho en tu ejemplo la parte del fla no es código de ninguna clase.
De todas maneras creo que el cambio de AS2 a AS3 es como una profesionalización del lenguaje lo cual es muy bueno en vistas a futuro. Como ya dijeron los que quedarán afuera son diseñadores o gente que no quiera aprender a programar
Por Mario el 10 de Noviembre de 2007
Por Javier el 10 de Noviembre de 2007
Mario: Y cúal hay?
//Dicen que en JavaFX tiene menos código que él Java Swing. Y JFX es más rapido o sea menos código y más rapido? [no confundan, yo prefiero mil veces flash, sólo es una comparación de código]
Por el 10 de Noviembre de 2007
Se entiende lo que quiero decir?
Por Eleuterio el 10 de Noviembre de 2007
Últimamente he visto algunos sitios que parecen flash, pero hechos sin flash.
Si ahora es un lenguaje formalmente igual a los otros,y que nos exige especializarnos en la programación ¿sería bueno explorar otras alternativas como Java o sus derivados?
Por penHolder (logout) el 10 de Noviembre de 2007
Por glsmaster el 10 de Noviembre de 2007
Por The Fricky! el 10 de Noviembre de 2007
Eleuterio_blog :
Te equivocas Eleuterio_blog, esa era la ventaja para no-programadores. Flash ha evolucionado mucho desde sus inicioa. En buena parte, obligado por las nuevas exigencias de la tecnología y el mercado.
Eleuterio_blog :
Si ahora es un lenguaje formalmente igual a los otros,y que nos exige especializarnos en la programación ¿sería bueno explorar otras alternativas como Java o sus derivados?
Siempre puedes hacer cosas simples con frameworks, si tu fuerte no es la programación, también puedes seguir sub-utilizando AS2 para cosas simples.
Cuando la gente se plantea que Flash está complicándose, que va a perder mercado, etc. normalmente lo hace con una visión de inmediatez, un poco cerrada creo. Flash es una herramienta que no se queda simplemente en hacer banners y cositas pequeñas, hoy día vemos aplicaciones Flash en nuestros celulares, en pantallas táctiles, en juegos,en presentaciones multimedia... y ésto seguirá expandiéndose, no sólo por que sea "atractivo" por las animaciones sino por la robustez de su lenguaje de programación.
No se trata de si es más corto o más rápido de programar. Claro que al principio tardarás un poco más en escribir tus clases ¿pero alguien se ha dado cuenta que después de tener tres o cuatro clases generales (por ejemplo, una para precarga, una para envío de datos, etc.) sólo tienes que usar un import y ahorrarte muchas líneas de código? Una de las grandes ventajas de la POO es la posibilidad de reutilizar el código, lo que todo programador agradece. El mercado tecnológico es de los que no tienen miedo de aprender algo nuevo, de los que no se conforman.
Por Phasor el 10 de Noviembre de 2007
Por flashreloco el 10 de Noviembre de 2007
Por Marcos García el 10 de Noviembre de 2007
Me he permitido referenciarte en mi nuevo blog <a href="http://www.disenadorwebsevilla.com/" target="_blank">www.disenadorwebsevilla.com</a>
Por Eleuterio el 11 de Noviembre de 2007
Por Nito el 11 de Noviembre de 2007
.... Algún día
Gracias Zguillez
Por crimson14 el 11 de Noviembre de 2007
Recuerdo tiempo atrás cuando programadores en serio veían el AS y se me mataban de risa cuando alguien insinuaba que era un lenguaje de programación.
Los diseñadores se tendrán que acostumbrar que diseñar con Flash va a ser como realizar paginas dinámicas con otros lenguajes, en los cuales tenían que recurrir a un programador para que las hiciera funcionar.
AL menos esta es mi humilde visión del tema.
Por Raxiro el 11 de Noviembre de 2007
Algo que quizás les duela a muchos, pero es asi: Diseñador -> diseña, Programador -> programa, he visto miles de "aplicaciones flash" que piden usuario y contraseña, decompilas el swf y ves todos los users y pwds, y lo mismo pasa con Php, cuando alguien piensa que saber programar y no es asi, por ahorrarse unos $$$ puede perder mucho mas...
Saludos!.
Por XKlibur el 11 de Noviembre de 2007
Excelente artículo Z, muy ilustrativo, es lo mejor que he leído hasta ahora respecto a ese tema. Te felicito
Por Alstrax el 11 de Noviembre de 2007
de flash professional 8 no es muy abundante y clara en el tema de programacion con AS incluso sus ejemplos no usan clases simplemente "tiran" el codigo y ya...Me gustaria que me recomendara bibliografia seria sobre la POO en AS 2 y de ese modo prepararme mejor al cambio hacia AS 3
Por nico el 11 de Noviembre de 2007
(de acuerdo con el cambio a AS3, y muy bueno el tip)
Por The Fricky! el 11 de Noviembre de 2007
Por eldervaz el 11 de Noviembre de 2007
Alstrax_blog :
hola Alstrax:
Gente como tu ABUNDA en internet, gente q sabe criticar, quejarse, decir lo malo, etc.
Si sabes programar "en otros lenguajes" y has visto ejemplos o post con errores...
QUE ESPERAR PARA APORTAR!!!!!!!
y demostrar tus "amplios" conocimientos
me revienta leer post de esta naturaleza, llena de ENVIDIA y ODIO. todos de cierta forma aprendemos en internet y tenemos que ser humildes y devolver la enseñanza, no solo haciendo post, ejemplo o tutoriales, sino corrigiendo los errores de otros (con toda la buena fe posible)
No permitamos influenciarnos por mensajes como el de Alstrax, demostremos el nivel profesional existente en clab, no sabe mas el critica mas, sino el q aporta.
No pidas nada si no diste nada de ti Alstrax
Por Señor Oz el 11 de Noviembre de 2007
Por Señor Oz el 11 de Noviembre de 2007
Por Señor Oz el 11 de Noviembre de 2007
Por el 11 de Noviembre de 2007
output: #$$%/&%&/(/(%$( LAMPARIM ... LAGRAN ... LARECON....
Ese Elder, hasta su ánimo corre en flash player;
Por Querube el 11 de Noviembre de 2007
Por Dick el 12 de Noviembre de 2007
el articulo es bueno porque descubre uno de los aspectos que, creo yo, adobe quiere dejar claro con la separacion clara entre plataforma de diseño y programacion en flash.
Hay un mal "habito" que han dejado las versiones anteriores de flash; el que los diseñadores graficos y visuales acabemos creyendonos programadores de sistemas. los oficios son totalmente diferentes metodologicamente hablando; cuando se desarrolla un software, este tiene que pasar por un proceso de modelacion y abstraccion que proviene de la logica y la algoritmia; la programacion orientada a objetos es un amanera de modelar el mundo cercana en algunos aspectos a como lo percibimos, pero con todas las limitaciones que cualquier lenguaje de programacion y la misma maquina tiene, la interpretacion numerica.
por otro lado la abstraccion que hacemos desde el diseño grafico tiene que ver mucho mas con las cosas tangibles y las relaciones emocionales y comunicativas que tenemos con ellas, junto al sentido comun y la vivencia cotidiana con las mismas.
cuando un diseñador grafico viene a enfrentarse a un lenguaje de programacion como actionscript tiene que saber como se abstrae en el, y desde el, y para ello tiene que saber como funciona el metodo de la orientacion a objetos; por hacer un preloader, una galeria de fotos o una bonita botonera en 3d no somos programadores; en muchos casos somos ejecutores de codigo y experimentadores (de recordar que muchos de nosotros acostumbramos copiar y pegar codigo y armar a punta de "parches" cualquier interactivo urgente).
Creo sinceramente que hoy en dia una agencia de diseño multimedial debe contar con un programador en sus filas, pero un profesional en programacion orientada a objetos no un diseñador /programador.
para mi especializacion en Diseño de multimedia, mi tesis intenta dilucidar que es lo que pasa con este problema, y como se puede tratar de enseñar programacion orientada a objetos a diseñadores graficos. si alguien esta interesado en conocerla y conocer mis ideas bien puedo enviarles una copia.
saludos...
Dick martinez desde Colombia
Por Rodrigo el 12 de Noviembre de 2007
Por el 12 de Noviembre de 2007
Un erudito n_n,tal vez tiene el don de usar su mente al 100% a comparación de nosotros que usamos el 10% de esta
Por pabletein el 12 de Noviembre de 2007
Por rOY!!! el 12 de Noviembre de 2007
Optimizaron, agilizaron, limpiaron y mejoraron los metodos y proceso de AS. Es esto un pecado?
Por otro lado, para todo aquel que utiliza AS1 o 2 y no le gusta AS3, para que lo usa?!! es decir, si yo no se jugar futbol, no me voy a comprar botines, y MUCHO MENOS QUEJARME DE SU USABILIDAD!!
Las criticas son absurdas y carecen de fundamentos. Simplemente porque adobe permite crear documentos en AS3, o AS2, uno peude elegir el player con el cual exportar, y por sobre todas las cosas: Flash Player soporta todas las versiones anteriores.
Usas AS1 y no queres cambiar? y bueno, no cambies, adobe te brinda todo para ue sigas de la misma manera.
El articulo esta excelente, y ya lo estoy reenviando a los diseñadores seudo programadores Disculpen si suena agresivo el comentario, pero me INDIGNA algunos comentarios.
Saludos.
Por master_of_puppetz el 12 de Noviembre de 2007
rOY!!!_blog :
Optimizaron, agilizaron, limpiaron y mejoraron los metodos y proceso de AS. Es esto un pecado?
El problema es que la mayoría de ese 90% jamas ha visto Java en su vida , por eso los demás vemos "normal" al AS3.
Creo que este ha sido el mejor Tip que he visto jamas
Saludos!
Por Pablo Mercado el 12 de Noviembre de 2007
Creo que como en todas las cosas, aprender algo nuevo es difícil. Como diseñador gráfico es difícil aprender AS3 utilizando POO, sobre todo si tienes plazos de entrega. Pero fue igual de difícil aprender a usar la herramienta bezier de manera profesional(trazar correctamente en bezier tiene su ciencia), y era igual de necesario.
Por The Fricky! el 12 de Noviembre de 2007
Por _ el 12 de Noviembre de 2007
Por Zandy el 12 de Noviembre de 2007
Yo recomiendo la lectura pausada de un buen libro de AS3 como si empezaramos de 0, aconsejo el de collin moock.. ... yo personalmente, durante mucho tiempo cai en el error de que aprendia a medida que resolvia los problemas que se me presentaban, y en ese proceso macabro me quedaban lagunas de conocmiento inmensos, recomiendo a los que se inician ,que lean un buen libro y que no aprendan al vuelo..
salu2
Por Quantium el 13 de Noviembre de 2007
En cuanto al ejemplo, tal vez a simple vista se puede ver el peso y la cantidad de código, pero seamos honesto, no es lo mismo hacer una botonera con AS1, AS2 y AS3 que hacer un juego o incluso un Mundo virtual (Creeanme AS1 puede se un infierno para este tipo de cosas).
Me gustó lo de los futbolistas, yo creo que Adobe separó perfectamente el player para los programadores que a eso nos dedicamos, a programar; y para los diseñadores que seguiran haciendo sus scripts con AS2 y utilizando el CS3. Yo soy programador y les puedo decir que para hacer una aplicación con AS3 (no me gusta decir Flex porque el MXML es horroroso) no necesitas más que el eclipse y el plugin de Flex o el notepad y el sdk del player 9.
Por master_of_puppetz el 13 de Noviembre de 2007
Quantium_blog :
Yo sinceramente recomendaría a los diseñadores que se siguieran dedicando a diseñar...
Quantium_blog :
por que horroroso? , si tan solo es XML
Saludos!
Por esutoraiki el 13 de Noviembre de 2007
Hola man!!!, en mi opinión, mientras funcione, sea práctico, y realice a satisfación lo esperado esta bien.
Hay proyectos que no necesitan una programación tan "pulcra".
Esta bien tu tip, muy buen punto de vista
Por esutoraiki el 13 de Noviembre de 2007
Hola man!!!, no me parece tan grotezco el comentario de Alstrax, la verdad es simplemente un comentario.
No todo el mundo tiene el tiempo o le gusta realizar aportaciones. Eso no necesariamente es malo.
Ahora bien, a mi si me parece que cualquiera puede llegar a hacer una critica. Si uno no es capaz de recibir criticas y excudarse en frases como:
La verdad, a mi me gustan las criticas de las personas que saben y no saben, ya que me ayudan a encontrar errores. Por lo general los elogios no ayudan en nada.
También otra cosas que veo es que el comentario de Alstrax no es para nada ofencivo, es un simple comentario. En tu comentario, se ve realmente mucha agrecividad.
Este comentario no es para agredirte ni para convencerte de nada, simplemente es mi opinión sobre otro comentario
Por CrASh_ el 14 de Noviembre de 2007
1) Reusabilidad
2) Herencia
3) Polimorfismo
Las cuales son las mas fundamentales de la POO (Programación Orientada a Objetos) debo aclararles que la POO no es para un lenguaje específico, sino que se le considera un Paradigma esta es la base y cualquier lenguaje sea Java, C#, VB, Actionscript, php,... etc. que sea orientado a objetos utiliza este Paradigma y una vez entendido esto el lenguaje es lo de menos, entiendo que la programación no se les de a muchos claro esta, pero es importante a mi juicio conocer (no culpo a nadie por no saber) antes de emitir un juicio de algo que no se conoce, creo que hay buen material en la red para leer y aprender un poco aunque sea de teoría y conocer sobre todo por el uso del AS que es lo que se critica aqui, entender el uso de MODIFICADORES (private, public)
entender que son:
1) Variables
2) Metodos y no funciones
3) Package e import
la verdad me arriesgaria un poco a que consigan información sobre Java ya que esta es un poco mas clara que cualquier otra sin duda yo tengo material si gustan yo se los puedo proporcionar.
Por ultimo entiendo que son solo opiniones, pero les invito solo por precaución personal y experiencia propia, mejor informarnos un poco acerca del tema para poder emitir un juicio bastante objetivo con respecto al tema, y si... se que la ayuda de un codigo no es muy grato pero es para eso aprender donde nos equivocarnos o darnos una guía, no para aplicar la ingeniería reversiva, que se la pasen chido todos, saludos.
Por eldervaz el 14 de Noviembre de 2007
esutoraiki :
Hola man!!!, no me parece tan grotezco el comentario de Alstrax, la verdad es simplemente un comentario.
No todo el mundo tiene el tiempo o le gusta realizar aportaciones. Eso no necesariamente es malo.
Ahora bien, a mi si me parece que cualquiera puede llegar a hacer una critica. Si uno no es capaz de recibir criticas y excudarse en frases como:
La verdad, a mi me gustan las criticas de las personas que saben y no saben, ya que me ayudan a encontrar errores. Por lo general los elogios no ayudan en nada.
También otra cosas que veo es que el comentario de Alstrax no es para nada ofencivo, es un simple comentario. En tu comentario, se ve realmente mucha agrecividad.
Este comentario no es para agredirte ni para convencerte de nada, simplemente es mi opinión sobre otro comentario
en fin
Por Tomás Del Bianco el 14 de Noviembre de 2007
Por para todos el 14 de Noviembre de 2007
Por ejejje el 15 de Noviembre de 2007
Por ejeje el 15 de Noviembre de 2007
Por FERNANDO CACHAGO el 15 de Noviembre de 2007
Por *** el 24 de Noviembre de 2007
Por infernalpr el 25 de Noviembre de 2007
PD: Y como sugerencia, la próxima vez invierte mejor tu tiempo e intenta explicar todo el royo de programación orientada a objetos en vez de... eso... corregir lo que está bien.
Nos vemos
Por Zguillez el 25 de Noviembre de 2007
infernalpr :
PD: Y como sugerencia, la próxima vez invierte mejor tu tiempo e intenta explicar todo el royo de programación orientada a objetos en vez de... eso... corregir lo que está bien.
Nos vemos
Veo que no entendiste un carajo de que iba el tip...
Por Bleend el 25 de Noviembre de 2007
Zguillez :
infernalpr :
PD: Y como sugerencia, la próxima vez invierte mejor tu tiempo e intenta explicar todo el royo de programación orientada a objetos en vez de... eso... corregir lo que está bien.
Nos vemos
Veo que no entendiste un carajo de que iba el tip...
Por Zguillez el 25 de Noviembre de 2007
Bleend :
Eso espero...
A ver, me refiero que sacar como única conclusión del tip una corrección a la forma correcta de hacer la botonera de penHolder es ser un poco... corto.
El tip es una muestra de como utilizando AS2 con OOP el paso a AS3 es sumamente sencillo, cosa que desconoce mucha gente que pretende pasar a AS3 sin haber aplicado nunca OOP y se lleva las manos a la cabeza cada vez que ve un código en AS3. Quien quiera seguir utilizando AS1 para una botonera o lo que sea porque le resulta más sencillo pude seguir haciéndolo el tiempo que le de la gana...
*patea a Bleend
Por Bleend el 25 de Noviembre de 2007
Zguillez :
Por penHolder el 25 de Noviembre de 2007
Por Zguillez el 25 de Noviembre de 2007
penHolder :
*Z se emociona y recoge su naranja
Me alegra que mi tip te haya motivado a estudiar. Hay que estar en continuo aprendizaje y no limitarse a los conocimientos adquiridos (que puedes estar seguro que son muchos menos de los que nos creemos)
Por Bleend el 25 de Noviembre de 2007
Zguillez :
Por kalinchox el 05 de Enero de 2008
Por master_of_puppetz el 05 de Enero de 2008
kalinchox_blog :
Una critica sin fundamentos , tal vez sea alguna especie de troll anónimo.... ah no! , es kalinchox el troll
Por isladelobos el 29 de Enero de 2008
Estoy aprendiedo a programar en actionscript , en principio en modo autodidacta para ir cogiendo fondo, y claro está, ayudandome de internet para ver ejemplos, cursos, preguntar. Aún ando en la fase de aprendizaje inicial y este tip me ha dado a replantearme mi forma de aprender.
No se si empezar por lo primero, o sea conocer el lenguaje de AS1 o ir directamente a trabajar en AS3 con objetos y olvidarme de AS1.
En cualquier caso, es dificil ver en internet, material que sea integro en AS3.
Un saludo a todos.
Por el 31 de Enero de 2008
mira, tu mismo codigo en AS3:
Código :
Es perfecto AS3... en el timeline... sin declarar tipos de datos, ni clases, ni herencias, etc...
Ahora dime, cual se lee mejor? (vale, puede ser discutible, pero no me puedes decir que es feo )
Y porfi que conste que no estoy en contra del OOP. Al contrario, es muy util para segun que cosas, y lo uso a diario... Pero creo que estais exagerando un poco con todo el tema de evangelizar el OOP... AS3 es un lenguaje flexible, que permite programar de forma procedural practicamente igual que como se hacia con AS1 y AS2. Las diferencias, aparte de las de sintaxis, son principalmente que ahora es mas flexible aún, y que permite programar OOP como dios manda...
trace(AS3==OOP) //true
trace(AS3===OOP) //false
Por yo el 04 de Marzo de 2008
Pero es que en AS3 te obligan a usar la POO ya que eliminan todos los metodos anteriores
Por JAr el 28 de Marzo de 2008
Por JAr el 28 de Marzo de 2008
Por SickboyJV el 02 de Abril de 2008
Por el 30 de Abril de 2008
1046: No se encontró el tipo o no es una constante en tiempo de compilación: Botonera.
1180: Llamada a un método Botonera posiblemente no definido.
var botonera:Botonera = new Botonera(this, "Boton", labels, acciones, 50, 20, 5);
haaa...
Por Joel el 23 de Diciembre de 2008
Por cierto, alguien conoce algún lugar donde enseñen a estructurar bien un trabajo en Flash? es decir, cuando crear elmentos des de escenario, cuando hacerlo des de AS, animar des de AS o des de timeline, etc...son dudas que tengo siempre y me gustaría aclararlo...
Felicidades por el post de nuevo!!
Por DA el 25 de Enero de 2009
El código en AS2 es el doble de extenso que el de AS1 y más innecesariamente complicado. ¿Alguien me puede decir cual es la ventaja de hacerlo con la clase? Pero quiero decir, realmente una ventaja y no kilos de excusas burócratas del porqué con mayúscula y no con minúscula o de si el huevo o la gallina. Antes Flash era el "Apple" de los programas: sencillo y orientado a diseñadores, no necesitas ser un genio de la informática para usarlo. Pero ahora es el "Windows": burócrata centrado en el arduo trabajo de hacer las cosas según las reglas.
Mientras los genios programadores discuten sobre como construir "a la prefección" una clase, en el mundo se producen millones de artísticos orgasmos de manera mucho más simples, como lo hizo penHolder. La genialidad está en lo simple!
Gracias penHolder, para mi eres un genio!
Por innato.ar el 21 de Mayo de 2009
el tercer clap se los doy cuando alguien me diga porque me sale este error:
ArgumentError: Error #1063: Discordancia del recuento de argumentos en Boton(). Se esperaba 0 y se obtuvo 5.
at clases::Botonera/creaBoton()
at clases::Botonera/creaBotonera()
at clases::Botonera()
at preload_image_as3_fla::MainTimeline/frame1()
uso as3.0 y CS3
Matias Rizzo
Por master_of_puppetz el 21 de Mayo de 2009
innato.ar-blog :
el tercer clap se los doy cuando alguien me diga porque me sale este error:
ArgumentError: Error #1063: Discordancia del recuento de argumentos en Boton(). Se esperaba 0 y se obtuvo 5.
at clases::Botonera/creaBoton()
at clases::Botonera/creaBotonera()
at clases::Botonera()
at preload_image_as3_fla::MainTimeline/frame1()
uso as3.0 y CS3
Matias Rizzo
estas mandando 5 parámetros a una función que no debe de recibir parámetros
Por innato.ar el 22 de Mayo de 2009
nuevamente escribo para comentarles que instale Flash CS4 y me larga el siguiente error, ahora:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Lo que descubrí es que el error lo larga desde esta linea:
(Botonera.as - line 42);
var boton:Sprite = new ClassReference(_clip, label, _acciones, _distanciaY, id) as Sprite;
Y cuando le saco los parametros me larga el error en (boton.as) porque dice que espera 5 argumentos y recibe 0;
Desde ya si alguien tiene este tutorial hecho, que le funciona y tiene ganas de pasarmeló se los agradeceré.
Por luco el 07 de Marzo de 2010
Por emedmaria el 14 de Abril de 2010
Imagino q ha llovido mucho desde este post, pero he usado el ejemplo para una aplicación q stoy montando y me da un problemilla.
Explico.Utilizo el método POO con AS2.
Resulta q dentro de la clase Boton.cs los "Delegates." de la funcion CreaBoton() no me los accepta y he sustitutido por :
function CreaBoton(){
...
clipEnd.onRollOver=MouseOver;
clipEnd.onRollOut=MouseOut;
clipEnd.onRelease=MouseDown;
}
y fuera de la función pero dentro de la clase:
private function MouseOver(){
this.gotoAndPlay("over");
}
private function MouseOut(){
this.gotoAndPlay("out");
}
private function MouseDown()
{action(this.id);
}
En el Fla la estructura es similar, adaptada a mis necesidades....Pero no me detecta el evento del botón presionado
Me corre bastante prisa. Alguien me puede ayudar por favor?!?!!?
Zguillez, me explicas exactamente como controla el evento cuando la acción la realiza una función fuera de la clase? (this.action)
MIL GRACIAS!
Por marco el 04 de Mayo de 2010
alguna alma caritativa que pueda ayudarme lo agradeceria mucho...
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("http://twitter.com/statuses/user_timeline.xml?screen_name=xxx"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
var myXML:XML=new XML(e.target.data);
tweet_1.text=myXML.status[0].text;
tweet_2.text=myXML.status[1].text;
tweet_3.text=myXML.status[2].text;
tweet_4.text=myXML.status[3].text;
}
follow_btn.addEventListener(MouseEvent.CLICK, onFollow);
function onFollow(e:MouseEvent):void{
navigateToURL(new URLRequest("http://www.twitter.com/xxx"));
}
follow_btn.buttonMode = true;
Muchas gracias
Por Mireh el 02 de Julio de 2010
Por DiegoVelevu el 25 de Marzo de 2011
"TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo."
Pues que hay aquí una verdad oculta; en flash hay muchas verdades ocultas...
La OOP en AS 3 no es tan sencilla como parece y quizá, lo que sería peor, no está planeada genialmente... el buen
programador sabrá "disimular" la pobreza del lenguaje...
Pero, me resulta incómodo trabajar como si estuviera amenazado por unos mafiosos...
Es la misma sensación...
Por Eduardo el 13 de Mayo de 2011
Por alguien el 01 de Febrero de 2012
se trata de organización de re utilización y de legibilidad para otros desarrolladores
el as2 fomenta el código espagueti el as3 aparte de su verdadera orientación a objetos ,facilita la construcción de arquitecturas solidas para el desarrollo bajo flash
Por raider33 el 27 de Octubre de 2014
tengo un pequeño conflicto con un codigo de comparación, no sé en qué está fallando. cabe aclarar que no soy experto y he construido este codigo basado en algunos tutoriales.
puedes echarle un vistazo y darme una pista por favor?
es un formulario de contacto, donde hay algunos campos "obligatorios" y lo que más me hace ruido es que hay un campo para confirmar el correo electrónico.
on (press) {
varContacto = new LoadVars();
sendVars = new LoadVars();
var error:String = "";
status.text = error;
if (error == "")
enviarMail();
if (email2_txt.text == "")
error = "Confirma tu correo";
if (email_txt.text == "")
error = "Ingresa tu correo";
if (telefono_txt.text == "")
error = "Ingresa un número";
if (nombre_txt.text == "")
error = "Ingresa un nombre";
if (email2_txt.text == email_txt.text)
enviarMail;
if (email2_txt.text != email_txt.text)
error="No coincide el correo";
enviarMail = function ()
{
sendVars.nombre = nombre_txt.text;
sendVars.empresa = empresa_txt.text;
sendVars.telefono = telefono_txt.text;
sendVars.celular = celular_txt.text;
sendVars.horario = horario_txt.text;
sendVars.email = email_txt.text;
sendVars.email2 = email2_txt.text;
sendVars.comentarios = comentarios_txt.text;
varContacto.onLoad = function(ok) {
if (ok) {
}
};
sendVars.sendAndLoad("email.php",varContacto,"post");
gotoAndStop (32);
}
{
if (varContacto.status == "ok")
status.txt = "mensaje enviado";
else (status.text = "Error al enviar mensaje");
}
}
Por robin el 24 de Octubre de 2015
Por el 29 de Agosto de 2016
http://v8professional.com/ , , http://c9superactive.com/ , , http://sildenafil81online.com/ , , http://8tadalafilonline8.com/ , ,
Por José el 31 de Enero de 2018
classroom rental space
training rrom rental in singapore
training rooms in singapore
seminar room rental in singapore
indoor team building activities
corporate team building games singapore
team bonding in singapore
team building activities singapore
team building games singapore
10 soft skills you need
administrative office procedures
administrative support courses
adult learning mental skills
adult learning physical skills
anger management courses in singapore
appreciative inquiry courses
archiving and records management
assertiveness and self confidence
attention management courses
basic bookkeeping courses
being a likeable boss
body language basics courses
budgets and financial reports
business acumen courses
business ethics courses
business etiquette courses in singapore
business succession planning courses
business writing courses in singapore
call center training courses
change management courses in singapore
coaching and mentoring courses
coaching sales people courses
collaborative business writing
communication strategies courses
conducting annual employee reviews
conflict resolution courses
contact center training courses
contract management courses in singapore
creating a great webinar
creative problem solving courses
crisis management courses
critical thinking courses in singapore
customer service courses in singapore
customer support courses
cyber security courses in singapore
delivering constructive criticism
developing a lunch and learn
developing corporate behavior
developing creativity courses
developing new managers
digital citizenship courses
emotional intelligence courses
employee motivation courses
employee on boarding courses
employee recognition courses
employee recruitment courses
employee termination processes
entrepreneurship courses in singapore
event planning courses in singapore
executive and personal assistants
facilitation skills courses
generation gaps courses
goal setting and getting things done
handling a difficult customer
health and wellness at work courses
high performance teams inside the company
high performance teams remote work force
hiring strategies courses
human resource management courses in singapore
improving mindfulness
improving self awareness
increasing your happiness
internet marketing fundamentals courses
interpersonal skills courses
job search skills courses
knowledge management courses in singapore
leadership and influence courses
lean process and six sigma
life coaching essentials courses
manager management courses
managing personal finances courses
managing work place anxiety
marketing basics courses
measuring results from training
media and public relations courses
meeting management courses
middle manager courses
millennial on boarding courses
m learning essentials
motivating your sales team
multi level marketing courses
negotiation skills courses
networking outside the company
networking within the company
office politics for managers
organizational skills courses
overcoming sales objections
performance management courses
personal branding courses in singapore
personal productivity courses
presentation skills courses in singapore
project management courses in singapore
proposal writing courses
prospecting and lead generation
public speaking courses in singapore
risk assessment and management courses
safety in the work place courses
sales fundamentals courses
sales training courses in singapore
servant leadership courses
it courses in singapore
microsoft training singapore
corporate training in singapore
corporate sgx
social intelligence courses
social learning courses
social media in the work place
social media marketing courses in singapore
soft skills courses in singapore
stress management courses in singapore
supervising others
supply chain management courses
taking initiative courses
talent management courses
team building for managers
team building through chemistry
teamwork and team building
telephone etiquette courses
telework and telecommuting
time management courses in singapore
trade show staff training
train the trainer courses
virtual team building and management
women in leadership courses
work life balance courses in singapore
work place diversity courses
work place harassment courses
work place violence courses
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
[url=https://books.google.com.sg/books?id=1QykBQAAQBAJ&pg=PT362&lpg=PT362&dq=%22sancy+suraj+singh%22&source=bl&ots=E86QDyrLG2&sig=H-6a_YH-kTWaZWTfPSr1xfm4BOs&hl=en&sa=X&ved=0ahUKEwi3_56hhubVAhWJLo8KHcxTBxQ4ChDoAQgjMAA#v=onepage&q =% 22sancy% 20suraj% 20singh% 22 & f = false]sancy suraj[/url]
sancy suraj
longest colour sequence memorised
sancy suraj
longest colour sequence memorised
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
lunch talks
lunch talks
memory training course
memory training course
cabin crew
online memory course
memory training course
memory training course
memory training course
memory training course
memory training course
speed reading
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
geography tuition for secondary school students in singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
secondary geography tuition in singapore
history tuition for secondary school students in singapore
social studies tuition for secondary school students in singapore
psle english tuition in singapore
psle science tuition in singapore
secondary 1 chemistry tuition in singapore
secondary 1 physics tuition in singapore
school holiday workshops courses for students in singapore
school holidays activitie in singapore
school holidays activitie in singapore
[url=http://umonictuitionadvantage.com/2017-november-school-holidays-activities-programmes-workshop-courses-camps-for- students-kids-in-singapore/]school holidays activitie in singapore[/url]
school holidays activitie in singapore
study skills
study skills
study skills workshops course in singapore
study skills workshops course in singapore
speed reading
speed reading
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
student courses
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
team building
team building ideas
team building activities
unique team building
team building
corporate training in singapore
corporate training courses
corporate training courses
corporate training courses
corporate training courses
corporate health talk
corporate health talk
corporate health talk
lunch and learn talk
workplace lunch and learn
corporate training companies in singapore
training companies in singapore
emcee
emcee
health talks
soft skills training course
corporate training providers
professional development courses
training and development courses
short courses in singapore
corporate training courses in singapore
corporate training courses
corporate training in singapore
school holiday workshops courses for students in singapore
business students memory course in singapore
business students memory improvement workshop in singapore
memory improvement course for business students
memory improvement course for business students
business students memory improvement course
business students memory course in singapore
corporate health talks singapore
corporate health talks in singapore
corporate health talk singapore
corporate health talk in singapore
corporate health talks singapore
corporate health talks singapore
finance students memory training course in singapore
finance students memory training course in singapore
finance students memory training course in singapore
memory training courses for finance students in singapore
memory training courses for finance students in singapore
memory improvement courses for finance students in singapore
pinnacle minds
memory course
study skills
speed reading
memory training
school holiday
lunch and learn
march school holidays workshops
march school holidays workshops
march school holidays workshops
march school holidays workshops
march school holidays workshops
june school holidays workshops
june school holidays workshops
june school holidays workshops
june school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
top 10 soft skills you need training course
administrative office procedures training course
administrative support training course
anger management training course
appreciative inquiry training course
archiving and records management training course
archiving and records management training course
self confidence and assertiveness training course
improving your attention management training course
bacis bookkeeping training course
being a likeable boss training course
body language training course
budgets and-financial reports training course
business acumen training course
business ethics training course
business etiquette training course
business succession planning training course
business writing training course
call centre training course
change management training course
civility in the workplace training course
coaching and mentoring training course
coaching salespeople training course
collaborative business writing training course
communication strategies training course
conducting annual employee reviews training course
conflict resolution training course
contact centre training course
contract management training course
creating a great webinar training course
creative problem solving training course
crisis management training course
critical thinking training course
customer service training course
customer support training course
cyber security training course
delivering constructive criticism training course
developing lunch and learn training course
developing corporate behavior training course
developing creativity training course
developing new managers training course
digital citizenship training course
emotional intelligence training course
employee motivation training course
employee onboarding training course
employee recognition training course
employee recruitment training course
employee termination processes training course
entrepreneurship training course
event planning training course
executive and personal assistants training course
facilitation skills training course
generation gaps training course
goal setting and getting things done training course
handling a difficult customer training course
health and wellness at work training course
high performance teams inside the company training course
high performance teams remote workforce training course
hiring strategies training course
human resource management training course
improving mindfulness training course
improving self awareness training course
internet marketing fundamentals training course
interpersonal skills training course
job search skills training course
knowledge management training course
leadership and influence training course
lean process and six sigma training course
life coaching essentials training course
manager management training course
managing personal finances training course
managing workplace anxiety training course
marketing basics training course
measuring results from training course
media and public relations training course
meeting management training course
middle manager training course
millennial onboarding training course
mlearning essentials training course
motivating your sales team training course
negotiation skills training course
networking outside the company training course
networking within the company training course
office politics for managers training course
organizational skills training course
overcoming sales objections training course
performance management training course
personal branding training course
personal productivity training course
presentation skills training course
project management training course
proposal writing training course
prospecting and lead generation training course
public speaking training course
risk assessment and management training course
safety in the workplace training course
sales fundamentals training course
servant leadership training course
social intelligence training course
social learning training course
social media in the workplace training course
social media marketing training course
stress management training course
supervising others training course
supply chain management training course
taking initiative training course
talent management training course
team building for managers training course
team building through chemistry training course
teamwork and team building training course
telephone etiquette training course
telework and telecommuting training course
time management training course
top 10 sales secrets training course
trade show staff training course
train the trainer training course
virtual team building and management training course
women in leadership training course
work life balance training course
workplace diversity training course
workplace harassment training course
workplace violence training course
half day memory improvement courses workshops
speed reading courses workshops in singapore
10 soft skills you need corporate training course in singapore
administrative office procedures corporate training course in singapore
administrative support corporate training course in singapore
anger management corporate training course in singapore
appreciative inquiry corporate training course in singapore
archiving and records management corporate training course in singapore
self confidence assertiveness corporate training course in singapore
improving your attention management corporate training course in singapore
basic bookkeeping corporate training course in singapore
being a likeable boss corporate training course in singapore
body language basics corporate training course in singapore
budgets and financial reports corporate training course in singapore
business acumen corporate training course in singapore
business ethics corporate training course in singapore
business etiquette corporate training course in singapore
business succession planning corporate training course in singapore
business writing corporate training course in singapore
call center corporate training course in singapore
change management corporate training course in singapore
civility in the workplace corporate training course in singapore
coaching and mentoring corporate training course in singapore
coaching salespeople corporate training course in singapore
collaborative business writing corporate training course in singapore
communication strategies corporate training course in singapore
conducting annual employee reviews corporate training course in singapore
conflict resolution corporate training course in singapore
contact center corporate training course in singapore
contract management corporate training course in singapore
creating a great webinar corporate training course in singapore
creative problem solving corporate training course in singapore
crisis-management corporate training course in singapore
critical thinking corporate training course in singapore
customer service corporate training course in singapore
customer support corporate training course in singapore
cyber security corporate training course in singapore
delivering constructive criticism corporate training course in singapore
developing a lunch and learn corporate training course in singapore
developing corporate behavior corporate training course in singapore
developing creativity corporate training course in singapore
developing new managers corporate training course in singapore
digital citizenship corporate training course in singapore
emotional intelligence corporate training course in singapore
employee motivation corporate training course in singapore
employee onboarding corporate training course in singapore
employee recognition corporate training course in singapore
employee recruitment corporate training course in singapore
employee termination processes corporate training course in singapore
entrepreneurship training course in singapore
event planning corporate training course in singapore
executive and personal assistants corporate training course in singapore
facilitation skills corporate training course in singapore
generation gaps corporate training course in singapore
goal setting and getting things done corporate training course in singapore
handling a difficult customer corporate training course in singapore
health and wellness at work corporate training course in singapore
high performance teams inside the company corporate training course in singapore
high performance teams remote workforce corporate training course in singapore
hiring strategies corporate training course in singapore
human resource management corporate training course in singapore
improving mindfulness corporate training course in singapore
improving self awareness corporate training course in singapore
increasing your happiness corporate training course in singapore
internet marketing fundamentals corporate training course in singapore
interpersonal skills corporate training course in singapore
job search skills corporate training course in singapore
knowledge management corporate training course in singapore
leadership and influence corporate training course in singapore
lean process and six sigma corporate training course in singapore
life coaching essentials corporate training course in singapore
manager management corporate training course in singapore
managing personal finances corporate training course in singapore
marketing basics corporate training course in singapore
measuring results from corporate training course in singapore
media and public relations corporate training course in singapore
meeting management corporate training course in singapore
middle manager corporate training course in singapore
millennial onboarding corporate training course in singapore
mlearning essentials corporate training course in singapore
motivating your sales team corporate training course in singapore
negotiation skills corporate training course in singapore
networking outside the company corporate training course in singapore
networking within the company corporate training course in singapore
office politics for managers corporate training course in singapore
organizational skills corporate training course in singapore
overcoming sales objections corporate training course in singapore
performance management corporate training course in singapore
personal branding corporate training course in singapore
personal productivity corporate training course in singapore
presentation skills corporate training course in singapore
project management corporate training course in singapore
proposal writing corporate training course in singapore
prospecting and lead generation corporate training course in singapore
public speaking corporate training course in singapore
[url