Comunidad de diseño web y desarrollo en internet online

Problemas con Clase Personalizada una funcion no se ejecuta

Citar            
MensajeEscrito el 02 Jun 2007 07:37 pm
Hola, Bueno pues pido ayuda por que ya intente esto de muchas maneras pero no jala :(

LOS SUPUESTOS
Aclaro es Flash 8 y AS2
Bueno todo empieza con una Clase Ventana, y en esa clase pues se ejecuta un attachMovie de la biblioteca con identificador "Ventana" (en la vinculación, no tiene clase).
Bueno dentro de este movieclip existe un boton con nombre "boton_btn" que REPITO esta dentro del movie clip de la biblioteca.

EL PROBLEMA
Yo quiero que cuando se invoque el evento boton_btn.onRelease se ejecuten sentencias, pero como las llamo mas de una vez pues se me ocurrió hacer una función privada (lo he intentado privada y publica) que haga las sentencias que quiero, pero curiosamente cuando le doy clic al "instancia_de clase.boton_btn" pues no hace nada. Haaaaa pero si la pongo sin función (osea las sentencias directamente funciona a la perfección).

Bueno hay les va el codigo de ".\clases\Ventana.AS"

Código :

import Math;
import flash.geom.Point;
import Button;
//import 
class clases.Ventana extends MovieClip {
   public static var profI:Number = new Number(0);
   public static var punto:Point = new Point(10, 50);
   public var nombre:String;
   public var expocitor:String;
   public var ventana:MovieClip;
   private var xesca:Number;
   private var yesca:Number;
   private var xposi:Number;
   private var yposi:Number;
   private var alfa:Number = new Number(25);
   public var maxi:String;
   private var loadvar:LoadVars;
   public var yo:Ventana;
   public var textoide:String;
   public var caja;
   public function Ventana(boton:MovieClip) {
      yo = this;
      nombre = boton._name+"Vent";
      expocitor = boton._name;
      expocitor = expocitor.substr(0, boton._name.length-3);
      if (profI == undefined || profI == false || profI == 0) {
         profI = 1;
      } else {
         profI++;
      }
      ventana = _root.attachMovie("Ventana", nombre, profI);
      ventana.titulo_mc.expocitor_txt.text = expocitor;
      noActivo(ventana);
      botonActivar(ventana);
      barraActiva(boton, ventana);
      ventana.loadVariables(expocitor+".txt");
      meteText();
   }
   public function meteText() {
      ventana.onEnterFrame = function() {
         if (this.texto != undefined) {
            this.texto_txt.text = this.texto;
            delete this.onEnterFrame;
         }
      };
   }
   public function noActivo(loc:MovieClip):Void {
      xesca = random(25)+50;
      yesca = random(25)+50;
      xposi = random(700);
      yposi = random(500);
      loc._xscale = xesca;
      loc._yscale = yesca;
      loc._x = xposi;
      loc._y = yposi;
      loc._alpha = alfa;
      loc.titulo_mc.onPress = function() {
         this._parent.startDrag();
      };
      loc.titulo_mc.onRelease = function() {
         this._parent.stopDrag();
      };
   }
   public function botonActivar(loc:MovieClip):Void {
      loc.boton_btn.onRelease = function() {
         //OK ES AQUÍ DONDE NO JALA
         //ES CURIOSO PERO EN EL DEPURADOR EL TRACE SI SE EJECUTA
         trace("hola");
         //PERO CUANDO LLEGO AQUÍ LA FLECHA DEL DEPURADOR SE PONE AQUÍ
         //LE DOY ENTRAR A FUNCIÓN Y NO HACE NADA
         evaluator(loc);
      };
   }
   public function barraActiva(bot:MovieClip, vent:MovieClip):Void {
      bot.onRelease = function() {
         //Este es el segundo boton que les comento
         //OSEA QUE AQUI IRIA TAMBIEN
         //evaluator(vent):
         if (vent._alpha<100) {
            delete vent.titulo_mc.onPress;
            delete vent.titulo_mc.onRelease;
            vent._alpha = 100;
            vent._xscale = 100;
            vent._yscale = 100;
            vent.swapDepths(100);
            vent._x = punto.x;
            vent._y = punto.y;
         } else if (vent._alpha == 100) {
            xesca = random(25)+50;
            yesca = random(25)+50;
            xposi = random(700);
            yposi = random(500);
            vent._xscale = xesca;
            vent._yscale = yesca;
            vent._x = xposi;
            vent._y = yposi;
            vent._alpha = 25;
            vent.titulo_mc.onPress = function() {
               this._parent.startDrag();
            };
            vent.titulo_mc.onRelease = function() {
               this._parent.stopDrag();
            };
         }
      };
   }
   //ESTA ES LA FUNCION QUE NO SE EJECUTA.
   public function evaluator(loc:MovieClip):Void {
      if (loc._alpha<100) {
         delete loc.titulo_mc.onPress;
         delete loc.titulo_mc.onRelease;
         loc._alpha = 100;
         loc._xscale = 100;
         loc._yscale = 100;
         loc.swapDepths(100);
         loc._x = punto.x;
         loc._y = punto.y;
      } else if (loc._alpha == 100) {
         xesca = random(25)+50;
         yesca = random(25)+50;
         xposi = random(700);
         yposi = random(500);
         loc._xscale = xesca;
         loc._yscale = yesca;
         loc._x = xposi;
         loc._y = yposi;
         loc._alpha = 25;
         loc.titulo_mc.onPress = function() {
            this._parent.startDrag();
         };
         loc.titulo_mc.onRelease = function() {
            this._parent.stopDrag();
         };
      }
   }
}


Mmmmmm si yo se que mi codigo apesta de lo grande y poco funcional pero denme chance :oops:
y pues en el ".\menu.fla" pues esta la sentencia:

Código :

import clases.Ventana;
var paco:Ventana=new Ventana(boton_de_menu);
/*
ESTE botón es otro aunque con este pasa el mismo problema pues me imagino que se arregla igual
*/

Bueno la carpeta esta aquí.
www.oportunidadeshbl.com/Upload/upload.zip

Gracias y espero que alguien se apiade de mi. :lol:

Por Gz.Francisco

378 de clabLevel



Genero:Masculino  

Programador economista y buzo

firefox
Citar            
MensajeEscrito el 02 Jun 2007 11:39 pm
Eso es por el ámbito de las funciones.

Código :

public function botonActivar(loc:MovieClip):Void
{
   trace(this);
   loc.boton_btn.onRelease = function()
   {
      trace(this);
   };
}

El primer trace te marcará [object Object] osea la clase. El segundo "_level0.karla_mcVent.boton_btn" o sea el botón

Deberías utilizar la clase Delegate. Mírate este tip

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 02 Jun 2007 11:58 pm
Putttt.........mdr Te adoro caaa....... eres mi idolo, namas por eso voy a pasar de estar entre los usuarios sombra, a los usuarios fuera de cueva!!!!!!!!!! (y) gracias Zguillez
Y voy a ayudar a algunos bueno...... no creo poder, pero le intento se hara :lol:

Por Gz.Francisco

378 de clabLevel



Genero:Masculino  



Ultima edición por Gz.Francisco el 03 Jun 2007 12:13 am, editado 1 vez

Programador economista y buzo

firefox
Citar            
MensajeEscrito el 03 Jun 2007 12:04 am
No se ejecuta la acción por que no la encuentra. Ya has visto que el this dentro del onRelease hace referencia al boton NO a la clase, con lo que estás llamando a una función que no existe dentro del botón... Para llamar a la función dentro de la clase has de utilizar un Delegate.
En el tip verás como hacerlo

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 03 Jun 2007 12:18 am
Tienes todo el teclado lleno de rozonzota!!!!!!!!!!!!!!

Que chidos son Ustedes los del equipo swat

Muchisimas gracias ya se que poner y me ayudaste mucho si necesitan algo solo pidanlo (menos lana, amistad, un hombro para llorar por la novia que los dejo por estar muchas, muchas horas en la compu disque en el Clab pero estaban viendo paginas MALAS de muchas x`s haaayyy todo menos eso)
:lol: jajajajaja,
no no es cieto

Lo que necesiten he bye y gracias de nuevo

Por Gz.Francisco

378 de clabLevel



Genero:Masculino  

Programador economista y buzo

firefox

 

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