Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Глобальные координаты


Автор: PPie 12.12.2010, 00:55
Подскажите пожалуйста как узнать глобальные координаты предмета. В приведенном ниже коде мне консоль выводит только 0, и c localToGlobal и без нее.
Код

public function shot():void{
             _ball.y +=5;
            var _x:Number = localToGlobal(new Point(_ball.x, _ball.y)).x;
            var _y:Number = localToGlobal(new Point(_ball.x, _ball.y)).y;
             if ((_x >= _player2.x) && (_x <= _player2.x + width) && (_y + _radius == _player2.y)){
                 _ball.y -= 5;
                 }
             trace("_ball.x:"+_x);
         }

Автор: SoWa 12.12.2010, 10:33
http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/DisplayObject.html#localToGlobal(), и если не получится решить вопрос, то напиши так:
Код

var _x:Number = _ball.x + _ball.parent.x;
var _y:Number = _ball.y + _ball.parent.y;

Автор: zodiac 13.12.2010, 02:33
А что мешает считать координаты в локальной системе, например, в том поле, где должен летать мувик? В любом случае, клип _ball должен находиться в другом клипе, так установи у этого клипа-контейнера фиксированную ширину и высоту (например, игровое поле) и не надо будет заморачиваться с пересчетом из глобальной системы в локальную, и наоборот.
В моих проектах я использовал систему координат игрового поля, которое представляло из себя отдельный клип. Проблем не было)
ЗЫ. Сорри за небольшой оффтоп.

Автор: PPie 19.12.2010, 20:22
проблему не решил) вот код - фигура должна двигаться от края до края, а получается что она берет свои начальные координаты как (0;0) и внизу заезжает за границы сцены, а вверху до положения с которого начинала движение.
Код

function onEnter(e:Event):void
{
    for (var i:int = 0; i < rectArray.length; i++)
    {
        var rect:MovieClip = rectArray[i];
        //var w = rect.x;
        //var h = rect.y;
        addChild(rect);
        rect.y +=  speedY;
        /*if (rectArray[i].x > stage.stageWidth - rectArray[i].width)
        {
            rectArray[i].x = stage.stageWidth - rectArray[i].width;
            speedX *=  -1;
        }
        else if (rectArray[i].x < 0)
        {
            rectArray[i].x = 0;
            speedX *=  -1;
        }*/
        if (rect.y > stage.stageHeight - rect.height)
        {
            rect.y = stage.stageHeight - rect.height;
            speedY *=  -1;
        }
        else if (rect.y < 0)
        {
            rect.y = 0;
            speedY *=  -1;
        }
        //trace(rect.parent.y);
        //trace(stage.stageHeight);

    }
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)