2010-09-02 29 views
7

Bien, así que básicamente quiero dibujar un círculo en as3 que tenga un "agujero" (como una rosquilla). Algo como esto, pero sin los contornos:as3: dibuja un círculo con un agujero con solo actionscript

http://www.steel.ie/DugganSteel/Pictures/Hollow-circle.gif

esto no funciona:

SPRITE.graphics.beginFill(0xFFFFFF); 
SPRITE.graphics.drawCircle(0,0,10); 
SPRITE.graphics.endFill(); 
SPRITE.graphics.drawCircle(0,0,5); 

me refiero a esto parece que sería sencillo, pero no puedo encontrar ninguna información sobre eso. También debería mencionar que estoy tratando de dibujar 3/4 del círculo, como 3/4 de donut. Así que estaba planeando dibujar un círculo transparente y cuadrar el círculo original, sé que esto parece un tanto extraño, ya que esperaría que algo transparente mostrara lo que hay debajo.

Respuesta

2

Usted sólo puede hacer que el grosor de línea de la anchura de rosquilla deseado y evitar el uso de beginFill conjunto Graphics.lineStyle Para hacerlo sólo van de 3/4 del camino alrededor de usted podría utilizar curveTo para dibujar los 3 trimestres.

10

Es realmente muy simple. Ver el siguiente código:

var p:Point = new Point(100, 100); 
graphics.beginFill(0xFF0000); 
graphics.drawCircle(p.x, p.y, 100); 
graphics.drawCircle(p.x, p.y, 50); 

Las intersecciones se anulan entre sí hasta que llame endFill

Goodluck!

+0

único que no entiendo es, ¿por qué las intersecciones se anulan entre sí? – dharm0us

+0

Encontré un enlace útil: http://www.senocular.com/flash/tutorials/flash10drawingapi/ – dharm0us

+0

¡Es una buena lectura, pero se centra en la nueva API de dibujo, así que ten cuidado! –

1

El método anterior de Tyler funciona, sin embargo, si una forma más fácil de hacerlo es simplemente comenzar a dibujar el círculo interno primero. Básicamente Flash no rellena el color hasta que llama al endFill() (otra vez como lo menciona Tyler), por lo que comienza a dibujar en el círculo interno, luego el círculo exterior y luego en endFill() Flash rellena el espacio.

SPRITE.graphics.beginFill(0xFFFFFF); 
SPRITE.graphics.drawCircle(0,0,5); 
SPRITE.graphics.drawCircle(0,0,10); 
SPRITE.graphics.endFill(); 

Espero que esto aclare las cosas para usted.

+0

No veo qué es más fácil con esto, acaba de voltear dos líneas. Es exactamente lo mismo, dibujas dos formas y se cruzan dejando el resultado. –

+0

Sí, es su derecho, no debería haber usado la palabra más fácil. Allí lo mismo – enzuguri

Cuestiones relacionadas