Comunidad de diseño web y desarrollo en internet online

como lo simplifico

Citar            
MensajeEscrito el 08 Mar 2007 04:02 pm
la cosa es q recien me estoy metiendo mas en este lindo mundo de AS, y tengo 4 botones a los q le asigno acciones, muchas repetidas; yo mas o menos entiendo el concepto del for y lo he usado en ejemplos muy basicos para mostrar variables en campos de textos, pero no me doy idea de como aplicarlo aca, bien esto es loq yo he hecho, y si alguien me puede decir como simplificarlo...

Código :

btn01._x = 0;
btn01._y = 0;
btn01.txt.text = "home";
btn02._x = 0;
btn02._y = btn01._y + btn01._height + 5;
btn02.txt.text = "about";
btn03._x = 0;
btn03._y = btn02._y + btn02._height + 5;
btn03.txt.text = "services";
btn04._x = 0;
btn04._y = btn03._y + btn03._height + 5;
btn04.txt.text = "home";

//---esto se repite para cada boton, solo q cambia el nombre del label del goto
btn01.onRollOver = function (){
    this._alpha = 75;
}
btn01.onRollOut = function (){
    this._alpha = 100;
}
btn01.onRelease = function (){
    this.enabled = false;
    _parent.gotoAndPlay ("home");
   btn02.enabled = true;
   btn03.enabled = true;
   btn04.enabled = true;
}

Por july

389 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 08 Mar 2007 06:11 pm
Primero, esto:

Código :

btn01._x = 0;
btn01._y = 0;
Por:

Código :

btn01._x = btn01._y = 0;
Luego, usamos el for

Código :

for (i = 2; i <= 4; i++) {
var j = i - 1;
_root["btn0" + i]._x = 0;
_root["btn0" + i]._y = _root["btn0" + j]._y + _root["btn0" + j]._height + 5;
_root["btn0" + i].txt.text = nombres[j];
_root["btn0" + i].numero = i;
}
Pero hace falta definir el Array nombres:

Código :

var nombres:Array = new Array ();
nombres = ["home", "about", "services", "home"]
Hecho eso, continamos, asignando los eventos de los botones sin ningún for:

Código :

btn01.onRollOver = btn02.onRollOver = btn03.onRollOver = btn04.onRollOver = function () {
this._alpha = 75;
};
btn01.onRollOver = btn02.onRollOver = btn03.onRollOver = btn04.onRollOut = function () {
this._alpha = 100;
};
btn01.onRollOver = btn02.onRollOver = btn03.onRollOver = btn04.onRelease = function () {
_parent.gotoAndPlay (nombres[this.numero]);
for (i = 1; i <= 4; i++) {
if (_root["btn0" + i] != this) {
_root["btn0" + i].enabled = true
} else {
_root["btn0" + i].enabled = false;
}
}
};
El código final quedaría así:

Código :

var nombres:Array = new Array ();
nombres = ["home", "about", "services", "home"]
btn01._x = btn01._y = 0;
btn01.txt.text = nombres[0];
for (i = 2; i <= 4; i++) {
var j = i - 1;
_root["btn0" + i]._x = 0;
_root["btn0" + i]._y = _root["btn0" + j]._y + _root["btn0" + j]._height + 5;
_root["btn0" + i].txt.text = nombres[i];
_root["btn0" + i].numero = i;
}
btn01.onRollOver = btn02.onRollOver = btn03.onRollOver = btn04.onRollOver = function () {
this._alpha = 75;
};
btn01.onRollOut = btn02.onRollOut = btn03.onRollOut = btn04.onRollOut = function () {
this._alpha = 100;
};
btn01.onRelease = btn02.onRelease = btn03.onRelease = btn04.onRelease = function () {
_parent.gotoAndPlay (nombres[this.numero]);
for (i = 1; i <= 4; i++) {
if (_root["btn0" + i] != this) {
_root["btn0" + i].enabled = true
} else {
_root["btn0" + i].enabled = false;
}
}
};

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 08 Mar 2007 09:25 pm
mi turno:

Código :

var miArray:Array = ["", "home", "about", "services", "contact"];
for (var i:Number = 0; i<miArray.length; i++) {
   var miBoton:MovieClip = this["btn0"+i];
   miBoton.txt.text = miArray[i];
   miBoton._x = 0;
   miBoton._y = (miBoton._height+5)*i-(miBoton._height+5);
   miBoton.onRollOver = function() {
      this._alpha = 75;
   };
   miBoton.onRollOut = function() {
      this._alpha = 100;
   };
   miBoton.onPress = function() {
      botonActual.enabled = true;
      botonActual._alpha = 100;
   };
   miBoton.onRelease = function() {
      this.enabled = false;
      botonActual = this;
      _parent.gotoAndPlay(miArray[i]);
   };
}


en este caso, para agregar mas secciones solo basta poner su nombre en el "array" y listo ;)
me recuerda mucho a un menu que hice hace algun tiempo, pero en ese caso, el color del texto cambiaba si hacias rollover o si presionabas...

salut

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 08 Mar 2007 10:55 pm
uh, gracias chicos
se me hizo mas facil usar el codigo de Acreonte,
aunque me quedaron bastantes dudas de ambos, a saber:

1. Hernan, no entendi este for, se q es para deshabilitar y habilitar los botones, pero no alcanzo a terminar de entender como

Código :

for (i = 1; i <= 4; i++) {
if (_root["btn0" + i] != this) {
_root["btn0" + i].enabled = true
} else {
_root["btn0" + i].enabled = false;
}

2. Acreonte, de donde viene la variable "botonActual"

Código :

miBoton.onPress = function() {
      botonActual.enabled = true;
      botonActual._alpha = 100;
   };
   miBoton.onRelease = function() {
      this.enabled = false;
      botonActual = this;
      _parent.gotoAndPlay(miArray[i]);
   };

Por july

389 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 09 Mar 2007 01:58 am
Una(s) pregunta(s): :P

¿Porqué pones "_root" (sin el punto) en:

Código :

_root["btn0" + i]
Se que es así, y que funciona así, pero no se porqué. :roll:

Es decir, yo utilizando mi intuición(¡cuidadooo, aparten las criaturas!), simplemente pondría.

Código :

["btn0" + i].enabled = true;
Ya que cuando no estás en el bucle, no lo pones el _root (y si lo pusiéramos, seria con punto, no?) Es decir:

Código :

btn01.enabled=true;
//o bien
_root.btn01.enabled=true;
Además, suponiendo que este en un sub-nivel que no sea _root, ¿también lo pondrías? ¿O bien parent? ¿O this ...?

Gracias
_________________________________________

july escribió:

1. Hernan, no entendi este for, se q es para deshabilitar y habilitar los botones, pero no alcanzo a terminar de entender como
El "for" es una estructura repetitiva, es decir: for (i = 1; i <= 4; i++) {//acciones}
  • Inicia en i=0.
  • Repite todas las acciones que tu pongas entre sus "{ }", mientras la "i" sea menor o igual que 4.
  • Cada vez que haga un ciclo, a la variable " i ", le suma 1.
"_root["btn0" + i]", hace referencia a btn0X, donde X es una variable, que varia en cada ciclo del for. De esta forma recorres todos los botones, el btn01, btn02, btn03y btn04.

july escribió:

2. Acreonte, de donde viene la variable "botonActual"

"BotonActual" sería lo mismo que puso Hernán: "_root["btn0" + i]" (dentro del for, claro).

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

firefox
Citar            
MensajeEscrito el 09 Mar 2007 02:25 pm
Bien, creo que ya lo expliqué antes, pero lo digo de nuevo. Hay que imaginar que cada instancia es un elemento de un Array asociativo que referencia a un objeto con varias propiedades (que son las propiedades de la clase a la que referencia, como _alpha, _x o text).

Entonces, para acceder a esos valores, tenemos que usar la misma estructura que para acceder a los datos de un Array, a saber:

Código :

valorDeIndice1 = miArray[1]
Si no usamos un punto antes de los corchetes con el Array, no lo usamos con el _root. Igualmente, se pueden usar también (entre otros):

Código :

miMC[nombreInstancia]
this[nombreInstancia]
this._parent[nombreInstancia]

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 09 Mar 2007 03:53 pm
Sabias palabras.U_U
Ya lo entendí, lo que pasa es que no tengo mucha práctica con Arrays.

Gracias de nuevo Hernán, cada día te superas. ^^

Por Bleend

Claber

3385 de clabLevel

10 tutoriales
4 articulos

Genero:Masculino   Héroes

Barcelona

msie
Citar            
MensajeEscrito el 09 Mar 2007 06:18 pm
gracias de nuevo.
...cuanto por aprender

Por july

389 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 09 Mar 2007 07:08 pm
uh! tenes razon July
como estamos usando Actionscript 2, tenia que haber declarado el tipo de variable de "botonActual" antes, algo como al principio agregar:
var botonActual:Movieclip;

estamos jugando con el press y release, que son dos estados distintos, uno es cuando precionas el boton, regresas al estado original al boton (como desactivado) y cuando lo soltas, le decis "hey, vos sos el boton que esta activado, ok?"

cualquier cosa, chifla ;)

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox

 

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