Comunidad de diseño web y desarrollo en internet online

Clase de documentos o constructores de objetos?

Citar            
MensajeEscrito el 17 Nov 2008 04:52 pm
Hola amigos.

Tengo el siguiente problema que estoy seguro su solución es muy sencilla pero no la he podido encontrar:

Tengo la siguiente clase que dibuja unas curvas en forma de luna (Tomada del Help de Flash CS3: Clase Graphics/CurveTo):

Código :

package {
    import flash.display.Sprite;
    import flash.display.Shape;
   
    public class Graphics_curveToExample2 extends Sprite
    {
        public function Graphics_curveToExample2() {
            var newMoon:Shape = new Shape();

            newMoon.graphics.lineStyle(1, 0);
            newMoon.graphics.beginFill(0xFF0000);
            newMoon.graphics.moveTo(100, 100);
            newMoon.graphics.curveTo(30, 150, 100, 200);
            newMoon.graphics.curveTo(50, 150, 100, 100);
            graphics.endFill();
            trace("prueba de funcionamiento")
         
            this.addChild(newMoon);
        }      
    }
}


Cuando creo un archivo .fla y en el primer fotograma ingreso las siguientes líneas de código en el panel de acciones, no me genera ningún error, pero NO me dibuja la forma:

Código :

import flash.display.Sprite;
import flash.display.Shape;
var uno:Graphics_curveToExample2 = new Graphics_curveToExample2();


Ahora si en el panel de propiedades ingreso el nombre de la clase en "clase de documentos ", funciona perfectamente.

¿Como logro que funcione bien de la primera forma (usando un constructor) y por que ocurre esto?.

Muchas gracias.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Nov 2008 05:04 pm
Agrega esta línea:

var uno:Graphics_curveToExample2 = new Graphics_curveToExample2();
addChild(uno)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Nov 2008 05:08 pm
Gracias Jorge. Funciona muy bien.
Me podrias explicar por que debo agregarle addChild(uno), si en el código de la clase se encuentra al final: this.addChild(newMoon);

De nuevo mil Gracias.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Nov 2008 05:08 pm
y por que no se le coloca this antes de addChild(uno),

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Nov 2008 05:09 pm
La clase extiende Sprite, y el child se mete en el Sprite ... pero ese Sprite no está en ningún lado. O se instancia como document class o se mete a pelo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Nov 2008 05:09 pm
Para mostrar un Objeto DEBEMOS usar "addChild" (ó addChildAt). ¿dónde lo queremos añadir?

En el código que has puesto el addChild está en la Clase "Graphics_curveToExample2". Luego es allí donde crea la"forma". Pero te haría falta añadir el Sprite en tu película principal. Vamos, tendrías que añadir la línea

Código :

addChild(uno)

en tu .fla
Claro, que lo que tendríamos es algo como

Código :

stage
   |------sprite (uno)
              |-----Shape


Cuando le das como Clase de Documento a tu .fla "Graphics_curveToExample2", el addChild se hace sobre "this", vamos, sobre la propia película y, tenemos en ese caso

Código :

stage
  |-----Shape


Vale, por liarlo más, vamos a cambiar la Clase, para que extienda de Shape y dibujemos sobre ella misma
[quote]
package {
import flash.display.Sprite;
import flash.display.Shape;

public class Graphics_curveToExample2 extends Shape
{
public function Graphics_curveToExample2() {
this.graphics.lineStyle(1, 0);
this.graphics.beginFill(0xFF0000);
this.graphics.moveTo(100, 100);
this.graphics.curveTo(30, 150, 100, 200);
this.graphics.curveTo(50, 150, 100, 100);
this.graphics.endFill();
trace("prueba de funcionamiento")
// --quitamos esto:
// this.addChild(newMoon);
}
}
}
[/code]
ahora podríamos escribir

Código :

var uno:Graphics_curveToExample2 = new Graphics_curveToExample2();
var dos:Graphics_curveToExample2 = new Graphics_curveToExample2();
dos.x=200
addChild(uno)
addChild(dos)

Por Eliseo2

710 de clabLevel



 

firefox

 

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