Comunidad de diseño web y desarrollo en internet online

Los paquetes no se pueden anidar

Citar            
MensajeEscrito el 28 May 2009 02:51 pm
Buenas, tengo un problema que me esta volviendo loco con unas clases de ActionScript y no se por donde cogerlo. Me da el sigiente error:

Los paquetes no se pueden anidar. [Generated code (use -keep to save): Path: C:\Documents and Settings\java\Escritorio\\Proyecto\workspaceFlex\Correo\flex_src\action\Carpetas.as, Line: 2, Column: 1]

El código de Carptas.as está bien SEGURO, además si elimino ese archivo me da error la siguiente clase, osea no es una cosa de archivo sino que es algo más gordo que ni entiendo.

Espero que a alguien le haya pasado lo mismo y me pueda decir cual es la solución.

He probado a crear las clases de nuevo, a crearlas con otro nombre, a cambiarlas de carpeta., hacer clean proyecto.. y nada.

No se por donde coger este error.

Gracias a todos!

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 03:41 pm
Si pusieras el codigo para verlo seria mas facil ayudarte.

Por el error que marca parece que intentas anidar paquetes en un mismo archivo (notese el enorme poder de deduccion) esto no se puede hacer por eso te tira el error.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 03:45 pm
¿Qué código quieres que ponga, el archivo actionScript del error? Te lo pongo, pero creo que no es ese el error. Si necesitas algún otro código pidelo que lo pongo, o si quieres una captura de pantalla para ver la estructura de carpetas o..., no he puesto el código al principio porque no creía que fuera eso, pero soy nuevo y puede que se me escape algo por muy simple que sea el código.

Código :

package action
{
   public class Carpetas
   {
      public function treeLoaded():void {
           xmlTree = XML(httpTree.lastResult.node);
           treeTree.dataProvider = xmlTree;
       }
   }
}

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 04:19 pm
Efectivamente a tu codigo no le veo nada malo, el problema deben ser tus paquetes solo que no se cual nunca me habia pasado algo parecido si alguien lee por aqui que nos heche una mano :oops:

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 06:23 am
Tiro "a bulto", ¿tienes algún "include Carpetas" en algún sitio? Recuerdo que debemos usar "import action.Carpetas", NO include.
(si es un tontería lo siento :()

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 07:36 am
Si esto es respondiendo a bulto ya se a quien acudir cuando necesite a alguien que afine, haha.

Me solucionó el problema lo del import! La verdad que lo puse porque en internet vi que alguien utilizaba include pero parece ser que no es así.

Muchas gracias!!!

PD: Están pensando en mejorar los errores para futuras versiones? Porque este ni me mandaba a donde estaba el error ni me explicaba nada.

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 08:35 am
La verdad es que puede parecer un poco lioso pero no lo es
Cuando usamos "import" podemos usar la/las Clase/s definidas en nuestro .as (así como los métodos de esas clases)

Cuando usamos "include" es "como si" escribiéramos el texto en nuestro .as (o en nuestra película)

Antes de que existieran Clases (bueno, siempre han estado ahí) y Packetes, era común tener una serie de funciones. Funciones que no pertenecían a ninguna Clase (cuando son de una clase las llamamos "métodos"). También se tenían "prototipos".

Vamos con un ejemplo simple:
ANTES era común tener en un .as algo como

Código ActionScript :

//una función
function bisiesto(anio){
    return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
//o un prototipo
Date.prototype.getDifference = function()
{
   var difference, endDate, retObj, endTime;
   endDate = new Date();
   endDate.setHours(arguments[0])
   endDate.setMinutes(arguments[1]);
   endDate.setSeconds(arguments[2]);
   endDate.setFullYear(arguments[3]);
   endDate.setMonth(arguments[4]);
   endDate.setDate(arguments[5]);
   endTime = endDate.getTime();
   retObj = new Object();
   difference = endTime-this.getTime();
   retObj.time = difference;
   retObj.days = Math.round(difference/86400000);
   retObj.hours = Math.floor((difference-(retObj.days*86400000))/(3600000))
   retObj.minutes = Math.floor((difference-(retObj.days*86400000)
                           -(retObj.hours*3600000))/(60000))
   retObj.seconds = Math.floor((difference-(retObj.days*86400000)
                           -(retObj.hours*3600000)
                           -(retObj.minutes*60000))/(1000))
   return retObj;   
}

usábamos entonces un bonito "include" para poder usar la función bisiesto o para saber la diferencia entre dos fechas.

Código ActionScript :

include "fichero.as"
//simplemente llamamos a la función
var es_bisiesto=bisiesto(2009)

trace("¿el 2009 es Bisiesto?"+es_bisiesto)


AHORA las cosas han cambiado y nos hacemos una Clase, estática o no, y creamos métodos

Código ActionScript :

package fechas{
    public Class Utils {
            public function Utils(){
            }
            public function bisiesto(anio:Number):Boolean{
                  return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
            }
   }
}

y nuestro "as" se complica

Código ActionScript :

import fechas.Utils;  //<--lo que hacemos es "importar"

//creamos una instancia de la Clase "Util"
var util:Util=new Util();

//usamos un método de la Clase "Util"
var es_bisiesto:Boolean=util.bisiesto(2009)

trace("¿el 2009 es Bisiesto?"+es_bisiesto)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 08:43 am
Perfecto! Entendido

Muchas gracias eliseo2

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 09:15 am
He dicho que lo he entendido pero hago algo mal. Aquí te pongo el .as y el componente que lo carga.

Código :

package action
{
   public class Carpetas
   {
      public function Carpetas() {}
      
      public function treeLoaded():void {
           xmlTree = XML(httpTree.lastResult.node);
           treeTree.dataProvider = xmlTree;
       }
   }
}


Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="httpTree.send()" xmlns:class="action.*" x="9.1" y="165.1" width="203.93939" height="371.0606" cornerRadius="15">
   <mx:Script>
      <![CDATA[
         import action.Carpetas;

         var arbol:Carpetas = new Carpetas();

      ]]>
   </mx:Script>
   
   <mx:XML id="xmlTree"/>
   
   <mx:HTTPService id="httpTree" url="xml/Arbol.xml" resultFormat="e4x" result="arbol.treeLoaded"/>
   <mx:Tree id="treeTree" dataProvider="{httpTree}" showRoot="false" labelField="@label"  x="36.5" y="197"/>
</mx:Panel>   


Este error si que tiene que ser una tontería pero no lo veo.

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 09:54 am
Me has pillado porque de Flex sé lo "justito" (menos que lo justito) :(

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 May 2009 11:11 am
No pasa nada, ya has hecho suficiente con este tema.

A ver si algún otro me puede guiar un poco con el problema.

Gracias

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Nov 2009 05:34 pm
El último ejemplo que has puesto es correcto, normalmente el anidamiento lo da cuando haces un include en lugar de un import utlizas <fx:Script source="filename">
Puedes dar mas información

Por Sphria

0 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.