Comunidad de diseño web y desarrollo en internet online

ambito/alcance desde las clases (ayuda)

Citar            
MensajeEscrito el 03 Abr 2005 12:04 pm
Buenas a todos, estoy metiendome en as 2.0 con las clases y aunque mas o menos ya comprendo su uso sigo haciendome un lio con las rutas quisiera si alguien fuera tan amable iciera un tutorial que explicara un poco como acceder a funciones que estan dentro de la funcion constructora, desde dentro de un onEnterFrame y desde fuera, tmb desde dentro de otra funcion que este dentro de la funcion constructora etc..
aqui os pongo un ejemplo en el que estoy liado y me quedao atrancado por culpa de no entender el alcance de las rutas desde las clases, en este codigo vereis un onenterframe que se destruye en el momento que se carga una imagen, cuando se carga la imagen quiero llamar a la funcion createTxt() desde dentro del onEnterFrame,quiero saber como pero tmb el porque para entendeerlo y poder sacar las rutas por mi mismo un saludo y gracias :P

class icono2 {
private var _icoPathCreate:MovieClip;
private var icoMc:MovieClip;
private var icoMcImg:MovieClip;
private var icoMcTxt:MovieClip;
private var icoName:String;
private var icoDepth:String;
private var icoPosX:Number;
private var icoPosY:Number;
private var icoTxtLabel:String;
private var icoPathImg:String;
private var icoPathAply:String;
private var cargado:Number = 0;
function icono2(_icoPathCreate, icoName, icoPosX, icoPosY, icoTxtLabel, icoPathImg, icoPathAply) {
this._icoPathCreate = _icoPathCreate;
this.icoName = icoName;
this.icoDepth = icoDepth;
this.icoPosX = icoPosX;
this.icoPosY = icoPosY;
this.icoTxtLabel = icoTxtLabel;
this.icoPathImg = icoPathImg;
this.icoPathAply;
this._icoPathCreate.createEmptyMovieClip(this.icoName, this._icoPathCreate.getNextHighestDepth());
this.icoMc = this._icoPathCreate[this.icoName];
this.icoMc.createEmptyMovieClip("icoMcVisorImg", this.icoMc.getNextHighestDepth());
this.icoMc._visible = false;
this.icoMcImg = this.icoMc["icoMcVisorImg"];
this.icoMc.thisObjectPath = this; //<<-- esta cosa ya me costo de comprender -_- this.icoMcImg.loadMovie(this.icoPathImg);
this.icoMc.onEnterFrame = function() {
this.cargado = (this.thisObjectPath.icoMcImg.getBytesLoaded()*100)/(this.thisObjectPath.icoMcImg.getBytesTotal());
if (this.cargado>=100) {
this.thisObjectPath.icoMc._visible = true;
this.thisObjectPath.createTxt(); //<< desde aqui quiero ejecutar la funcion createTxt();
//y se que se puede hacer asi pero solo si la funcion se encuentra fuera del contructor
//yo quiero poder ejecutar dicha funcion dentro de la funcion constructora.
delete this.onEnterFrame;
}
};
//End onEnterFrame
function createTxt() {
trace(this);
trace("funcion activada");
var txtPosX = -13;
var txtPosY = 0+this.icoMcImg._height;
var txtWidth = this.icoMcImg._width+26;
var txtHeight = 34;
this.icoMc.createTextField("icoTxtLabel", this.icoMc.getNextHighestDepth(), txtPosX, txtPosY, txtWidth, txtHeight);
this.icoMcTxt = this.icoMc["icoTxtLabel"];
with (this.icoMcTxt) {
multiline = true;
wordWrap = true;
border = false;
autoSize = true;
type = "input";
myformat = new TextFormat();
myformat.color = 0xCCCCCC;
myformat.bullet = false;
myformat.align = "center";
myformat.underline = false;
myformat.size = 10;
myformat.font = _serif;
myformat.bold = false;
borderColor = 0xCCCCCC;
text = this.icoTxtLabel;
setTextFormat(myformat);
}
}
//End createTxt

}
//End function icono2 (constructor)
}

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 03 Abr 2005 01:57 pm
Si me ayudan a entender un poco esta duda prometo hacer un buen tutorial con ejemplos de lo que toy haciendo cuando lo termine, espero que sirva para motivar vuestra ayuda :P

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 03 Abr 2005 05:02 pm
unn n1o puedes esperar que en dos horas resolvamos tus dudas y menos cuando pegas una chorrada de codigo sin formato ni nada, es decir, yo vi el mensaje a eso de la 1 [hora española] pero eso de que no este tabulado ni nada.... pues en fin ... que sinceramente se me hace dificil ver lo que hay, ni espacio ni tabulaciones ni nada... kizas si le das algo de lo que te digo y pones un poko mas clarificador lo que quieres te podamos ayudar

ahora miralo sinceramente y dime si realmente tu lo entenderias asi tal cual esta la kosa....

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 04 Abr 2005 06:13 am
en ningun momento e pretendido que me resolvais mis duda en 2 horas puesto que no me quejado en ningun momento, tampoco pretendo que comprendais esa chorrada de codigo solo pido si alguien puede explicar un poco el tema del almbito de la funciones y las clases el alcance y demas.. por ejemplo como llamar una funcion que esta dentro del contructor desde un evento clip.onEnterFrame, el porque de por ejemplo hay que hacer esta cosa liosa -> this.icoMc.thisObjectPath = this
para poder acceder a una variable de la clase desde un evento onEnterFrame. sobre lo del formato del codigo sinceramente no se como
se hace desde la pagina, pero de todas formas ya lo puse aqui que se entiende mejor.
http://pastebin.coconut.se/?id=3855
sigue sin estar comentado aunque en los puntos clave ya puse alguna nota
disculpar las molestias

si lo creeis adecuado puedo cometar todo el codigo linea por linea

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 04 Abr 2005 01:11 pm
Bueno, lo siento si mi tono no fue el adecuado, pero creeme si te digo que a veces la gente postea cada dos horas [o menos tiempo] intentando que le resolvamos las cosas.

Ahora con el codigo esta "bastante bastante" mas claro, bueno yo personalmente veo un par de fallos y no se como el script no peta , y es que la funcion constructora DEBERIA de ser solo la funcion constructora, es decir, tener las funciones separadas dentro de la clase seria algo como

>>Inicio clase
>Funcion constructora
<Fin de la constructora
>Funcion XX
<Fin de la funcion XX
>Funcion YY
<Fin de la funcion YY
<< Fin de la clase
Eso seria mas o menos lo adecuado y en vez de "funciones" se les suele llamar "metodos" de la klase. A los metodos se les llamada por clase.metodo(parametros); desde fuera de la klase y this.metodo(parametros); desde dentro de la clase pero atento a esto...

el porque de esta linea :
this.icoMc.thisObjectPath = this;
es lo siguiente
this es la "clase" , icoMc es una variable que hace referencia a un MC, pero es un MC no una parte de la clase, entonces es una mera referencia para no andar con un "_root.ruta.clipCreado" pues kizas en otras ocasiones esa ruta varie o por simple comodidad

Entonces con this.icoMc lo que hacemos es acceder a una variable de la clase, la icoMc que guarda una referencia hacia un MC

Finalmente con this.icoMc.thisObjectPath = this, lo que le decias es que se vaya al MC que habiamos creado por ahi, y en ese MC, guarde en una variable una referencia hacia esta clase.

Y porque hace eso? bueno, porque despues viene un this.icoMc.onEnterFrame, en ese momento, al hacer referencia a "this" NO nos referimos a la clase, sino al MC, es decir this seria igual a this.icoMc, y ahora,... entonces porque no usar el "_parent" para referirnos a la clase? pues sencillo, porque el "_parent" de this.icoMc no es "this"[klase] si no un "_root.ruta" o algo parecido, entonces usamos una variable que habiamos guardado antes en el MC para hacer referencia a la clase.

Hay que notar que no es lo mismo un MovieClip, que una variable del tipo MovieClip que simplemente guarda una referencia al MC.... es algo complikado de entender kizas

espero que con esto se hayan resuelto tus dudas

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 04 Abr 2005 03:58 pm

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 05 Abr 2005 04:50 am
muchas gracias por la ayuda a los 2 me abeis ayudado a comprender mejor la estructuracion de una clase, yo me abia encabezonado en meter los metodos dentro de la funcion constructora :P por cierto si te estraña que ese codigo no peta entonces no quieras ver la primera version de la case icono que hice, da miedo verla pero funciona jeje -_-! en fin sobre tu tono no son necesarias tus disculpas no pretendi que se me diera la ayuda al momento aunque si reconozco que hice el segundo post por miedo a que no se me prestara atencion :P asi que mis disculpas de new :) por cierto mantengo lo que dije cuando termine este code lo comentare y lo aportare como tutorial igual a alguien le interesa y posiblemente complemente otro tutorial muy bueno de este site, el de las ventanas flotantes ^^ un saludo.

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie

 

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