Hola compis tengo una dudita, como puedo yo desde un moviclip crearme un componente?...podéis recomendarme algun tutorial o algo con ejemplo de creacion de nuestros propios componentes...
hoy vamos ha aprender a crear nuestro primer componente , ya vereis q facil es .
Solo he creado un boton y q este cambien el tamanio de el scrollPane
Normalmente cuando hago un componente , lo q primero hago es mirar q quierro q haga ese componente , ya se q parece obvio , pero averiguar q metodos nesecitare mas adelante o en otro proyecto es un adelanto.
Las ventajas de un componente creo q esta claro , codigo mejor organizado , y cada vez q nesecite q mi componente tenga una nueva caracteristica , lo modifico , y poco a poco tienes un componente super util , sin liarte al copy/pege y si no lo modificas no tienes q leer el code.
Nuestro componente de hoy creo q tiene pocas posibilidades pero es lo suficientemente sencillo para asimilar el mecanismo de un componente.
Consiste en encapsular un code , meter en un cajon todo el code y sus metodos.
Crearemos una clase , el code basico es este :
Código :
#initclip
function MiClase() {
//Aqui es la parte contructora de la clase
//Aqui normalmente se inicia cosas q no nesecita parametros
}
// herredamos de MovieClip
MiClase.prototype = new MovieClip();
MiClase.prototype.metodo = function(parametros) {
//Aqui nuestro metodo
//Aqui manipulamos los parametros
}
// registramos la clase en la libreria
Object.registerClass("MiComponenteSymbol", MiClase);
#endinitclip
Bueno expliquemos un poco el code:
#initclip y #endinitclip esto lo q hace es encapsular nuestro code (el cajon) MiClase.prototype = new MovieClip() aqui queremos heredar todas las caracteristicas de la clase MovieClip Object.registerClass("MiComponenteSymbol", MiClase) registramos nuestra clase , MiComponenteSymbol es el nombre de la vinculacion en la biblioteca y MiClase el nombre de nuestra clase.
Bueno empecemos nuestro primer componente.
-Nesecitamos tambien el scrollPane de flash mx , si solo teneis el 2004 , lo podeis bajar de la pagina de macromedia o tambien esta en el fla q esta en el final de este tuto , lo arrastrais en el escenario y lo borrais , con eso se añade a la biblioteca.
-Creamos un clip (control+f como nombre "window" aunq eso no tiene importancia y como identificador (vinculacion) "WindowSymbol" esto si es importante. Y pegamos esto en la linea de tiempo de nuestro clip :
Código :
#initclip
//constructora de nuestra clase
//No admite parametros
function Windows() {
//metemos el scrollPane en el clip
this.attachMovie("FScrollPaneSymbol", "miscrollpane", 1);
//hacemos q las barras sean siempre visibles
this.miscrollpane.setHScroll(true);
this.miscrollpane.setVScroll(true);
//creamos un clip vacio q dibujaremos mas tarde el boton
this.createEmptyMovieClip("btTr", 2);
}
//heredamos de MovieClip
Windows.prototype = new MovieClip();
Windows.prototype.inicio = function(quien,ancho, alto) {
if(ancho == undefined) ancho=300;
if(alto == undefined) alto=200;
// definimos el contenido de el scrollpane
this.miscrollpane.setScrollContent(quien);
//definimos su tamaño
this.tamanio(ancho,alto);
//seleccionamos el boton
with (this.btTr) {
//dibujamos un triangulo
beginFill(0xC0C0C0);
lineStyle(2,0x808080)
moveTo(-2,-12)
lineTo (-12,-2);
lineTo (-2,-2);
endFill();
//lo situamos a la derecha y abajo de el clip
_x = ancho;_y = alto;
}
//cuando presionamos sobre el boton
this.btTr.onPress = function() {
//permitimos q se pueda arrastrar
this.startDrag();
//y disparamos el onEnterFrame
this.onEnterFrame = function() {
//Cuando la posicion de el boton es inferior a 60
// 60 es +- el tamaño minimo de un scrollpane
if (this._x<60) {
//obligamos a soltar el boton
this.onRelease();
//y posicionamos el boton a 60
this._x = 60;
}
//idem pero para _y
if (this._y<60) {
this.onRelease();
this._y = 60;
}
//Redimensionamos nuestro scrollpane segun la posicion de el boton
this._parent.tamanio(this._x,this._y);
};
};
//cuando soltamos el boton
this.btTr.onRelease = this.btTr.onReleaseOutside=function () {
//dejamos de arrastrar el boton
this.stopDrag();
//eliminamos el onEnterFrame
delete this.onEnterFrame;
//volvemos a redimensionar por si las moscas
this._parent.tamanio(this._x,this._y);
};
};
//metodo q redimensiona el componente
Windows.prototype.tamanio = function(ancho, alto) {
this.miscrollpane.setSize(ancho,alto);
};
//registramos la clase
Object.registerClass("WindowSymbol", Windows);
#endinitclip
Bien ya hemos acabado nuestro componente solo tienes q tener otro clip en la biblioteca , lo vincularemos con el nombre "contenido" y ponemos esto en la linea de tiempo de el escenario:
Ahora se deberia oir al tipico roñoso pero si esto no es componente ni es na , no tiene una interface de configuracion , como los componentes de verdad , bien yo doy un consejo: intente usar los componentes por programacion sus nervios se lo agradeceran.
Bien para los puristas lo vamos a convertir a componente "de verdad"
Selecionemos nuestro "componente" en la biblioteca y boton derecho->definicion de componente...
Y vamos añadiendo parametros hasta conseguir lo de la foto de abajo bien ahora tenemos q modificar el code de antes para q pueda recibir los parametros de la interface , solo pegare el principio de el code para ahorar un poco de texto de este tuto.
Código :
#initclip
function Windows() {
this.attachMovie("FScrollPaneSymbol", "miscrollpane", 1);
this.miscrollpane.setHScroll(true);
this.miscrollpane.setVScroll(true);
this.createEmptyMovieClip("btTr", 2);
//Aqui hacemos q se inicie solo
this.inicio();
}
Windows.prototype = new MovieClip();
Windows.prototype.inicio = function(quien,ancho, alto) {
//en caso q no existan parametros los recoje de la interface
if(quien == undefined)quien=this.quien;
if(ancho == undefined)ancho=this.ancho;
if(alto == undefined)alto=this.alto;
//a partir de aqui sigue como el code de antes
Bien el componente se podria adornar hasta la saciedad , crear un icono , colorear el code ("inicio") , q recogiera el ancho y alto segun su tamaño y un gran ect...
Yo personalmente paso de esas marico... , un componente ha nacido para estar metido dentro de otro y ser programado desde el exterior.
roman6121, lo apropiado seria que escribieras tu pregunta aparte en un nuevo tema del foro; pero si revisas la sección de tutoriales http://www.cristalab.com/tutoriales.php Encontraras el tutorial del ComboBox http://www.cristalab.com/vertutorial.php?id=45