2010-09-02 33 views
7

Được rồi vì vậy về cơ bản tôi muốn vẽ một vòng tròn trong as3 có một 'lỗ' trong nó (giống như một chiếc bánh rán). Một cái gì đó như thế này, nhưng không có đề cương:as3: vẽ vòng tròn với một lỗ trong nó chỉ sử dụng ActionScript

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

này không hoạt động:

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

tôi muốn nói điều này dường như nó muốn được đơn giản nhưng tôi không thể tìm thấy bất kỳ thông tin về nó. Tôi cũng nên đề cập đến rằng tôi đang cố gắng để chỉ vẽ 3/4 của vòng tròn, như 3/4 của bánh rán. Vì vậy, tôi đã có kế hoạch vẽ một vòng tròn trong suốt và hình vuông trên vòng tròn ban đầu, tôi biết điều này có vẻ hơi kỳ lạ vì bạn mong đợi một cái gì đó trong suốt để hiển thị những gì bên dưới nó.

Trả lời

2

Bạn chỉ có thể làm cho độ dày đường kẻ rộng mong muốn và tránh sử dụng beginFill đặt graphics.lineStyle Để làm cho nó chỉ bằng 3/4 cách bạn có thể sử dụng curveTo để vẽ 3 phần tư.

10

Thực sự rất đơn giản. Xem đoạn mã sau:

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

nút giao thông triệt tiêu lẫn nhau cho đến khi bạn gọi endFill

Goodluck!

+0

chỉ điều tôi không hiểu là, tại sao nút giao thông triệt tiêu lẫn nhau? – dharm0us

+0

Tôi tìm thấy một liên kết hữu ích: http://www.senocular.com/flash/tutorials/flash10drawingapi/ – dharm0us

+0

Đó là một đọc tốt, nó tập trung vào API vẽ mới mặc dù, vì vậy hãy cẩn thận! –

1

Phương pháp trên của Tyler hoạt động, tuy nhiên nếu cách dễ dàng hơn để thực hiện việc này đơn giản là bắt đầu vẽ vòng tròn bên trong trước tiên. Về cơ bản Flash không thực sự điền màu cho đến khi bạn gọi endFill() (một lần nữa như đã đề cập bởi Tyler), vì vậy bạn bắt đầu vẽ trên vòng tròn bên trong, sau đó vòng tròn ngoài sau đó trên endFill() Flash lấp đầy trong khoảng trống.

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

Hy vọng điều này sẽ xóa mọi thứ cho bạn.

+0

Tôi không thấy điều gì dễ dàng hơn về điều này, bạn chỉ cần lật hai dòng xung quanh. Nó chính xác cùng một điều, bạn vẽ hai hình dạng và chúng được giao nhau để lại kết quả. –

+0

Vâng quyền của bạn, không nên sử dụng từ dễ dàng hơn. Có cùng – enzuguri

Các vấn đề liên quan