我在清除/重繪圖形時遇到了使用JointStyle.MITER的不良後果。ActionScript - 使用JointStyle.MITER清除圖形Bug?
我的項目涉及用圓形和銳邊來管理自定義線條圖形,這就是爲什麼我想使用斜接頭的風格。
當線條的厚度大大增加時,即使是線條的圓形區域也受到斜角樣式的影響。雖然我覺得這不幸,但這是可以理解的,而不是我指的錯誤。當減少線條粗細並不能完全清除圖形時,會發生錯誤(?),每當厚度發生變化時,按照代碼的指示執行此操作,從而使線條圖形出現僞跡。文物還留下鋒利的邊緣,而不僅僅是圓角。
我在Mac OS X Snow Leopard(10.6.4)上使用Flash Player 10.1.53.64版。
你可以通過運行下面的示例代碼來測試。使用左右鍵盤箭頭更改圓形矩形的行程的粗細。
更新:圖形工件是膚淺的。在形狀出現後將形狀拖動到它們的位置將會移除它們。代碼使用拖動功能進行更新。
package
{
import flash.display.CapsStyle;
import flash.display.JointStyle;
import flash.display.LineScaleMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
public class StrokeWidth extends Sprite
{
private var roundRect:Sprite = new Sprite();
private var strokeThickness:Number = 6;
public function StrokeWidth()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(evt:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownEventListener);
roundRect.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventListener);
roundRect.addEventListener(MouseEvent.MOUSE_UP, mouseEventListener);
drawRoundRect();
roundRect.x = roundRect.y = 100;
addChild(roundRect);
}
private function drawRoundRect():void
{
roundRect.graphics.clear();
roundRect.graphics.lineStyle(strokeThickness, 0x000000, 1.0, true, LineScaleMode.NONE, CapsStyle.NONE, JointStyle.MITER);
roundRect.graphics.beginFill(0xFF0000);
roundRect.graphics.drawRoundRect(0, 0, 400, 200, 100);
}
private function mouseEventListener(evt:MouseEvent):void
{
switch (evt.type)
{
case MouseEvent.MOUSE_DOWN: roundRect.startDrag(); break;
case MouseEvent.MOUSE_UP: roundRect.stopDrag();
}
}
private function keyDownEventListener(evt:KeyboardEvent):void
{
switch (evt.keyCode)
{
case Keyboard.LEFT: strokeThickness -= 1; break;
case Keyboard.RIGHT: strokeThickness += 1;
}
drawRoundRect();
}
}
}
THANKYOU !!只是在尋找解決相同問題的方法。解決方案完美運作:-) – 2011-02-13 13:27:21