Comunidad de diseño web y desarrollo en internet online

Como puedo cambiar el nombre de clase en funcion de una ct

Citar            
MensajeEscrito el 22 Ene 2010 06:18 pm
Mi pregunta es --> tengo varias clases de tipo Pak1.as, Pak2.as, Pak3.as ... y tengo un fichero fla en el que tengo una variable

Código ActionScript :

var akat:Pak1=new Pak1();  

tengo otra variable que se llama contador

Código ActionScript :

var contador:uint=1;

en vez de poner

Código ActionScript :

var contador:uint;
if(contador==1){
var akat:Pak1=new Pak1(); 
}
if(contador==2){
var akat:Pak2=new Pak2(); 
}
if(contador==3){
var akat:Pak3=new Pak3(); 
}

se podria poner de otra forma? ya que es muy engorroso si tengo hasta Pak548.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 22 Ene 2010 09:53 pm
Puedes hacer algo como esto:

Código ActionScript :

import flash.utils.getDefinitionByName;

var pakClass:Class = getDefinitionByName("Pak" + contador) as Class;
var akat:pakClass = new packClass();

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Ene 2010 08:28 am
No me funciona me da error en la linea de packClass.

Código ActionScript :

import flash.utils.getDefinitionByName;  
var contador:uint=1;
var nuz:uint;
var capa1:Sprite = new Sprite();
var capacode:Sprite = new Sprite();
var capa3:Sprite = new Sprite();
var varan:uint = new uint();
varan = (Math.floor((3*Math.random())))+nuz;
var packClass:Class = getDefinitionByName("L1C1F1O1S1T1D1N" + contador) as Class; 
var akat:packClass = new packClass(varan);    ////me da error 
////1046: Type was not found or was not a compile-time constant: packClass.
.......................................................
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,


el archivo L1C1F1O1S1T1D1N1.as es por ejemplo:

Código ActionScript :

package{
   public class L1C1F1O1S1T1D1N1 {
      public var cadena:Array;
      public var cadenamv:Array;
      public var cadenacx:Array;
      public var cadenacy:Array;
      public var cadena0:String ="Vaig trobar aquell home malgeniut especialment rabiut i em va deixar molt amoinat. La seua mirada traslluia ambiguitat. I no era la primera vegada: ja l’havia vist en diferents ocasions arruinar la continuitat dels projectes del nostre veinat. Alguns el consideraven un traidor; alguns altres deien que la seua vacuitat tenia l’origen en la seua viduitat. Perquè la seua dona havia sigut una heroina diurna de força increible, però el consum de cocaina li va produir transtorns esfereidors i un decaiment generalitzat que li va malmetre la força. Ell, amb la pruija de salvar-la, encara ho va empitjorar tot, perquè la va aillar i això va provocar el suicidi de la dona.";
      public var cadena0mv:String ="iüüiïuïüiiïuïïïiuuïiuuïuiïüïïiïïïïï";
      public var cadena0cx:Array =[40,379,61,200,335,449,90,171,181,70,460,80,90,420,244,469,70,130,140,220,420,482,492,146,260,438,502,162,448,70,298,491,80,160,460];
      public var cadena0cy:Array =[61,61,79,79,79,79,97,97,97,115,115,133,133,133,151,151,169,169,169,169,169,169,169,187,187,187,187,205,205,223,223,223,259,277,277];
      public var cadena1:String ="La cocaina i l'heroina el van aillar i arruinar fins al punt de pensar en el suicidi. Això va produir que la seua mare tingues un petit decaiment i alhora va deixar amoinat un rabiut i malgeniut pare.Vaig pensar que el veinat amb ambiguitat ja l'havia criticat amb esfereidores paraules. I es així com en la continuitat del temps arribes la mort del pare i es així com va fer que la seua mare ho suportes amb viduitat. El seu increible talent traslluia serenor tot i que la seva ment no era gens diurna, aguantava les hores que tenia amb la seva mare fins que la pruija de drogar-se va fer matar-la com si fos un traidor.";
      public var cadena1mv:String ="ïïïïïiuïiïiüiüïüiiïuïuuïïïüuiuïï";
      public var cadena1cx:Array =[90,209,330,450,280,480,72,367,40,130,260,271,400,411,206,364,373,521,210,112,121,308,51,60,245,439,391,472,202,41,50,50];
      public var cadena1cy:Array =[61,61,61,61,79,79,97,97,115,115,115,115,115,115,133,133,133,133,151,169,169,187,205,205,205,205,223,223,242,259,259,277];
      public var cadena2:String ="La viduitat de la seua filla el va deixar amoinat amb un decaiment esfereidor que tralluia la increible continuitat del seu aillament. Amb l'heroina com única amiga diurna i la cocaina la seva acompanyant de nit va produir la pruija de la seva filla que l'havia suportat. Es llavors quan es va arruinar, tot i que s'ho prengué amb ambiguitat de tot el que deien en el veinat. La seva filla el va trair, quan decidí que tenia que desintoxicar-se. Això provocà un malgeniut i rabiut síndrome d'abstinència que el va fer portar al suicidi. I es quan vaig pensar que la seua filla havia de parlar.";
      public var cadena2mv:String ="uïuiïïïuïïuïïïüïuiïiïüiiïiiüüuïiui";
      public var cadena2cx:Array =[84,93,234,417,501,160,295,466,475,70,197,206,394,80,321,475,342,351,446,224,92,492,501,187,313,80,310,296,416,419,428,90,281,400];
      public var cadena2cy:Array =[61,61,61,61,61,79,79,79,79,97,97,97,97,115,115,115,133,133,133,151,169,169,169,187,187,205,205,223,223,242,242,259,259,259];
      public var cadenastringcx:Array;
      public var cadenastringcy:Array;
      public var cadenastringmv:String;
      public var stringer:String ="";
      public var nume:uint;
      public function L1C1F1O1S1T1D1N1 (nume:uint=0){
      ////////////////////////////como seran las cadenas en la funcion L1C1.....
      cadena = new Array ();
      cadenamv = new Array ();
      cadenacx = new Array ();
      cadenacy = new Array ();
      /////////////////////////////intro de las variables a las cadenas globales
      cadena.push (cadena0);
      cadenamv.push (cadena0mv);
      cadenacx.push (cadena0cx);
      cadenacy.push (cadena0cy);
      cadena.push (cadena1);
      cadenamv.push (cadena1mv);
      cadenacx.push (cadena1cx);
      cadenacy.push (cadena1cy);
      cadena.push (cadena2);
      cadenamv.push (cadena2mv);
      cadenacx.push (cadena2cx);
      cadenacy.push (cadena2cy);
      /////////////////////////////definicion de la variable dentro del constructor
      this.nume = nume;
      //////////////////////////////equivalencia de variables
      stringer = cadena[nume];
      cadenastringmv = cadenamv[nume];
      cadenastringcx = cadenacx[nume];
      cadenastringcy = cadenacy[nume];
            
      }
   }
}

Por lo visto me reconoce la nueva clase pero no su variable, es curioso porque cuando acoto a la posibilidad de asignar solo a L1C1F1O1S1T1D1N1

Código ActionScript :

var nuz:uint;
var capa1:Sprite = new Sprite();
var capacode:Sprite = new Sprite();
var capa3:Sprite = new Sprite();
var varan:uint = new uint();
varan = (Math.floor((3*Math.random())))+nuz;
trace(varan);
trace (nuz);
var akat:L1C1F1O1S1T1D1N1 = new L1C1F1O1S1T1D1N1(varan);
var texte:String;

el tema funka puta madre, pero con tu idea por lo visto le falta alguna cosa de todas maneras es buena idea y seguire investigando hasta que encuentre una solucion o alguien me de una solucion que funke.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 08:34 am
Aukun es que debería ser (creo)

Código ActionScript :

var akat:Object = new packClass(varan);

Vamos, akat es una variable de tipo Object

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2010 08:37 am
parece como si solo se pudiera utilizar en los Timers esa opcion de conseguir nombre de clase en funcion de variables. sigo investigando, si mas no esa opcion reducira mucho el codigo. A ver si tengo suerte y encuentro algo.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 08:45 am
claro todo son objetos, el tema es que dando esa opcion me reconoce L1C1F1O1S1T1D1N1 como una variable no como una clase el codigo que he puesto es el siguiente:

Código ActionScript :

import flash.utils.getDefinitionByName;  
var contador:uint=1;
var nuz:uint;
var varan:uint = new uint();
varan = (Math.floor((3*Math.random())))+nuz;
var packClass:Class = getDefinitionByName("L1C1F1O1S1T1D1N" + contador) as Class; 
var akat:Object = new packClass(varan);  
var capa1:Sprite = new Sprite();
var capacode:Sprite = new Sprite();
var capa3:Sprite = new Sprite();
var texte:String;
//.........................................
//.................mas mil lineas mas pero el error que me da es
//ReferenceError: Error #1065: No se ha definido la variable L1C1F1O1S1T1D1N1.
//   at global/flash.utils::getDefinitionByName()
//   at dieresis_fla::MainTimeline/frame1()

Por lo que voy a definir variable a ver que sale

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 08:51 am
y si definiera un String como una nueva clase? a ver voy a poner una idea descabellada a ver si funka.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 09:05 am
La pregunta se reduce a como hacer que un string se convierta en una clase typeando el nombre de ese String no su valor string.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 11:57 am
El motivo (y la solución) está aquí
Necesitas declarar al menos una variable con ese tipo de clase. El motivo es que si no, el compilador no incluirá la clase en el .swf. Así que, me temo vas a tener que "hincharte" a escribir

Código ActionScript :

private var tmp1:L1C1F1O1S1T1D1N1;
private var tmp2:L1C1F1O1S1T1D1N2;
....

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2010 03:56 pm
no!!! si se hace rapido con word i excel y un poco de copia,borra,corta,pega, pinta y colorea eso es rapido lo unico que molesta es la cantidad de memoria que va a ocupar el archivo.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 25 Ene 2010 04:52 pm
No ocupa memoria puesto que las variables valen "null" (Bueno, sí ocupa memoria por el número de variables, pero no es preocupante)
No sé si valdrá -supongo que sí- que las variables sean temporales -pero ya te digo que no debe preocuparte:una variable ocupa lo que ocupa -4 u 8 bytes-.
Si quieres prueba a declararlas en una función que no haga nada

Código ActionScript :

function declarar():void
{
var tmp1:L1C1F1O1S1T1D1N1; 
var tmp2:L1C1F1O1S1T1D1N2; 
}

ni tan siquiera la tienes que llamar -es sólo un "problema del compilador"-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2010 07:13 pm
@Eliseo2 tiene razón, el tipeo debe ser a Object o al menos a la clase que tienes extendida tu subClase. Ahora @aukun, si ya has cambiado esto y todavía te sigue dando el error, lo que te debe suceder es que importas la clase pero no hay ninguna referencia a esta dentro del código por lo que el getDefinitionByName falla (Es un bug bastante molesto). Normalmente lo que se hace para resolverlo es declarar una variable con el tipo de la clase que vas a obtener con getDefinitionByName, aunque en tu caso que tienes un sinnúmero de clases a importar seguirá siendo un problema.

Por simple curiosidad. ¿Que estás intentando hacer que necesitas tantas clases? Me parece un método bastante prolijo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Ene 2010 07:14 pm
Perdón, veo que ya había sido repondida mi sugerencia.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 27 Ene 2010 01:19 pm
el problema esta solucionado pero lo he hecho de diferente manera:

Código ActionScript :

var lev:uint;  ///es la variable que va a ir cambiando
var akat:Object;
var toke:Object=new leveli(lev); ///leveli es la clase que va a dar tipo de clase a toke
akat=toke.tok;//akat cojera el tipo de objeto que sera toke en funcion de tok


y el fichero que me va ir cambiando de clase sera leveli.as:

Código ActionScript :

package{
   public class leveli {
      public var numleveli:uint;
      public var tok:Object;
      public var nukle:uint;
      public function leveli(numlevelio:uint=0){
         numleveli=numlevelio;
         if (numleveli==0){
            var tok0:Object=new L1C1F1O1S1T1D1N1();
            nukle=1;
            tok=tok0;
         }
         if (numleveli==1){
            nukle=2;
            var tok1:Object=new L1C1F1O1S1T1D1N2();
            tok=tok1;
         }
         if (numleveli==2){
            nukle=3;
                                                                var tok2:Object=new L1C1F1O1S1T1D1N3();
            tok=tok2;
         }
      }
   }
}

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 27 Ene 2010 01:26 pm
Por lo ke akat tendra las propiedades L1C1F1O1S1T1D1N1, L1C1F1O1S1T1D1N2 o L1C1F1O1S1T1D1N3 en funcion de lev .
No consigo rular bien vuestra opcion (aunque creo que es mejor), la que propongo es un cuento de la lechera y va ocupar un poco mas pero me rula. de todas maneras thanks.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 27 Ene 2010 01:54 pm
es un programa de nivelacion de conocimiento y es bastante tedioso, por que la cantidad de informacion es brutal, aki el portal ( http://urutsuk.zobyhost.com/lg.html) que estan cerrados los links, pero podeis ver algunos ejemplos por ejemplo el de dieresis en http://urutsuk.zobyhost.com/L1C1F1O1S1T1D1.html. tambien lo hago en castellano y ingles. Me parecio una manera de suplementar la escuela y la universidad o sustituir la escuela e instituto, de momento presente algo en google proyectos pero mis conocimientos sobre programacion aunque cada dia son mas estoy años luz de hacer algo realmente bueno, por lo que no he recibido contestacion.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 27 Ene 2010 01:58 pm
perdon es sin el punto
http://urutsuk.zobyhost.com/L1C1F1O1S1T1D1.html

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

msie7

 

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