Apuntes de Joe :D
I can't see the entire code... Drawing Board Class. Just end with: we need at least 1 point

i do not understand :S

Estas trabajando ?
Anonymous

si

AS3 Drawing Board Class
Hola!, he vuelto a trabajar en bitbang y me han pedido hacer una divertida pizarra en AS3, hace años, por alla en el 2006, hice mi primera version en AS2, gracias a la informacion dada en este foro:

http://www.kirupa.com/forum/showthread.php?40686-Flash-Drawing-Board-(MX)

Esta vez tomé el mismo código y lo encapsulé en una clase, y lo he portado a AS3, y lo dejo de manera pública para que otros la usen como yo

Por supuesto que esta es solo la clase base que permite el dibujo, quiza luego postee una clase extendida con mas metodos que permitan la exportacion o la limitacion a un rectangulo en específico

No más preámbulos, los dejo con la clase lista para ser guardada como DrawBoardEasy.as

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	/**
	 * ...
	 * @author Joe Cabezas
	 */
	
	//Drawing board class, port to AS3
	//original idea (AS2) from:
	//http://www.kirupa.com/forum/showthread.php?40686-Flash-Drawing-Board-(MX)
	
	public class DrawBoardEasy extends Sprite
	{
		//are we drawing?
		private var is_drawing:Boolean;
		
		//points array
		var points:Array;
		
		//draw container
		private var draw_container:Sprite;
		
		public function DrawBoardEasy()
		{
			if (stage)
				init();
			else
				addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			this.setup();
			this.addListeners();
			this.draw();
		}
		
		private function setup():void
		{
			//hey! setup-time!, we are not drawing :)
			this.is_drawing = false;
			
			//instantiating the container
			this.draw_container = new Sprite();
			
			//setting the line style
			this.draw_container.graphics.lineStyle(5, 0xff0000);
		}
		
		private function addListeners():void
		{
			this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			this.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
		
		private function onMouseMove(e:MouseEvent):void
		{
			//if we are not drawing, do nothing
			if (!this.is_drawing)
				return;
			
			//adding to the array the actual mouse position
			this.points.push(new Array(mouseX, mouseY));
			
			this.smooth();
		}
		
		private function onMouseUp(e:MouseEvent):void
		{
			//ok we're done, no more drawing
			this.is_drawing = false;
			
			//smooth the rest of the points
			this.smooth();
		}
		
		private function onMouseDown(e:MouseEvent):void
		{
			//reseting the array
			this.points = new Array();
			
			//activating the drawing mode
			this.is_drawing = true;
			
			//adding to the array the actual mouse position
			this.points.push(new Array(mouseX, mouseY));
			
			//move the cursor of the drawing API
			//to the actual mouse position
			this.draw_container.graphics.moveTo(mouseX, mouseY);
		}
		
		private function smooth()
		{
			//if there is no points instantiated, do nothing
			if (!this.points)
				return;
			
			var i = this.points.length - 1;
			
			//we need at least 1 point, if not, do nothing
			if (i  
Como saltar politicas de seguridad para leer XML o RSS de dominios externos en AS3

De seguro a quienes han tratado de leer XML externos, en especial si se trata de leer RSS que estan en otro domino (como siempre), por razones de politicas de seguridad, deben incluir un archivo crossdomain.xml en el servidor que hostea el FEED o el XML que quieren leer…

pero si uds no hostean este XML, como podran subir un archivo crossdomain.xml?

si lo intentais, de seguro tendrán un error:

Error #2048: Security sandbox violation

hay un truco para saltarse esto, simplemente deben tomar la url que quieren leer y crear un link nuevo con FeedBurner (www.feedburner.com)

pero a este link nuevo deben agregarle al final un:

?format=xml

con esto conseguiran un documento exactamente igual al original, pero en un host donde si tienen un crossdomain.xml pensado en nosotros…

aca les dejo el feed del RSS de latercera.com

http://latercera.com/feed/manager?type=rss&sc=TEFURVJDRVJB&ul=1

pero luego de pasado por feedburner:

http://feeds.feedburner.com/latercera/Jwko?format=xml

eso es todo!

Crear un Preloader para un proyecto en AS3 “puro” (Flash Builder y otros)

Buenas tardes!

Siempre ha sido un real problema crear un preloaders en proyectos AS3 puros, en especial porque no hay linea de tiempo, y los elementos deben ser cargados en otro frame
para poder haer que el compilador cree un frame extra para poner ahi nuestro preloader, el truco está en agregar la siguiente instrucción de compilador antes de la definicion de clase:

[Frame(factoryClass="preloader.CustomPreloader")]

siendo CustomPreloader la clase encargada de crear el preloader, esta instrucción hará que el compilador cree un nuevo frame y deje lo demás en otro frame, tal como se explica en este sitio:

http://www.bit-101.com/blog/?p=946

La idea es sencilla y existen en línea bastantes clases abstractas que permiten ser extendidas para que no se deba hacer ningun esfuerzo en crear el preloader, una de estas implementaciones está aca:

http://omar.likesflex.com/?p=16

en este sitio de explica que el compilador crea un warning, el cual puede ser evitado creando un archivo CSS vacio y agreando la siguiente linea de configuracion al compilador:

-defaults-css-url empty.css

Esto se hace entrando a las propiedades del proyecto, y en la opcion de ‘ActionScript Compiler’ deben agregar la linea de configuracion en el campo: ‘Aditional compiler arguments’, tal que asi:

yo he bajado el ejemplo que exponen en este sitio y he hecho una version reutilizable para que podáis descargar y usar, podéis ver funcionando el preloader acá

Ejemplo AS3Preloader

y si quieren hojear el codigo fuente, aca lo tienen todo:

Codigo Fuente

asimismo podéis bajar el proyecto completo acá y ocuparlo para lo que deseen:

Bajar Proyecto

Cómo convertir videos para celular (en este caso HTC Hero, o 3G) en Ubuntu

Hola! que tal?


Ultimamente he necesitado tener algunos capitulos de mis series preferidas en el celular para ver cuando no estoy en casa y necesito hacer tiempo.


primero hay que instalar ffmpeg, pero con los codecs necesarios, en especial libfaac, si no sabes como, sigue esta gúia: http://ubuntuforums.org/showthread.php?t=786095
luego, ejecutas este comando:
$ ffmpeg -i video_entrada.mp4 -s 480x320 -vcodec mpeg4 -acodec libfaac -ac 2 -ar 24000 -r 13 -ab 128000 video_salida.mp4

con eso estaras listo, con un video resultante cuyas caracteristicas son:


  • resolucion (-s): 480x320
  • calidad (-vcodec): mp4 (xvid)
  • canales de audio (-ac): 2
  • frames por segundo (-r): 13
  • audio bitrate (-ab): 128000 = 128Kb
  • audio sampling (-ar): 24000 = 24Khz

modifica estas opciones a tu gusto!

puede ser mas comodo si haces un script, como yo el que muestro a continuacion, copia el siguiente código en un archivo que se llame “convert.sh”

#!/bin/bash
mkdir out
ffmpeg -i "$1" -s 480x320 -vcodec mpeg4 -acodec libfaac -ac 2 -ar 24000 -r 13 -ab 128000 "out/_$1"

como verás, hace lo mismo que explico mas arriba, pero de manera mas automatica, ya que muchas veces el archivo que quieres comvertir tiene nombres muy largos o con espacios, asi simplemente debes hacer:

$ ./convert.sh "video_entrada.mp4"

y listo, el programa, para no confundir creara una carpeta llamada “out” (si ya existe no hace nada), y creara tu video transformado con el mismo nombre que el original pero anteponiendo un guin bajo “_” (si, parece una carita)

eso es todo, nos vemos!



hay mas formas de hacerlo, como indica esta guia:
https://help.ubuntu.com/community/AndroidVideoEncoding
Comandos útiles Ubuntu

Hoy he descubierto sin querer 2 comandos útiles en mi ubuntu, los comparto:

1) SHIFT + ENTER:

Abre la carpeta seleccionada en una nueva pestaña dentro de nautilus, quedando asi:

2) CONTROL + FLECHA = con flecha me refiero a las teclas de dirección, como estas:

Este comando te permite avanzar por palabras en las entradas de texto, por ejemplo en direcciones url o editores de texto lo cual es muy util para avanzar rapido y si se trata de URLs, se detiene por cada “/”, lo cual editar se hace muy simple.

OJO, que si quieres llegar mas rapido al principio o al final de una entrada de texto, SIEMPRE es mas rapido las teclas “inicio” y “fin”, como se indican abajo:

algun dia me leere el manual de ubuntu en su seccion de atajos del teclado, si quieren encontrar mas atajos de teclado, vayan a Sistema>Preferencias>Combinaciones de teclas

Practicando con PaperVision3D (1)
Hola!, tanto tiempo que no escribia, voy a documentar acá mis inicios con PaperVision3D, ya que en el trabajo me han pedido investigarlo, y eneste blog ire documentando lo que aprendo, con la intencion de que algún dia a alguien le sirva. este es mi segundo día aprendiendo, y esto es lo que he logrado de a poco:

de lejos:

es una esfera compuesta de otras esferas mas pequeñas (tienen pocos vertices por eso se ven como diamantes), que giran lento o mas rapido, se acercan o alejan dependiendo de la posicion del mouse.. de seguro este ejemplo a alguien inspirará, asi que dejo el código fuente, cabe recordar que para que funcione es neesario contar con la libreria de PaperVision3D, que hata la fecha es la version: Papervision3D 2.1 rev920 (August 11th, 2009) y también usé la version trial de Flash Builder. acá lo dejo funcionando: codigo:
package
{
	import flash.events.Event;
	
	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	
	[SWF(width='800', height='600', frameRate='60')]
	
	public class VerticesExample extends BasicView
	{
		private var pivot:DisplayObject3D;
		
		public function VerticesExample()
		{
			this.init();
			this.startRendering();
		}
		
		private function init():void{
			this.pivot = new DisplayObject3D();
			this.scene.addChild(this.pivot);
			
			var bigSphere:Sphere = new Sphere(null, 300,12,12);
			
			for(var i:uint=0;i<bigSphere.geometry.vertices.length;i++){
				
				var material:MaterialObject3D;
				
				//material= new WireframeMaterial(null,1,0);
				material = new ColorMaterial(0x777777);
				
				var smallSphere:Sphere = new Sphere(material,20,1,1);
				smallSphere.x = bigSphere.geometry.vertices[i].x;
				smallSphere.y = bigSphere.geometry.vertices[i].y;
				smallSphere.z = bigSphere.geometry.vertices[i].z;
				
				this.pivot.addChild(smallSphere);
			}
			
			//this.pivot.addChild(bigSphere);
			
			this.scene.addChild(this.pivot);
			
			trace(this.camera.toString());
		}
		
		override protected function onRenderTick(event:Event=null):void{
			
			var velr:Number = 3*(300-this.mouseY)/300;
			
			this.pivot.rotationX += velr;
			this.pivot.rotationY += velr;
			
			//this.pivot.z = Math.sin(this.pivot.rotationY/12)*300;
			this.pivot.z =-this.mouseY*3;
			
			//trace(velr);
			
			super.onRenderTick();
		}
	}
}
nos vemos!
Hola Joe, estoy buscando a un programador que trabaje en Air, Action 3 o 2, de manera urgente, por favor si te interesa ponte en contacto conmigo a mi mail es camila.campana@gmail.com.

Saludos
Anonymous

hola, es muy tarde aun?

Comparte tu conocimiento, es una manera de conseguir la inmortalidad
Dalai Lama

eso mismo, sigan las instrucciones y listo!

nota: la compilacion es larga, dejen unos minutos compilando, no hay problema :3, funciona

Este tutorial sirve para instalar temas de adium con un solo clic para Empathy

los temas puedes encontrarlos acá:
http://www.adiumxtras.com/index.php?a=search&cat_id=5

muy bueno :D

PD: leyendo el script, he notado que solo sirve para ZIP, si el tema viene en tgz no sirve, pronto publicare uno yo mismo para tgz
PD: si usas pidgin, tb existe un script para esto, usa google y encuentralo!

lecookiemonster:

I COULD NOT RESIST.

Especially since today the song is stuck in my head.

lecookiemonster:

I COULD NOT RESIST.

Especially since today the song is stuck in my head.

Los informáticos son hijos de los electrónicos y a su vez hijos de los electricistas
Héctor Allende
Mientras mas encriptada esté la materia, mas prestigio para la Universidad
J. Guadalupe