Comunidad de diseño web y desarrollo en internet online

no me reconoce la clase

Citar            
MensajeEscrito el 17 Mar 2013 12:46 pm
Algo tan simple que a la hora de compilar no me reconoce una clase propia. Me da a entender que es un problema del compilador de AS3.

-He comprobado cientos de veces que lo he importado correctamente.
-Que el nombre de la clase está correctamente
-Que al crear la variable está todo escrito correctamente
-Que no hay nada mal escrito en ninguna parte

Tengo varias clases propias importadas pero en el caso de esta a la hora de crear la variable no la quiere reconocer.

-Tambien he probado a borrar el .swf por si acaso
-Ha reescribir la clase
-Ha compilar sin dicha variable para que compile bien y despues recompilar con ella.

Gracias por la posible ayuda.

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2013 04:42 pm
Pocos datos das, apañero. Si pones un trozo de código de llamada, mejor.

De todas formas, si lo no te reconoce de la clase es exactamente esa variable, es probablemente porque estará private o sin nada (que por defecto es private).

Imagina que esta es la clase externa, y que la guardas en src.clases

Código ActionScript de la clase :

Código ActionScript :

package src.clases.Elementos {
   public class ElementoGenerico extends MovieClip {
   
      //Las variables de clase
      private var numero1:uint=1; //sólo la reconoce la clase desde dentro
      var numero2:uint=2;            //sólo la reconoce la clase desde dentro
      public var numero3:uint=3;   //la reconoce cualquier elemeto que importe esta clase
      public var numero4:uint=4;   //la reconoce cualquier elemeto que importe esta clase
      
      public function ElementoGenerico() {   
         //Constructor code
      }         

}//Fin de clase
}//Fin de package


Si en otro sitio del programa quieres llamar a esa clase, tendrás que hacer

Código ActionScript :

import src.classes.ElementoGenerico;

var ClaseDeSuma:uint:ElementoGenerico=new ElementoGenerico;

private var sumando1=ClaseDeSuma.numero1; //dara error, no es pública en la clase
private var sumando2=ClaseDeSuma.numero2; //dara error, no es pública en la clase
private var sumando3=ClaseDeSuma.numero3; //Correcto, es pública en la clase
private var sumando4=ClaseDeSuma.numero4; //Correcto, es pública en la clase

//y la llamas así
var sumaTotal:uint=sumando3+sumando4;
trace(suma); //El resultado será 7;



Saludos
Javier

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 17 Mar 2013 05:20 pm
gracias por responder, y siento no poner código ni tanta info, pero cada vez que lo hago nadie me responde, preferí resumir todo lo que pude.

Aquí parte del código:

en el frame:

Código ActionScript :

import IllGame.enemy.boss.*;
var flup: Flup;


clase Flup:

Código ActionScript :

package IllGame.enemy.boss{
   import flash.display.MovieClip;
   
   public class Flup extends MovieClip{
      public function Flup(){
      }
   }
}


Y en la biblioteca de flash tengo creado un MovieClip exportado a una clase la cual es:

Código ActionScript :

IllGame.enemy.boss.Flup


como dije, he repasado varias veces el código y no veo falla alguna.

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2013 11:50 pm
prueba de momento a quitarle el .* al import, y como segundo var flup:Flup,darle un tipo e inicializarla
(seiempre diciendote lo mismo: NO tengo ni diea de qué hace Flup().

var Flup:Object=new Object (por ejemplo)

tras hacer eso , intenta hacer un casting desde tu funcion, del tipo trace(Flup), que te debe dar cualquier cosa excepto null.

Pero repito.Necesito más datos.

Javier

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 17 Mar 2013 11:53 pm
De todas formas, no sé qué dirán los compañeros, pero yo personalmente ME NIEGO a poner código en los frames, que no sea stop();

Al poner código en los frames, dependes de sucesos asíncronos de carga, quiero decir que hasta que no se haya cargado el frame, tu variable puede que exista, puede que no

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 18 Mar 2013 02:40 am
como es la estructura de archivos de tu proyecto? y como esta la configuracion de actionscript(ruta de archivos .as)?


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome
Citar            
MensajeEscrito el 18 Mar 2013 08:36 am
Se rifa un ban de Cristalab, y el afortunado eeeeees.
xDDDDD

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 18 Mar 2013 09:45 am
nuevamente gracias por intentar nuevamente en ayudarme.

exekiel21 escribió:

como es la estructura de archivos de tu proyecto? ...

si creo entenderte:
El .fla está en una carpeta cualquiera,

GAME

dentro de esta carpeta están todas las clases principales y otra serie de subcarpetas

GAME
---IllGame (más subcarpetas y clases principales)

dentro de IllGame está la carpeta que nos interesa, la de los enemigos

GAME
---IllGame
------enemy
(clases de enemios básicos y otra subcarpeta para los boss)

y finalmente la carpeta de los bosses donde está nuestro .as

GAME
---IllGame
------enemy
---------boss

------------Flup.as

exekiel21 escribió:

... y como esta la configuracion de actionscript(ruta de archivos .as)?


lamento mucho mi ignorancia, pero no sé a que te refieres exactamente :s

TheMagoZero escribió:

prueba de momento a quitarle el .* al import,...


lo he puesto en modo:
import IllGame.enemy.boss.Flup

sigue sin reconocerlo.

TheMagoZero escribió:


y como segundo var flup:Flup,darle un tipo e inicializarla
...
tras hacer eso , intenta hacer un casting desde tu funcion, del tipo trace(Flup), que te debe dar cualquier cosa excepto null.

si intento hacer el casting, como siempre me dice que no sabe que es Flup, ya que no reconoce la clase.




TheMagoZero escribió:


(seiempre diciendote lo mismo: NO tengo ni diea de qué hace Flup().
.
.
.
Pero repito.Necesito más datos.


intentaré dar toda la info que pueda, pero el resto es irrelevante. El programa ciertamente es más grante, pero dudo que te interesen las otras 75 clases, que enciman no interfieren en un principio con Flup. Respecto a lo que hace Flup, de momento el códio que te pasé de él es todo lo que tiene, vamos, que es una clase más bien vacia (al menos en un principio). Pero por si acaso trataré de darte algo más de información:

(quise meter este "chapute" en spoilers, pero parece que no están activados o no sé hacerlos => [spoiler][/spoiler] [spoilers][/spoilers]
________________________________________
========================================
________________________________________


Ahí encontramos los dos frames más relevantes para esto:


Código Frame A (Azul):

Código ActionScript :

import IllGame.*;
import IllGame.enemy.*;
import IllGame.enemy.boss.Flup;
import IllGame.infection.Infection;
import IllGame.pill.*;
import IllGame.hotkeys.*;
import IllGame.hotkeys.cursors.*;
import IllGame.events.UpgradeDoneEvent;
import IllGame.events.AchievementEarnedEvent;
import flash.events.ContextMenuEvent;
import flash.events.KeyboardEvent;
import flash.net.SharedObject;
import flash.net.registerClassAlias;
import flash.ui.ContextMenu;


//constantes
const VIDEO_AND_NEW_GAME:int=2;
const LANGUAGE:int=3;
const MENU:int=4;
const LEVEL_MENU:int=5;
const TUTORIAL:int=6;
const PRELEVEL:int=7;
const PREBOSS:int=8;
const LEVEL:int=9;
const FLUP_ESPECIAL_LEVEL:int=10;
const ACHIEVEMENTS:int=11;
const ENEMIES_INFORMATION:int=12;
const UPGRADES:int=13;
const OPTIONS:int=14;
const CREDITS:int=15;
const DATA_ERASE:int=16;


//variables globales
var cookie:SharedObject = SharedObject.getLocal("GameSaved");
var language:Language;
var achievementsController:AchievementsController = new AchievementsController();

var dispatcher:Dispatcher=Dispatcher.getInstance();



//************************INITIAL PRESETS************************//

var myMenu:ContextMenu = new ContextMenu();
myMenu.hideBuiltInItems();

this.contextMenu = myMenu;



Código Frame B (Rojo):

Código ActionScript :

stop();

var gameclock2:GameClock;

gameclock2 = GameClock.getInstance();
gameclock2.initialize(this);


var global2:Global=Global.getInstance();
global2.anti_inflammatoryUsed=0;
global2.anestheticUsed=0;
global2.antibioticUsed=0;
global2.suppositoryUsed=0;

dispatcher.addEventListener(Dispatcher.TICK_EVENT, eFrame2);
stage.addEventListener(Event.DEACTIVATE, flashDeactive2);

var infections2:Sprite = new Sprite();
var vaccines2:Sprite = new Sprite();
var aspirinPills2:Sprite=new Sprite();
var aspirinBullets2:Sprite=new Sprite();
var pills2:Sprite = new Sprite();
//----------------------------------------------------------
//-------------------------------------------------------------------------------------AQUÍ ESTÁ EL CULPABLE-----------
var flup: Flup;
//-------------------------------------------------------------------------------------AQUÍ ESTÁ EL CULPABLE-----------
//----------------------------------------------------------
var globulo2:Globulo=new Globulo();
var specHot2:Sprite = new Sprite();
var hotkeys2:Sprite = new Sprite();
var hkBar2:HotkeysBar;
const LEVEL_PLAYED:int=10;
var points2:Points=Points.getInstance();


var health2:Health=new Health(100+(cookie.data.upgradeHealth*50));

var pauseWindow2:PopUp;


infections2.name="spr_infect";
stage.addChildAt(infections2,1);
vaccines2.name="spr_vaccine";
stage.addChildAt(vaccines2,2);
pills2.name="spr_otherpills";
stage.addChildAt(pills2,3);
aspirinBullets2.name="spr_bullet";
stage.addChildAt(aspirinBullets2,4);
aspirinPills2.name="spr_pills";
stage.addChildAt(aspirinPills2,5);
//flup.name="spr_flup";
//stage.addChildAt(flup,6);



globulo2.name="spr_globulo";
stage.addChild(globulo2);
stage.addChild(specHot2);
stage.addChild(hotkeys2);
stage.addChild(health2);
stage.addChild(points2);


hkBar2=new HotkeysBar(hotkeys2,specHot2,10);

function flashDeactive2 (event:Event):void{
    if (!gameclock2.isPaused() && cookie.data.extraPause) gameclock2.pauseGame();
}

function eFrame2(e:Event):void {
   if (health2.getHealth()>0) {
   } else {
      levelEnd2();
   }
}

function levelEnd2():void {
   if (cookie.data.currentLevel==LEVEL_PLAYED && health2.getHealth()>0 && cookie.data.currentLevel<34) {
      cookie.data.currentLevel++;
      cookie.data.skillPoints+=LEVEL_PLAYED*10;
   }else if(health2.getHealth()>0){
      cookie.data.skillPoints+=LEVEL_PLAYED*10;
   }
   cookie.data.skillPoints+=int(points2.getPoints()/1000);
   for (var i:int=infections2.numChildren-1; i>=0; i--) {
      Infection(infections2.getChildAt(i)).cured();
   }
   
   
   //stage.removeChild(flup);
   stage.removeChild(infections2);
   stage.removeChild(pills2);
   stage.removeChild(aspirinPills2);
   stage.removeChild(aspirinBullets2);
   stage.removeChild(vaccines2);
   stage.removeChild(specHot2);
   stage.removeChild(hotkeys2);
   stage.removeChild(health2);
   stage.removeChild(points2);
   hkBar2.killAll();
   globulo2.kill();
   //flup.kill();
   dispatcher.removeEventListener(Dispatcher.TICK_EVENT, eFrame2);
   stage.removeEventListener(Event.DEACTIVATE, flashDeactive2);
   gameclock2.deleteEvents();
   cookie.flush();
   
   
   ///////////////////////
   push.removeEventListener(MouseEvent.CLICK,level2EndFIU);;
   ///////////////////////
   
   
   gotoAndPlay(LEVEL_MENU);
}


Y como dije, la clase Flup por ahora es tal cual la ves, pero si quieres saber más de ella:
-es un Boss de un juego que estoy haciendo
-se le añadirá una clase de movimiento
-se encargará de gestionar sus 4 tentáculos
-será el único enemio en pantalla
-...

no sé si necesitas más información, o si quieres algo especifico, siento no haber podido darte lo que necesitas :s
________________________________________
========================================
________________________________________



TheMagoZero escribió:

De todas formas, no sé qué dirán los compañeros, pero yo personalmente ME NIEGO a poner código en los frames, que no sea stop();

Al poner código en los frames, dependes de sucesos asíncronos de carga, quiero decir que hasta que no se haya cargado el frame, tu variable puede que exista, puede que no


en un principio lo intenté de esa manera, pero se me complicaba mucho la cosa, siendo que lo intenté cuando sabía más bien 0 de AS3. Despues encontré lo de poder trabajar en los frames y me facilitaba mucho el trabajo y se me quedaba tambien ordenado. El problema es que tutoriales de juegos en AS3 lo considero nulo, todo el mundo hace el mismo juego (el tipico de una nave que dispara y vienen enemigos de frente o de lado) y de la manera más simple posible, a si que poco ayudan. Nadie hace algo realmente coplejo que abarque casi todo lo que necesitarías, supongo que con práctica iré mejorando. De momento no sabría hacer de manera simple lo que me pides, aunque sea fácil.

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Mar 2013 03:05 pm

TheMagoZero escribió:

Se rifa un ban de Cristalab, y el afortunado eeeeees.
xDDDDD


arreglado :)

saludos!

Por Mariux

BOFH

7756 de clabLevel

28 tutoriales
15 articulos

Genero:Femenino   Héroes Editores

Diseñadora & ilustradora

chrome
Citar            
MensajeEscrito el 18 Mar 2013 03:47 pm
cuéntanos cómo lo hiciste :)

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 18 Mar 2013 04:53 pm

Mariux escribió:

TheMagoZero escribió:

Se rifa un ban de Cristalab, y el afortunado eeeeees.
xDDDDD


arreglado :)

saludos!


Por cierto, lo del ban era para el de la publi xD

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 18 Mar 2013 04:53 pm

TheMagoZero escribió:

cuéntanos cómo lo hiciste :)


creo que te has equivocado xD ese "arreglado" es de un administrador refiriendose que ha arreglado lo de ese usuario que ha spameado. Mi problema sigue en pie

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Mar 2013 03:40 pm
aaaaa xD xD

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 19 Mar 2013 03:43 pm
weno pos seguimos xD

prueba a inicializar Flup con algo

----------------AQUÍ ESTÁ EL CULPABLE-----------
var flup: Flup = new Flup;

y me cuentas, pero sobre todo cuenta QUE error te da, que no me he enterado todavía xD

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 20 Mar 2013 12:22 pm
ya pensé que se habían olvidado del post a causa del error xD y nuevamente gracias por tu insistencia ^^

Lo que mencionas esta vez es como lo tenía en un principio, pero eso me daba dos fallos en lugar de uno, a si que quité el "new Flup()" para tener solo uno. Igualmente, aquí están los fallos:

Código ActionScript :

var flup: Flup


1180: Call to a possibly undefined method Flup.


Código ActionScript :

var flup: Flup= new Flup()


1046: Type was not found or was not a compile-time constant: Flup.
1180: Call to a possibly undefined method Flup.

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 Mar 2013 11:04 am
Me sigo temiendo que cuando incovas a Flup desde el frame, éste no ha sido cargado aún.
Ten en cuenta (a mí me pasaba y me desesperaba como un crío) que en flash hay varios sucesos asíncronos, es decir que el programa sigue su curso (síncrono) mientras estás "cargando cosas" (asíncronas). Puedes intentar poner un timer de espera o un evento enterFrame para esperar uque el frame se cargue totalmente.

No olvides eliminar esos listeners tras la carga, o te encontrarás con un potaje de listeners activos que pueden hacer que tu programa se vuelva un monstruo.

Ya me cuentas, y repito: NO pongas código en los frames siempre que puedas (es una opinión personal)

Saludos

Javier

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 28 Mar 2013 05:44 pm
muchas gracias por tu ayuda ^^

El problema FINALMENTE ha sido resuelto, parece ser que tenia fuera del plano creado una instancia del MovieClip asociado a la clase Flup y eso más lo que dices del código en los frames crearía algo raro haciendo que no me reconociese la clase. Una vez borrado ese MovieClip me reconocía la clase.

Y lo del código en los frames, para el sigueinte proyecto (esta ya está avanzadillo como para cambiar tantas cosillas... xD) lo intentaré, a ver como me apaño.

Nuevamente, muchas gracias por tu ayuda ^^

Por zarton

9 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 Mar 2013 08:19 pm
P'a eso está cristalab, para intentar ayudar, compi :)
Suerte

Javier

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

firefox
Citar            
MensajeEscrito el 29 Mar 2013 06:57 pm
Que pesaditos con la publi

Se rifa otro ban xD

Por TheMagoZero

41 de clabLevel



 

Ingeniero Técnico Industrial

safari

 

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