使用最少量的代碼/迭代嘗試在閃存中繪製圓弧,並繪製圓環楔(具有內部和外部圓弧的圓弧)。我從一箇舊的AS2例子中移植了這個方法,但是它需要通過多個步驟循環才能使它看起來平滑,我寧願避免這種情況。我看到AS3有一個「curveTo」命令,但它並不真正繪製圓弧,它繪製了一條貝塞爾曲線。閃光燈中是否有弧線命令?或者繪製一段圓的方法?flash as3使用curveTo
這裏是我的舊代碼:
function drawSolidArc (drawObj:Object, centerX:Number,centerY:Number,innerRadius:Number,outerRadius:Number,startAngle:Number,arcAngle:Number,steps:int=20):void {
if (Math.abs(startAngle)>360)startAngle%=360
if (Math.abs(arcAngle)>360)arcAngle%=360
startAngle/=360,arcAngle/=360
var twoPI:Number = 2 * Math.PI;
var angleStep:Number = arcAngle/steps;
var angle:Number, i:int, endAngle:Number;
var xx:Number = centerX + Math.cos(startAngle * twoPI) * innerRadius;
var yy:Number = centerY + Math.sin(startAngle * twoPI) * innerRadius;
var xxInit:Number=xx;
var yyInit:Number=yy;
drawObj.graphics.moveTo(xx,yy);
for(i=1; i<=steps; i++) {
angle = (startAngle + i * angleStep) * twoPI;
xx = centerX + Math.cos(angle) * innerRadius;
yy = centerY + Math.sin(angle) * innerRadius;
drawObj.graphics.lineTo(xx,yy);
}
endAngle = startAngle + arcAngle;
for(i=0;i<=steps;i++) {
angle = (endAngle - i * angleStep) * twoPI;
xx = centerX + Math.cos(angle) * outerRadius;
yy = centerY + Math.sin(angle) * outerRadius;
drawObj.graphics.lineTo(xx,yy);
}
drawObj.graphics.lineTo(xxInit,yyInit);
};
var myArc:Shape = new Shape(); //or another DisplayObject
myArc.graphics.beginFill(0xcccccc, 0.50);
//objName, centerX,centerY, innerRadius, outerRadius, startAngle (12 o'clock is -90), arcAngle (degrees from startAngle), steps (smoothness)
drawSolidArc (myArc,250, 250, 180, 200, -90, 65, 100);
myArc.graphics.endFill();
this.addChild(myArc);
我沒有看到文件名爲cubicCurveTo任何功能,當我嘗試使用該功能我得到的錯誤。 – mheavers
只需按照聯繫;) 語言版本:\t的ActionScript 3.0 運行時版本:\t的Flash Player 11,AIR 3 – Kodiak
我甚至無法在CS5發佈到Flash Player 11 - 不是一個真正的可行的選擇,我現在。我看到一個MXP增加了這個功能,但是你必須在計算機上以管理員身份運行才能安裝它,這對我來說也不是一種選擇。但在更新版本的閃光燈中使用更精確的曲線方法會很好。 – mheavers