Hay cuatro formas diferentes de externder el DynLayer
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.
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.
function DynLayer(id,nestref,frame) { ... code in constructor this.myNewMethod = DynLayerMyNewMethod }
Asigna el explícito método a un específico DynLayer. En algunos casos estos es preferible.
mylayer.myNewMethod = DynLayerNewMethod
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.
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 .
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.
Casa | Próxima Leccion: Extensiones Comunes |