<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Cargar clases dinámicamente</title>
	<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/</link>
	<description>Tryin' to follow the clue....</description>
	<pubDate>Sat, 17 May 2008 15:33:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.2</generator>

	<item>
		<title>By: Guti</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-533</link>
		<author>Guti</author>
		<pubDate>Wed, 21 Nov 2007 10:04:19 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-533</guid>
					<description>Como me recuerda esto al getClassByName de Java...</description>
		<content:encoded><![CDATA[<p>Como me recuerda esto al getClassByName de Java&#8230;</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Sergio</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-580</link>
		<author>Sergio</author>
		<pubDate>Tue, 04 Dec 2007 11:46:24 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-580</guid>
					<description>Interesante post, si señor!

No he podido resistir la tentación de contestar éste post :) 

Bueno lo que queria es comentar otro método para incluir las clases de las cuales no se hace referencia directa en tiempo de compilación.

Estar atentos porque el método es complicado y es el siguiente:

    - Añadir en los argumentos de compilación "-include-libraries" donde libraries serán las classes que queremos importar aunque no haya ninguna referencia directa a ellas. En el caso de utilizar flex Builder, esta opción está en Flex-&#62;projects-&#62;Flex compiler-&#62;Additional compiler arguments.

jejeje sencillo verdad?

Un Saludo</description>
		<content:encoded><![CDATA[<p>Interesante post, si señor!</p>
<p>No he podido resistir la tentación de contestar éste post <img src='http://www.theklue.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bueno lo que queria es comentar otro método para incluir las clases de las cuales no se hace referencia directa en tiempo de compilación.</p>
<p>Estar atentos porque el método es complicado y es el siguiente:</p>
<p>    - Añadir en los argumentos de compilación &#8220;-include-libraries&#8221; donde libraries serán las classes que queremos importar aunque no haya ninguna referencia directa a ellas. En el caso de utilizar flex Builder, esta opción está en Flex-&gt;projects-&gt;Flex compiler-&gt;Additional compiler arguments.</p>
<p>jejeje sencillo verdad?</p>
<p>Un Saludo</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Alberto</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-581</link>
		<author>Alberto</author>
		<pubDate>Tue, 04 Dec 2007 11:48:34 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-581</guid>
					<description>Muy buena puntualización! 

Muchas gracias!</description>
		<content:encoded><![CDATA[<p>Muy buena puntualización! </p>
<p>Muchas gracias!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Guillermo</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-595</link>
		<author>Guillermo</author>
		<pubDate>Thu, 06 Dec 2007 07:11:37 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-595</guid>
					<description>Ojala puedan ayudarme.... tengo las siguientes dos clases:

public class Clase1{
      public miClase2:Clase2;
      public miArray:Array=newArray();
      
      public function unaFuncion():void{
          miClase2 = new Clase2();
          //aqui lleno miArray con datos, estan correctos
          miClase2.otraFuncion(miArray);
      }
}

public class Clase2 extends Clase1{
       [Bindable]
       public var otroArray:Array = new Array();
       
       public function otraFuncion(unArray:Array):void{
                otroArray=unArray;
       }
}

esas dos.... la Clase1, llama a la funcion de Clase2, pero es ahi donde se cae. Me lanza lo siguiente:

"Type Error: Error #1009: No se puede acceder a una propiedad o a un metodo de una referencia a un objeto nulo".
No hay caso que pueda encontra que esta malo. Ojala puedan ayudarme, gracias</description>
		<content:encoded><![CDATA[<p>Ojala puedan ayudarme&#8230;. tengo las siguientes dos clases:</p>
<p>public class Clase1{<br />
      public miClase2:Clase2;<br />
      public miArray:Array=newArray();</p>
<p>      public function unaFuncion():void{<br />
          miClase2 = new Clase2();<br />
          //aqui lleno miArray con datos, estan correctos<br />
          miClase2.otraFuncion(miArray);<br />
      }<br />
}</p>
<p>public class Clase2 extends Clase1{<br />
       [Bindable]<br />
       public var otroArray:Array = new Array();</p>
<p>       public function otraFuncion(unArray:Array):void{<br />
                otroArray=unArray;<br />
       }<br />
}</p>
<p>esas dos&#8230;. la Clase1, llama a la funcion de Clase2, pero es ahi donde se cae. Me lanza lo siguiente:</p>
<p>&#8220;Type Error: Error #1009: No se puede acceder a una propiedad o a un metodo de una referencia a un objeto nulo&#8221;.<br />
No hay caso que pueda encontra que esta malo. Ojala puedan ayudarme, gracias</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Alberto</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-596</link>
		<author>Alberto</author>
		<pubDate>Thu, 06 Dec 2007 11:48:47 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-596</guid>
					<description>Es bastante extraño, yo he probado el código que has pegado y me funciona. He tenido que cambiar las siguientes cosas:
- En la linea 2 y 3 tienes que indicar que son variables: public var miClase2:Clase2; (pero entiendo que es una errata y que tu lo tienes bien puesto porque sino no te hubiese dejado compilar)
- También en la línea 3 hay un newArray junto que debería ser new Array, pero igual que en el caso anterior esto no te hubiese permitido compilar. 

Si puedes darme más datos intentaré ayudarte, aún así no tengo muy claro que quieres conseguir con esta estructura; creo que es un poco rara (normalmente las clases "padre" no crean instancias de las clases que heredan de estas).

Un saludo!</description>
		<content:encoded><![CDATA[<p>Es bastante extraño, yo he probado el código que has pegado y me funciona. He tenido que cambiar las siguientes cosas:<br />
- En la linea 2 y 3 tienes que indicar que son variables: public var miClase2:Clase2; (pero entiendo que es una errata y que tu lo tienes bien puesto porque sino no te hubiese dejado compilar)<br />
- También en la línea 3 hay un newArray junto que debería ser new Array, pero igual que en el caso anterior esto no te hubiese permitido compilar. </p>
<p>Si puedes darme más datos intentaré ayudarte, aún así no tengo muy claro que quieres conseguir con esta estructura; creo que es un poco rara (normalmente las clases &#8220;padre&#8221; no crean instancias de las clases que heredan de estas).</p>
<p>Un saludo!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Sergio</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-598</link>
		<author>Sergio</author>
		<pubDate>Thu, 06 Dec 2007 14:48:07 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-598</guid>
					<description>Hola Guillermo!

He estado mirando tu código y bueno... he encontrado una serie de cosas aparte de las que ha comentado alberto que no estan correctas. Te pongo el código para que sea mas sencillo ok?


package
{
	public class Clase1
	{
		private var miClase2:Clase2;
		public var miArray:Array=new Array();
		
		public function unaFuncion():void
		{
			miClase2 = new Clase2();
			
			//aqui lleno miArray con datos, estan correctos
			miClase2.otraFuncion(miArray);
		}
		
	}
	
}

class Clase2 extends Clase1
{
	[Bindable]
	public var otroArray:Array = new Array();
	
	public function otraFuncion(unArray:Array):void
	{
		otroArray=unArray;
		trace("otro Array recibido adecuadamente :)");
	}
}

Basicamente lo que he hecho es sacar la Clase 2 fuera del package ya que no se permiten tener mas de una clase visibles en el package. Una vez fuera, el atributo "public" de la clase ya no se utiliza.

Espero aver ayudado, ya nos comentarás que tal.

Un Saludo!</description>
		<content:encoded><![CDATA[<p>Hola Guillermo!</p>
<p>He estado mirando tu código y bueno&#8230; he encontrado una serie de cosas aparte de las que ha comentado alberto que no estan correctas. Te pongo el código para que sea mas sencillo ok?</p>
<p>package<br />
{<br />
	public class Clase1<br />
	{<br />
		private var miClase2:Clase2;<br />
		public var miArray:Array=new Array();</p>
<p>		public function unaFuncion():void<br />
		{<br />
			miClase2 = new Clase2();</p>
<p>			//aqui lleno miArray con datos, estan correctos<br />
			miClase2.otraFuncion(miArray);<br />
		}</p>
<p>	}</p>
<p>}</p>
<p>class Clase2 extends Clase1<br />
{<br />
	[Bindable]<br />
	public var otroArray:Array = new Array();</p>
<p>	public function otraFuncion(unArray:Array):void<br />
	{<br />
		otroArray=unArray;<br />
		trace(&#8221;otro Array recibido adecuadamente :)&#8221;);<br />
	}<br />
}</p>
<p>Basicamente lo que he hecho es sacar la Clase 2 fuera del package ya que no se permiten tener mas de una clase visibles en el package. Una vez fuera, el atributo &#8220;public&#8221; de la clase ya no se utiliza.</p>
<p>Espero aver ayudado, ya nos comentarás que tal.</p>
<p>Un Saludo!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Alberto</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-599</link>
		<author>Alberto</author>
		<pubDate>Thu, 06 Dec 2007 15:03:05 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-599</guid>
					<description>Gracias por tu aportación Sergio. Yo había asumido que las dos clases se encontraban separadas con sus packages correspondientes. Quizá ese era el problema... 

Ya nos contarás Guillermo.

Un saludo!</description>
		<content:encoded><![CDATA[<p>Gracias por tu aportación Sergio. Yo había asumido que las dos clases se encontraban separadas con sus packages correspondientes. Quizá ese era el problema&#8230; </p>
<p>Ya nos contarás Guillermo.</p>
<p>Un saludo!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Joris</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1112</link>
		<author>Joris</author>
		<pubDate>Fri, 08 Feb 2008 16:24:03 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1112</guid>
					<description>Hola comunidad y en especial a Alberto por este magnifico blog...:-)

  Alberto, hace unos dias atras tenia &lt;strong&gt;[ y tengo ]&lt;/strong&gt; este mismo problema de crear clases dinamicamente, pero, es que, si tendria que instanciar al menos una variable con la clase a crear con getDefinition... tendria que repetir esa ultima linea que pones tantas veces-cantidad de clases dinamicas se quieran cargar. 
  
  Por ejemplo, estoy tratando de imitar el mecamismo de servicios que tiene AMFPHP, pero para AIR con sqlite [ para hacer un proxy entre ambos servicios ], pero cada servicio es una clase que crea el usuario que implementa una interface x, el usuario es libre de crear cuantos servicios quiera, por eso te digo que, ?habrá un atajo para poder automaticamente cargar esas clases al compilar?, autogenerar un clip en la libreria exportado para dicha clase, &lt;strong&gt;[ ya esto es una hipotesis ] &lt;/strong&gt;

Saludos
Joris</description>
		<content:encoded><![CDATA[<p>Hola comunidad y en especial a Alberto por este magnifico blog&#8230;:-)</p>
<p>  Alberto, hace unos dias atras tenia <strong>[ y tengo ]</strong> este mismo problema de crear clases dinamicamente, pero, es que, si tendria que instanciar al menos una variable con la clase a crear con getDefinition&#8230; tendria que repetir esa ultima linea que pones tantas veces-cantidad de clases dinamicas se quieran cargar. </p>
<p>  Por ejemplo, estoy tratando de imitar el mecamismo de servicios que tiene AMFPHP, pero para AIR con sqlite [ para hacer un proxy entre ambos servicios ], pero cada servicio es una clase que crea el usuario que implementa una interface x, el usuario es libre de crear cuantos servicios quiera, por eso te digo que, ?habrá un atajo para poder automaticamente cargar esas clases al compilar?, autogenerar un clip en la libreria exportado para dicha clase, <strong>[ ya esto es una hipotesis ] </strong></p>
<p>Saludos<br />
Joris</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Alberto</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1115</link>
		<author>Alberto</author>
		<pubDate>Thu, 14 Feb 2008 14:59:21 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1115</guid>
					<description>Hola Joris!

Siento haber tardado en responder.

Lo que comentas es muy interesante. Entiendo que estás instanciando las clases utilizando la interfaz que implementan (creo que esta es la mejor opción).

La verdad es que así en frío no se me ocurre ninguna solución buena y rápida. Quizá la opción pase por utilizar Runtime Shared Libraries con las clases de tus servicios empaquetadas dentro. Así en runtime podrías coger una u otra según las necesidades. Quizá (y ahora soy yo el que hipotetiza) se podría generar una librería por clase y cargarlas dinámicamente. Cada librería sólo contendría la clase a la que representara. De esta manera podrías cargar tan sólo lo que necesitases sin excederte en tamaño.

Me gustaría hacer alguna prueba de esto a ver si consigo algo.

Por favor, si descubres una buena manera de hacerlo, te agradecería que dejaras por aquí algún mensajito ;)

Un saludo y gracias por leerme,

Alberto</description>
		<content:encoded><![CDATA[<p>Hola Joris!</p>
<p>Siento haber tardado en responder.</p>
<p>Lo que comentas es muy interesante. Entiendo que estás instanciando las clases utilizando la interfaz que implementan (creo que esta es la mejor opción).</p>
<p>La verdad es que así en frío no se me ocurre ninguna solución buena y rápida. Quizá la opción pase por utilizar Runtime Shared Libraries con las clases de tus servicios empaquetadas dentro. Así en runtime podrías coger una u otra según las necesidades. Quizá (y ahora soy yo el que hipotetiza) se podría generar una librería por clase y cargarlas dinámicamente. Cada librería sólo contendría la clase a la que representara. De esta manera podrías cargar tan sólo lo que necesitases sin excederte en tamaño.</p>
<p>Me gustaría hacer alguna prueba de esto a ver si consigo algo.</p>
<p>Por favor, si descubres una buena manera de hacerlo, te agradecería que dejaras por aquí algún mensajito <img src='http://www.theklue.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Un saludo y gracias por leerme,</p>
<p>Alberto</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Joris</title>
		<link>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1132</link>
		<author>Joris</author>
		<pubDate>Wed, 20 Feb 2008 19:05:34 +0000</pubDate>
		<guid>http://www.theklue.com/2007/11/20/cargar-clases-dinamicamente/#comment-1132</guid>
					<description>Si pero, como creo una libreria por clase en [b]runtime[/b]..?
mira, en AS2 se podia hacer algo parecido a esto :

class Character extends MovieClip{
   static var symbolName:String = "__Packages.Character";
   static var symbolOwner:Function = Character;
   static var symbolLinked = Object.registerClass(symbolName, symbolOwner);
   static function __resolve(name){
      return Character[name];
   }
   public function drawShape(w:Number, h:Number){
      beginFill(0x000000,100);
      lineTo(0,h);
        lineTo(w,h);
        lineTo(w,0);      
      endFill();
   }
   public function getCoords(){
      return [this._x, this._y]
   }
}

(El código es cortesía de www.cristalab.com, en especial de maikel).

  Ahi podías linkear dinámicamente un clip con una clase [permitiendome crear movieClips dinamicos y despues le linkeaba la clase del servicio ]... cosa que ahora no se como hacerlo con AS3,
si este codigo fuera válido para AS3, de seguro ya funcionaria.... pero...:-(

 Y si, despreocupa, que cuando encuentre algo optimo lo posteo sin falta por aca.!

salu2
gracias por responer</description>
		<content:encoded><![CDATA[<p>Si pero, como creo una libreria por clase en [b]runtime[/b]..?<br />
mira, en AS2 se podia hacer algo parecido a esto :</p>
<p>class Character extends MovieClip{<br />
   static var symbolName:String = &#8220;__Packages.Character&#8221;;<br />
   static var symbolOwner:Function = Character;<br />
   static var symbolLinked = Object.registerClass(symbolName, symbolOwner);<br />
   static function __resolve(name){<br />
      return Character[name];<br />
   }<br />
   public function drawShape(w:Number, h:Number){<br />
      beginFill(0&#215;000000,100);<br />
      lineTo(0,h);<br />
        lineTo(w,h);<br />
        lineTo(w,0);<br />
      endFill();<br />
   }<br />
   public function getCoords(){<br />
      return [this._x, this._y]<br />
   }<br />
}</p>
<p>(El código es cortesía de <a href="http://www.cristalab.com," rel="nofollow">www.cristalab.com,</a> en especial de maikel).</p>
<p>  Ahi podías linkear dinámicamente un clip con una clase [permitiendome crear movieClips dinamicos y despues le linkeaba la clase del servicio ]&#8230; cosa que ahora no se como hacerlo con AS3,<br />
si este codigo fuera válido para AS3, de seguro ya funcionaria&#8230;. pero&#8230;:-(</p>
<p> Y si, despreocupa, que cuando encuentre algo optimo lo posteo sin falta por aca.!</p>
<p>salu2<br />
gracias por responer</p>
]]></content:encoded>
				</item>
</channel>
</rss>
