Comunidad de diseño web y desarrollo en internet online

Novato en AS3

Citar            
MensajeEscrito el 15 Ene 2011 03:12 pm
Hola a todos, soy muuuuy novato en AS3; programo en C# y conozco la poo pero en AS3 me ha dado vueltas y me enloquece, no comprendo muy bien como aplicar las clases, propiedades y en general como aplicar la poo.

Para practicar intente hacer una calculadora con una clase externa y nada me da un rollo que no comprendo, les muestro:

Calculadora.as
package bin.debug
{
import flash.display.MovieClip;
public class Calculadora extends MovieClip
{
//variables
private var myN1:int;
private var myN2:int;
private var res:String;

//get y set => constructor
public function set myN11(value:int):void
{
myN1 = value;
}
public function get myN11():int
{
return myN1;
}

public function set myN22(value:int):void
{
myN2 = value;
}

public function get myN22():int
{
return myN2;
}

private function fnSumar():String
{
res = "Resultado: "+(myN1 + myN2);
return res;
}
private function fnRestar():String
{
res = "Resultado: "+(myN1 - myN2);
return res;
}
}
}
Lo que he avanzado es buscando algo en el sitio.

En en escenario de Flash ya tengo dibujados los elementos pero no va me muestra error; así esta:

import bin.debug.Calculadora;

var obCal:Calculadora = new Calculadora();

obCal.myN11 = int(txtNum1.text);
obCal.myN22 = int(txtNum2.text);

txtResultado = obCal.fnSumar();

Imagino que debo estar haciendo algo muy mal pues no me da nada, tendrá que ver que no he llamado el evento del botón, es que para agilizar quería probar si estaba bien simplemente llamando la función que me retorna un String con el resultado de la suma, espero me puedan dar un empujón, muchas gracias de antemano,

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2011 03:31 pm
A simple vista cuando llamas a la funcion sumar este metodo es privado no puedes acceder a el externamente, solo dentro de la clase , tendria que ser un metodo publico.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 15 Ene 2011 04:22 pm
Hola maneuver, muchas gracia spor tu tiempo y colaboración; tenes razón el método es privado, lo cambie y me bota este error:
1067: Conversión implícita de un valor de tipo String a un tipo flash.text:TextField no relacionado. Y me marca la linea donde llamo la función fnSumar: txtResultado = obCal.fnSumar();

Espero me pueda ayudar con una luz sobre esto. De antemano muchas gracia por tu tiempo y colaboración,

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2011 06:19 pm
Ayudaaaaa, Por favor alguien que me de una luz!!!

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2011 07:00 pm
cambia la variable res:string por res:number y no añadas texto a esa variable, haz un trace("Resultado: "+res) para verlo

Por theblabla

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2011 12:06 am
muchas gracias theblabla por tu tiempo y colaboración, ahora mismo reviso y te cuento. Pero dime algo, sera que voy bien con lo de la clase y la forma de instanciar y manejar los objetos??

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ene 2011 05:07 am
Hola, ya prove lo que me sugeriste y bueno hay unos avances pero sigo sin ver nada. Agregue el eventos para el botón y la función que sumara pero solo veo un cero, no suma nada.
Mi archivo Fla (el que tiene los elementos ya dibujados en el escenario) modificado quedo así:

import bin.debug.Calculadora;
import flash.events.*;
//import flash.events.MouseEvent;

var obCal:Calculadora = new Calculadora();

obCal.myN11 = int(txtNum1.text);
obCal.myN22 = int(txtNum2.text);

btnSumar.addEventListener(MouseEvent.CLICK, Sumar);

function Sumar(e:Event):void
{
txtResultado.text = String(obCal.fnSumar());
//trace(obCal.fnSumar());
}

Agregue los valores que sea siempre me muestra cero, espero me pueda ayudar con esta atrancada,
de antemano muchas gracia por su tiempo y colaboración,

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ene 2011 07:16 am
Acumulador, es que le estás dando valor a obCal.N11 FUERA de la función

Código ActionScript :

function Sumar(e:Event):void
{
     //Le damos valor a obCal.myN11 aquí
    obCal.myN11 = int(txtNum1.text);
    obCal.myN22 = int(txtNum2.text);
    txtResultado.text = obCal.fnSumar(); //<--no necesitas el String(...), ya es un STRING
//trace(obCal.fnSumar());
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2011 09:59 pm
Gracias por tu respuesta, entiendo mi error pero la verdad no estoy seguro que lo que tiene el método fnSumar() es un String pues el retorna un numero entero.
Pero ya mismo pruebo y les cuento, de antemano muchas gracias por su tiempo y colaboración,

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ene 2011 03:43 am
Muchas gracias, me funciono muy bien...
Muy agradecido por su colaboración!!

Por acumulador

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ene 2011 07:23 am

acumulador escribió:

no estoy seguro que lo que tiene el método fnSumar() es un String pues el retorna un numero entero.

Tienes escrito

Código ActionScript :

private function fnSumar():String
{
res = "Resultado: "+(myN1 + myN2);
return res;
}

Es un STRING, por ejemplo te dará "Resultado:54"
Si quisiéramos que devolviera un número

Código ActionScript :

private function fnSumar():Number //<---le digo que devuelva un "Number"
{
res = (myN1 + myN2); //<--no puedo devolver un string
//siendo estrictos deberíamos escribir
//var res:Number=myN1 + myN2
return res;
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ene 2011 10:56 pm
Jejejeje, tienes razón que error; que pena y todo por no poner atención!!

De antemano muchas gracias por su tiempo y colaboración,

Por acumulador

28 de clabLevel



 

chrome

 

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