Actionscript 3 当某物处于透视图中时改变位置

Actionscript 3 当某物处于透视图中时改变位置,actionscript-3,geometry,flash-builder,Actionscript 3,Geometry,Flash Builder,我想在透视图中画一个网格,在左下角画一个圆。 但我没能把它做好 首先,我画了一个没有透视的网格和圆 public class test extends MovieClip { private var _gridSprite:Sprite; private var _xLineHolder:Sprite; private var _yLineHolder:Sprite; private var _circle:Sprite;

我想在透视图中画一个网格,在左下角画一个圆。 但我没能把它做好

首先,我画了一个没有透视的网格和圆

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);
            }
        }
    }
结果已经不好了。圆不再位于网格的左下角

我的问题是:如何更改圆的位置,使其在透视图中位于网格的左下角?

我试了很多,但我的数学不再那么好了。 这是一个示例代码,它没有将圆放在左下角

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);
我希望你能理解我的问题,并能帮助我

谢谢


文森特我认为你把问题复杂化了。只需在同一容器中旋转栅格和圆。在本例中,您的“test”类是容器,但您始终可以创建另一个sprite作为容器


因此,如果您想旋转栅格和圆,只需执行
this.rotationY=-20
而不是
\u gridSprite.rotationY=-20

谢谢,这很有效,笨蛋,我忘了。但现在我想通过拖动圆来更改网格的尺寸。当我这样做时,鼠标指针不在透视图中,但圆圈在透视图中。所以我需要同样的公式把红色圆圈放在鼠标指针下,请接受这个答案。我不知道你所说的“鼠标指针不在透视图中”到底是什么意思。您可能需要为此创建另一个问题。另外,为什么不使用3D库,因为您似乎正在尝试创建某种3D编辑器?
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);