###前提・実現したいこと
ActionScript3.0で線付き四角形を描画したSpriteの外枠のサイズを正確に得たいのですが
DisplayObject.getBounds ではscaleXやscaleYを変更すると外枠のサイズが正確に取れません。
###発生している問題・エラーメッセージ
赤い太枠の四角は、線の太さ30、でdrawRectによって描画されています。
青い細い枠線が、DisplayObject.getBounds で取得した四角形です。
本来であれば、この赤枠の外周にぴったりと当てはまって欲しいのですが、そうなっていません。
###該当のソースコード
import flash.display.Sprite; import flash.display.LineScaleMode; import flash.geom.Rectangle; //赤枠描画 var box: Sprite = new Sprite(); box.graphics.lineStyle(30, 0xFF0000, 1.0, false, LineScaleMode.NORMAL , "none", "miter"); box.graphics.drawRect(0, 0, 150, 200); box.x = 500; box.y = 100; box.scaleX = 3.0; addChild(box); //赤枠外周の矩形を取得 var rect: Rectangle; rect = box.getBounds(this); //青枠で赤枠外周の矩形を描画 var outline: Sprite = new Sprite(); outline.graphics.clear(); outline.graphics.lineStyle(1, 0x0000FF); outline.graphics.moveTo(rect.x, rect.y); outline.graphics.lineTo(rect.x + rect.width, rect.y); outline.graphics.lineTo(rect.x + rect.width, rect.y + rect.height); outline.graphics.lineTo(rect.x, rect.y + rect.height); outline.graphics.lineTo(rect.x, rect.y); addChild(outline);
###試したこと
課題に対してアプローチしたことを記載してください
LineScaleMode.NORMAL を LineScaleMode.NONE などに設定しても、若干のズレが出てしまいます。
drawRect で描画しない方法も考えられるのですが、最終手段として考えています。
上記の条件で取得する方法がないか、ご存知の方がおられましたら
何卒、よろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
Animate CC 2017
ActionScript 3.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/26 09:44