funcion para no repetir el mismo codigo
4 seguidores
yo tengo esta funciones que la repito por cada boton que tengo (boton1, boton2, etc....)
Hay alguna forma de pasarle un parámetro en base al botón que uso y no tener que repetir estas 2 funciones para cada botón?
boton1.onRollOver = function () {
boton1.onEnterFrame = function () {
boton1.nextFrame();
}
}
boton1.onRollOut = function () {
boton1.onEnterFrame = function () {
boton1.prevFrame();
}
}
boton2.onRollOver = function () {
boton2.onEnterFrame = function () {
boton2.nextFrame();
}
}
boton2.onRollOut = function () {
boton2.onEnterFrame = function () {
boton2.prevFrame();
}
}
playground
Yo lo haria asi:
Botones:
boton1.onRollOver = function () {
_parent.cambiar(_name, 1)
}
boton1.onRollOut = function () {
_parent.cambiar(_name, 0)
}
Funcion en un nivel inferior
cambiar = function (cual,que){
delete this.onEnterFrame
this.onEnterFrame = function(){
if (que == 1){
this[cual].nextFrame()
}else{
this[cual].prevFrame()
}
}
hardface
playground
Yo lo haria asi:
Botones:
boton1.onRollOver = function () {
_parent.cambiar(_name, 1)
}
boton1.onRollOut = function () {
_parent.cambiar(_name, 0)
}
Funcion en un nivel inferior
cambiar = function (cual,que){
delete this.onEnterFrame
this.onEnterFrame = function(){
if (que == 1){
this[cual].nextFrame()
}else{
this[cual].prevFrame()
}
}
Que quiere decir en un nivel inferior¿ las functions tiene niveles tambien¿?
dagi3d
las dos maneras mas elegantes que veo son:
haces una funcion que le pasas como parametro el boton/pelicula a la que quieres asignar ese comportamiento:
<code>
function setBehaviour(mc)
{
mc.onRollOver = function()
{
//aqui va el codigo
}
mc.onRollOut = function()
{
//aqui va el codigo
}
}
setBehaviour(_root.b1_mc);
</code>
otra algo mas complicada, pero 'mas correcta'
te haces una clase para tu boton: coges el movieclip generico de los botones y le pones un identificador de vinculacion (menuButtonSymbol, por ej.)
luego en el primer fotograma de esa pelicula, pones esto:
<code>#initclip
MenuButton = function(){}
MenuButton.prototype = new MovieClip();
MenuButton.prototype.onRollOver = function()
{
trace("over");
}
MenuButton.prototype.onRollOut = function()
{
trace("out");
}
Object.registerClass("menuButtonSymbol", MenuButton);
#endinitclip</code>
ahora cada vez que pongas en la pelicula un movieclip de este tipo, ya tendra asignado automaticamente el comportamiento que le digas
tambien puedes combinar ambos metodos si deseas asignar un comportamiento por defecto a todas las instancias de esa pelicula, pero quieres que alguna/s en concreto hagan algo distinto
playground
hardface
Que quiere decir en un nivel inferior¿ las functions tiene niveles tambien¿?
No! me refería a que esa funcion debe estar en el movie que contiene los botones.
Saludos!