Follow me @Tmeister

Archive for July, 2006

Desktoptwo en Business 2.0 Magazine

Posted by Tmeister On July - 26 - 2006

En la edición de Agosto de la revista Business 2.0 de Estados Unidos, una de las revistas mas respetadas en dicho país en cuanto a temas de tecnología y negocios. Hablan sobre las mejores 31 ideas de negocio del mundo “The 31 best business ideas in the world”

La noticia es que Sapotek, con su producto Desktoptwo esta entre esas 31 ideas. :)

El reportaje se enfoca en como lanzar una empresa con poco capital, no tanto en el producto en si, pero bueno, ya estamos siendo mencionados y siendo un poco reconocidos en el país del norte.

Llevamos un camino de pasos pequeños pero firmes. aquí les dejo unos screenshots de la revista.
business2-1.jpg business2-2.jpg

Saludos!! 8)

Uncategorized

Desktoptwo Beta 0.7 online

Posted by Tmeister On July - 18 - 2006

Después de muchos meses de desarrollo, se ha lanzado de manera oficial la versión beta de Desktoptwo, el beta salio con la versión 0.7.

El alta esta abierta así que si quieres ver que es Desktoptwo puedes inscribirte sin ningún costo, ademas de las aplicaciones que ofrece, tienes 1 Gb de Espacio..

Otra de las cosas de las muchas que tiene Desktoptwo es que, Puedes publicar tu blog con tan solo unos clicks. Y tienes 2 dominios para escoger. Es cuestión de escribir el titulo de tu blog, la descripción, un pie de Pagina (footer) y escoger una de las 14 plantillas visuales para tu blog y publicarlo. Si ninguna de las plantillas es de tu agrado, existe la opción de que tu hagas tu propio diseño del blog solo tienes que respetar las etiquetas para publicar la información de tu blog, pero para ello encontraras información dentro de tu cuenta.

Ademas de tener la opción de publicar imágenes y Mp3 directamente desde tu Disco duro de Desktoptwo ahí que podrás reproducir las canciones que quieras desde tu blog.

Los dominios disponibles bajo los que estará tu dirección son

blinkinblog.com
myblogtwo.com

El nombre del blog seria del tipo

http://tmeister.blinkinblog.com/

Recuerden es un Beta y aun estamos trabajando en su desarrollo. Así que por ahí hay mas cosas por venir.

Saludos!!

Uncategorized

[AS3] Cargando información Externa (XML)

Posted by Tmeister On July - 11 - 2006

Los eventos onLoad, onData de los objetos XML y LoadVars han dejado de existir en esta nueva versión de AS3.

Así mismo el método load de las mismas ahora debemos utilizar la clase URLLoader en conjunto con la clase URLRequest.

Algo así.

[as]
import flash.net. *
var url:URLRequest = new URLRequest (“miXml.xml”);
var loadUrl:URLLoader = new URLLoader (url)
loadUrl.load (url);
[/as]

En la sgunda linea creamos un “peticion de URL” en este caso un XML, en la linea tres creamos un “cargador de URL” pasandole como parámetro la variable que contiene el URL de petición, por ultimo solo basta cargar dicha url.

Ok, y como se cuendo el xml esta cargado?

Para ello recurrimos a nuestro addEventListener :) ,

[as]
import flash.net. *
import flash.event. *
var url:URLRequest = new URLRequest (“miXml.xml”);
var loadUrl:URLLoader = new URLLoader (url)
loadUrl.load (url);
loadUrl.addEventListener (Event.COMPLETE, onComplete);
function onComplete (event : Event) : void
{
trace(event)
}
[/as]

Hasta aqui no se tan complicado cierto?

Bien, ahora como parseamos este XML?. Una vez que se dispara el evento COMPLETE la información recibida se almacena en el objeto URLLoader, en este caso “loadUrl” y debemos hacer referencia a el de esta forma

[as]
import flash.net. *
import flash.event. *
var url:URLRequest = new URLRequest (“miXml.xml”);
var loadUrl:URLLoader = new URLLoader (url)
loadUrl.load (url);
loadUrl.addEventListener (Event.COMPLETE, onComplete);
function onComplete (event : Event) : void
{
//Hacemos referencia al objeto que lanzo el Evento
//Que es el mismo que contiene la información
var loadUrl : URLLoader = URLLoader (event.target);
//Creamos un nuevo objeto XMLDocument, que remplaza al XML tradicional que conocíamos
var xmlDoc : XMLDocument = new XMLDocument ()
//Ignoramos los espacios en Blanco del XML
xmlDoc.ignoreWhite = true
//Y por ultimo parseamos la información para poder acceder a ella por los métodos ya conocidos
//firstChilds, childNodes etc etc
xmlDoc.parseXML (loadUrl.data);
}
[/as]

Ahora, una cosa que me encontré por ahí leyendo la referencia de AS3 es esto

[as]
for each
[/as]

Si AS3 ya tiene un for each.. :D gracias gracias…. jeje..

bien una vez que parseamos nuestro XML solo queda recorrer los nodos y sacar la info.

El XML que usaremos de ejemplo es este:

<items>
<item id="1" label="Uno"/>
<item id="2" label="Dos"/>
<item id="3" label="Tres"/>
</items>

y el codigo completo para parsearlo es :

[as]
import flash.net. *
import flash.event. *
var url : URLRequest;
var loadUrl : URLLoader;
var theUrl : String = “myXml.xml”;
var outPut = new TextField ();
function init () : void
{
doTextField ();
url = new URLRequest (theUrl);
loadUrl = new URLLoader (url)
loadUrl.load (url);
loadUrl.addEventListener (Event.COMPLETE, onComplete);
loadUrl.addEventListener (SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loadUrl.addEventListener (HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loadUrl.addEventListener (IOErrorEvent.IO_ERROR, ioErrorHandler);
}
function doTextField () : void
{
addChild (outPut)
outPut.width = stage.stageWidth
outPut.height = stage.stageHeight
outPut.multiline = true
outPut.text = “Loadind XML..”;
}
function onComplete (event : Event) : void
{
var loadUrl : URLLoader = URLLoader (event.target);
var xmlDoc : XMLDocument = new XMLDocument ()
xmlDoc.ignoreWhite = true
xmlDoc.parseXML (loadUrl.data);
var nodes = xmlDoc.firstChild.childNodes
outPut.text = “”;
for each (value in nodes)
{
outPut.text += “\nid: ” + value.attributes.id
outPut.text += “\nlabel: ” + value.attributes.label
outPut.text += “\n———————————”
}
}
function securityErrorHandler (event : SecurityErrorEvent) : void
{
trace (“securityErrorHandler: ” + event);
}
function httpStatusHandler (event : HTTPStatusEvent) : void
{
trace (“httpStatusHandler: ” + event);
}
function ioErrorHandler (event : IOErrorEvent) : void
{
trace (“ioErrorHandler: ” + event);
}
init ()
[/as]

Como se pueden dar cuenta tenemos acceso a varios eventos :

Event.COMPLETE
SecurityErrorEvent.SECURITY_ERROR
HTTPStatusEvent.HTTP_STATUS
IOErrorEvent.IO_ERROR

Entre muchos otros que nos pueden ayudar a depurar de manera mas eficaz nuestras aplicaciones

Bueno eso es todo por hoy. Como siempre aquí esta el FLA

[AS3] FrameRate, Eventos y agregar elementos al Stage

Posted by Tmeister On July - 8 - 2006

Bien en un post anterior puse un ejemplo de AS3 pero no esta explicado ni nada.

En esta ocasión tratare de explicar lo mas detalladamente posible el código. Como sabrán los eventos de botones y movieClips como “onRelease”, “onPress”, etc ya no son soportados en la nueva versión de ActionScript ahora todo sera gestionado por medio de EventsListenners.

Otra cosa que veremos es como crear Elementos simples (cuadro, circulo) y ponerlos en el stage. La función AttachMovie dejo de existir en AS3, ahora para mostrar un elemento en el stage se debe de usar addChild con este método se pude agregar un elemento de la librería o un objeto creado por código.

Ademas de que veremos que ahora es posible cambiar el FrameRate en tiempo de ejecución. esto había sido pedido a gritos por varios. =)

Lo primero sera agregar elementos al Stage. ya que sin ellos no se puede hacer nada jeje.

Flash cuenta con un API de dibujo que nos facilita la vida, los métodos disponibles son

  • drawCircle(x:Number, y:Number, radius:Number):void
  • drawEllipse(x:Number, y:Number, width:Number, height:Number):void
  • drawRect(x:Number, y:Number, width:Number, height:Number):void
  • drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number):void

simple no?, un ejemplo sencillo.

[as]
import flash.display.Sprite;
var ball : Sprite = new Sprite ();
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
[/as]

Lo primero que debemos hacer es importar los paquetes que vamos a utilizar en este caso flash.display.Sprite para poder crear una nueva instancia

En la ultima linea después de crear nuestro circulo debemos agregar el objeto al Stage esto se debe de hacer siempre ya que de otra forma no se vera en nuestro SWF

Otra de las cosas que cambiaron es el modo de los eventos en los objetos en el Stage. Los que usaron los componentes AS2 de Flash no tendrán problema ya que es exactamente lo mismo, los eventos se asignan por media de la función addEventListener

[as]
import flash.display.Sprite;
import flash.events.*
var ball : Sprite = new Sprite ();
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
ball.addEventListener(MouseEvent.MOUSE_DOWN, handler)
function handler(event:Event){
trace(event)
}
[/as]

Ya no es necesario crear un listener y después asignarlo los eventos, ahora solo agregas el tipo de evento al objeto y la función que se ejecutara cuando se lleve a cabo dicho evento, La función recibe un parámetro del tipo Event, pero podemos acceder a sus propiedades como si fuera un objeto

Las propiedades que recibimos son:

[MouseEvent
type="mouseDown"
bubbles=true
cancelable=false
eventPhase=2
localX=66
localY=57
stageX=66
stageY=57
relatedObject=null
ctrlKey=false
altKey=false
shiftKey=false delta=0]

Algo que me llamo la atención y me agrado fue que el evento detecta si el usuario esta o no, presionando las teclas Ctrl Alt o Shift es algo muy útil. adiós a los KeyListenners =P

bien, así como los eventos del mouse para con los objetos han cambiado, también lo hicieron algunos métodos mas. por ejemplo el onEnterFrame.

Ahora para invocar un enterFrame debemos agregarle un EventListener al Objeto en cuestión por ejemplo:

[as]
import flash.display.Sprite;
import flash.events.*
var ball : Sprite = new Sprite ();
var count:Number = 0
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
ball.addEventListener (Event.ENTER_FRAME, handlerEnterFrame);
function handlerEnterFrame(event:Event)
{
if(count < 15)
{
trace(event)
ball.x += 5
count++
}else
{
ball.removeEventListener("enterFrame", handlerEnterFrame)
}
}
[/as]

Por ultimo, Ahora se puede cambiar el valor del frameRate en tiempo de ejecución algo que no se podía hacer en ninguna de las versiones anteriores de Flash.

Esto es algo muy simple tan simple como esto.

[as]
stage.frameRate = 50
[/as]

Ahora el ejemplo terminado. Da click en el rectangulo para cambiar el FrameRate del SWF, Necesitas el FlashPlayer9 para verlo

[FLASH]http://klr20mg.com/as3/framerate.swf,400,100[/FLASH]

El código completo

[as]
import flash.display.Sprite;
import flash.events. *
import flash.stage. *
var ball : Sprite = new Sprite ();
var square : Sprite = new Sprite ();
var outPut : TextField = new TextField ();
function init ()
{
doBall ()
doButton ()
doTextField ()
addListeners ()
}
function doBall ()
{
ball.graphics.beginFill (0x0099FF)
ball.graphics.drawCircle (10, 20, 10);
ball.graphics.endFill ();
addChild (ball)
}
function doButton ()
{
square.graphics.beginFill (0x0099FF)
square.graphics.drawRect (10, 50, 50, 25);
square.graphics.endFill ();
addChild (square)
}
function doTextField ()
{
outPut.width = 150
outPut.height = 25
outPut.x = 70
outPut.y = 60
addChild (outPut)
}
function addListeners ()
{
ball.addEventListener (Event.ENTER_FRAME, handlerEnterFrame);
square.addEventListener (MouseEvent.MOUSE_UP, handlerButton);
}
function handlerEnterFrame (event : Event)
{
ball.x += 5
if (ball.x > 400)
{
ball.x = 0
}
outPut.text = “FrameRate : ” + stage.frameRate
}
function handlerButton (event : Event)
{
if (stage.frameRate < 120)
{
stage.frameRate += 12
}else
{
stage.frameRate = 12
}
}
init ()
[/as]

y por supuesto el ZIP con el FLA

Acerca de mi
Enrique Chavez

Enrique Chávez también es conocido como @Tmeister es un desarrollador, emprendedor, poeta y loco.

Geek autodeclarado y apasionado de todo lo que tiene que ver con tecnología y desarrollo.

Cuenta con una experiencia de más de 7 años en el ramo del desarrollo, creando, sobre todo, aplicaciones web en la empresa Sapotek.

A finales del 2008 crea, junto con 3 colegas, la consultoría llamada AureaCode, enfocándose a brindar servicios de desarrollo web en todas sus variantes.

Si necesitas algún tipo de información o consulta por favor no dude en escribir.

View Enrique Chávez's profile on LinkedIn

Carlos Enrique Chavez Garcia's VisualCV

RSS Feed

Links Patrocinados