1
我想透視畫出一個網格,並在左下角畫一個圓。 但我無法弄清楚。當透視物體時改變位置
因此,首先我繪製網格和圓而沒有透視。
public class test extends MovieClip
{
private var _gridSprite:Sprite;
private var _xLineHolder:Sprite;
private var _yLineHolder:Sprite;
private var _circle:Sprite;
public function test()
{
init();
}
private function init()
{
_gridSprite = new Sprite();
this.addChild(_gridSprite);
_xLineHolder = new Sprite();
_gridSprite.addChild(_xLineHolder);
_yLineHolder = new Sprite();
_gridSprite.addChild(_yLineHolder);
draw();
_circle = new Sprite();
_circle.graphics.beginFill(0xFF0000);
_circle.graphics.drawCircle(0, 0, 5);
this.addChild(_circle);
//Here do I set the position of the circle
_circle.x = _gridSprite.width + _gridSprite.x;
_circle.y = _gridSprite.height + _gridSprite.y;
}
private function draw()
{
var spaceXDiv:Number = 160/20;
var spaceYDiv:Number = 160/20;
_xLineHolder.graphics.clear();
_yLineHolder.graphics.clear();
_xLineHolder.graphics.lineStyle(1);
_yLineHolder.graphics.lineStyle(1);
for(var i:int = 0; i <= spaceXDiv; i++){
_xLineHolder.graphics.moveTo(i * 20, 0);
_xLineHolder.graphics.lineTo(i * 20, 160);
}
for(var j:int = 0; j <= spaceYDiv; j++){
_yLineHolder.graphics.moveTo(0, j * 20);
_yLineHolder.graphics.lineTo(160, j * 20);
}
}
}
有了這個代碼,我得到以下結果
這一切ok,圓是TE左下角。
現在我在init()
設置網格的角度。我使用rotationY(我不知道這是否正確)。角度是20度。
_gridSprite = new Sprite();
this.addChild(_gridSprite);
_gridSprite.rotationY = -20;
結果不再好。該圓形不再位於網格的左下角。
我的問題是:我該如何改變圓的位置,使其在透視網格的左下角?
我嘗試了很多,但我的數學是不是那麼好了。 這是不會將圓圈放在左下角的示例代碼。
var gridLeft:Number = _gridSprite.width + _gridSprite.x;
_circle.x = gridLeft - gridLeft * Math.tan(20 * Math.PI/180);
var gridBottom:Number = _gridSprite.height + _gridSprite.y;
_circle.y = gridBottom - gridBottom * Math.tan(20 * Math.PI/180);
我希望你明白我的問題,你可以幫助我。
感謝,
文森特
感謝,TIS工作的,愚蠢的我忘了。但現在我想通過拖動圓圈來改變網格的尺寸。當我這樣做時,鼠標指針不是透視圖,而是圓圈。所以我需要相同的公式把鼠標指針下的紅圈放在 – Vinzcent 2011-05-17 14:33:56
那麼請接受這個答案。我不確定'鼠標指針是不是透視'的意思。您可能想爲此創建另一個問題。另外,爲什麼不使用3D庫,因爲您似乎在嘗試創建某種3D編輯器? – 2011-05-17 14:37:12