Como Extender el DynLayer

Hay cuatro formas diferentes de externder el DynLayer

DynLayer Añadir-encima Métodos

Es bastante fácil de añadir tus propios métodos al DynLayer. Solamente tienes que crear tu propia función:

function DynLayerMyNewMethod() {
	// code for this method
}

Este método no se encuentra disponible para el DynLayer hasta que lo "attach". Hay tres formas para hacer esto.

  1. Utilizar el comando prototipo (recomendado)
    De esta forma tu método estara disponible para todas la Dynlayer que defines.
    DynLayer.prototype.myNewMethod = DynLayerMyNewMethod
    

    Puedes un fichero .js fichero para tu uso e incluir las dos funciones y el llamado prototipo en esa función, o incluir estos en el fichero de fuente dynlayer.js el mismo.

  2. Incluye tu método en el constructor (no recomendado):
    Esto hará lo mismo que el prototipo pero todos los métodos del DynLayer ahora utilizaran prototipos.
    function DynLayer(id,nestref,frame) {
    	... code in constructor
    	this.myNewMethod = DynLayerMyNewMethod
    }
    
  3. Assign the method explicitly to a specific DynLayer

    Asigna el explícito método a un específico DynLayer. En algunos casos estos es preferible.

    mylayer.myNewMethod = DynLayerNewMethod
    

    DynLayer Añadir-encima Objetos

    Si requieres una adición al DynLayer la cual contiene su propio grupo de propiedades y bastantes métodos, puedes tal vez querer hacerlo su propio objeto y adherirlo al DynLayer. Lo que sugiero es que pases la nueva información del objeto nuevo así que pueda estar a la mano para poder cambiar el DynLayer. Si haces esto el objeto requerirá el nombre del Dynlayer, como también el nombre del añadir-objeto:

    objectName = new DynLayer("objectNameDiv")
    objectName.myobject = new MyObject("objectName","myobject")
    
    function MyObject(dynlayer,name) {
    	this.dynlayer = dynlayer
    	this.name = name
    	this.value = eval(this.dynlayer+'.x') + 100  // use eval's to capture data from the Dynlayer
    	this.method = MyObjectMethod
    	this.repeat = MyObjectRepeatMethod  // repeats MyObjectMethod using setTimeout
    }
    function MyObjectMethod() {
    	eval(this.dynlayer+'.moveBy(10,10)')  // use eval's to assemble the name of the DynLayer
    }
    function MyObjectRepeat() {
    	setTimeout(this.dynlayer+'.'+this.name+'.method()',50)  // use eval's to assemble the name of the object's method  
    }
    

    Luego para utiliz el añadir-encima objeto utiliza este formato general:

    objectName.myobject.method()
    or
    objectName.myobject.repeat()
    etc.
    

    Esta tactica es utilizada por Objetos Geometricos,y el Objeto Camino.

    Objetos los cuales utilizan Internamente el DynLayer

    Si deseas que un objeto controle capas múltiples, tienes que asignar propiedades las cuales son Dynlayers.

    Opción 1: Manda al objeto los nombres de las capas, y deja que el objeto defina las DynLayers

    myobject = new MyObject('layer1Div','layer2Div')
    
    function MyObject(lyr1,lyr2) {
    	this.lyr1 = new DynLayer(lyr1)
    	this.lyr2 = new DynLayer(lyr2)
    }
    

    De esta forma el objetivo principal (MyObject) puede controlar las dos capas con solo utilizar las propiedades y métodos de esas Dynlayers. Por ejemplo puedes crear un método el cual desliza dos capas en unión.

    myobject = new MyObject('layer1Div,'layer2Div')
    
    function MyObject(lyr1,lyr2) {
    	this.lyr1 = new DynLayer(lyr1)
    	this.lyr1.slideInit()
    	this.lyr2 = new DynLayer(lyr2)
    	this.lyr2.slideInit()
    	this.slideBoth = MyObjectSlideBoth
    }
    function MyObjectSlideBoth() {
    	this.lyr1.slideBy(-100,0,5,50)
    	this.lyr2.slideBy(100,0,5,50)
    }
    

    Esta táctica es utilizada solamente por todos los widgets/componentes, como sea usualmente es lo que hago para generar nombres de capas automáticamente, pero sigue siendo la misma idea básica.

    Opción 2: Pre-definir tus DynLayers y manda a el objeto los nombres de las DynLayers

    mylayer = new DynLayer("mylayerDiv")
    myobject = new MyObject(mylayer)
    
    function MyObject(dynlayer) {
    	this.dynlayer = dynlayer
    	// do something with this.dynlayer
    }
    

    Está táctica es utilizada por el Objeto Drag .

    Objetos los cuales Capsulan el DynLayer

    Nota: En Junio 23 la última vez que publique el DynLayer también debes de fijar el prototipo de tu objeto al prototipo del DynLayer´s en orden para poder adherir los métodos.

    Tal vez la forma mas poderosa de extender el DynLayer es, es de hacer un objeto encapsulado al DynLayer, en otras palabras de importar toda la funcionalidad del DynLayer dentro de un objeto.

    Estés seguro, esta no es la misma cosa que la sección de arriba. La sección de arriba hace al DynLayer una propiedad de un objeto. Encapsulación significa que este objeto actualmente viene a ser un DynLayer esto tiene su propio conjunto de propiedades y métodos.

    Para encapsular el DynLayer , tienes que asignar el DynLayer como un método del objeto, e inmediatamente llamar a ese método, y al final hacer que tu objeto el mismo prototipo que el DynLayer. Lo que hace esto es de adherir todos los métodos del DynLayer a tu objeto.

    myobject = new MyObject('myObjectDiv',null)
    
    function MyObject(id,nestref) {
    	this.dynlayer = DynLayer
    	this.dynlayer(id,nestref)
    }
    
    MyObject.prototype = DynLayer.prototype
    

    Lo que esto hace es que asigna todas las propiedades y métodos del DynLayer a este objeto. Es en realidad el mismo un DynLayer porque trabajas con el de la misma manera...

    myobject.hide()
    myobject.moveBy(10,10)
    etc.
    

    Entonces cual es la ventaja de éste? Bueno esta la mas nueva forma de extender el DynLayer. Porque así puedes agregar mucho mas funcionalidad a este objeto. Esta técnica es la forma ideal para hacer un juego DHTML, en donde necesitas muchas formas de objetos los cuales hacen diferentes tareas, sin embargo todos necesitan controlar las capas como hace el Dynlayer.

    Ejemplo: demo-smileyface.html

    Para un ejemplo de cómo utilizar esto, revisa la fuente de código. Es una demostración el cual crea un objeto con una Cara sonriente el cual tiene sus propios métodos y propiedades los cuales solamente son necesitados cuando necesitas hacer una Cara Sonriente.

    Está táctica es utilizada por el Bumble Bee Demo.

    Extensiones del DynLayer :

    Casa Próxima Leccion: Extensiones Comunes
    copyright 1998 Dan Steinman