0
這是我的代碼(冷凝於所討論的功能):線型()內爲環路產生斷開角度
public function redrawNewShape() {
var tempAX:Number;
var tempAY:Number;
var tempBX:Number;
var tempBY:Number;
var tempLineThickness:Number;
var tempLineColour:uint;
var tempLineJoints:String;
var tempLineMiter:Number;
var tempSprite:Sprite;
tempSprite = new Sprite;
tempSprite = shapeArray[1];
tempSprite.graphics.clear()
if (fillTransparency == 0) {
tempSprite.graphics.beginFill(shapeArray[3],1);
}
tempSprite.graphics.moveTo(linesArray[(linesArray.length - 2)],linesArray[(linesArray.length - 1)]);
for (var d = 0; d < (linesArray.length/4); d++) {
tempAX = linesArray[(d*4)];
tempAY = linesArray[((d*4)+1)];
tempBX = linesArray[((d*4)+2)];
tempBY = linesArray[((d*4)+3)];
tempLineThickness = lineStyleArray[(d*4)];
tempLineColour = lineStyleArray[((d*4)+1)];
tempLineMiter = lineStyleArray[((d*4)+3)];
if (lineStyleArray[((d*4)+2)] == 0) {
tempLineJoints = JointStyle.MITER;
} else if (lineStyleArray[((d*4)+2)] == 1) {
tempLineJoints = JointStyle.ROUND;
} else if (lineStyleArray[((d*4)+2)] == 2) {
tempLineJoints = JointStyle.BEVEL;
}
tempSprite.graphics.lineStyle(tempLineThickness,tempLineColour,1,false,"normal","none",tempLineJoints,tempLineMiter)
tempSprite.graphics.curveTo(tempAX,tempAY,tempBX,BY)
}
if (fillTransparency == 0) {
tempSprite.graphics.endFill();
}
}
此功能重繪通過屬性在陣列shapeArray,linesArray定義在我的程序的形狀,和lineStyleArray。問題是無論我設置的JointStyle是什麼,我的程序中的形狀角度都沒有連接。我不能上傳示例圖片,因爲我沒有得到至少10個聲望,想象兩條粗線,沒有帽子以90度的角度連接,而不是拐角被圓化,斜切或者斜着,而是有一個在兩條線的寬度的一半寬度的形狀間隙)
我不明白爲什麼,如果我把tempSprite.graphics.lineStyle放在for循環之外,角度是連接的。它在lineStyle的Actionscript 3.0參考中聲明:
「您可以在繪製路徑的過程中調用lineStyle()方法,以便爲路徑內的不同線段指定不同的樣式。
那麼爲什麼它不能在循環內工作?
實施例把LINESTYLE外部for循環(與手動添加的臨時值):
public function redrawNewShape() {
var tempAX:Number;
var tempAY:Number;
var tempBX:Number;
var tempBY:Number;
var tempLineThickness:Number;
var tempLineColour:uint;
var tempLineJoints:String;
var tempLineMiter:Number;
var tempSprite:Sprite;
tempSprite = new Sprite;
tempSprite = shapeArray[1];
tempSprite.graphics.clear()
if (fillTransparency == 0) {
tempSprite.graphics.beginFill(shapeArray[3],1);
}
tempSprite.graphics.moveTo(linesArray[(linesArray.length - 2)],linesArray[(linesArray.length - 1)]);
tempSprite.graphics.lineStyle(10,0x000000,1,false,"normal","none","miter",3)
for (var d = 0; d < (linesArray.length/4); d++) {
tempAX = linesArray[(d*4)];
tempAY = linesArray[((d*4)+1)];
tempBX = linesArray[((d*4)+2)];
tempBY = linesArray[((d*4)+3)];
tempLineThickness = lineStyleArray[(d*4)];
tempLineColour = lineStyleArray[((d*4)+1)];
tempLineMiter = lineStyleArray[((d*4)+3)];
if (lineStyleArray[((d*4)+2)] == 0) {
tempLineJoints = JointStyle.MITER;
} else if (lineStyleArray[((d*4)+2)] == 1) {
tempLineJoints = JointStyle.ROUND;
} else if (lineStyleArray[((d*4)+2)] == 2) {
tempLineJoints = JointStyle.BEVEL;
}
tempSprite.graphics.curveTo(tempAX,tempAY,tempBX,tempBY)
}
if (fillTransparency == 0) {
tempSprite.graphics.endFill();
}
}
當我將CapStyle更改爲Round或Square時,角度沒有間隙。但是我不能使用我想要的Mitre JointStyle。 – user3247094
我的回答是爲了告訴你,這太難實施了,因此不受支持。 –