Флэш-программирование от локальной до глобальной проблемы - PullRequest
2 голосов
/ 21 июля 2011

У меня странная проблема, и я просто не могу ее решить. Я использую localToGlobal, чтобы получить координаты для моего персонажа и сделать контрольную точку для клипа уровня. Все отлично работает во флеш плеере 10.1. r52

Но затем я открываю тот же самый .swf на другом компьютере, на котором установлен флэш-плеер 10.0 r22, и тестирование не работает. Я все перепробовал, отслеживая родителей и т. Д.

Настройка:

Main Class, в Main Class я добавляю класс Game (Sprite). В класс игры я добавляю класс уровня (спрайт) и класс персонажа (спрайт)

«камера» следует за персонажем, а класс Game перемещается вокруг.

So

Main (статический x & y)> Игра (динамическая х & у)> Уровень (статический x & y) и персонаж (динамический x & y) это мой код:

    private function checkLanded():Boolean
    {//this code runs on the character class, so 'this' = character
        var localPoint:Point = new Point(this.x, this.y + this.myHeight / 2 + 1);
        var globalPoint:Point = parent.localToGlobal(localPoint)

        if (Settings.levelGround.hitTestPoint(globalPoint.x,globalPoint.y,true) || Settings.levelPlatforms.hitTestPoint(globalPoint.x,globalPoint.y,true))
        {
            return true;
        }
        return false;
    }

Так что этот код отлично работает во Flash Player 10.1, но не в 10.0 Теперь для 10.0 вместо использования parent.globalToLocal, я попробовал parent.parent.globalToLocal, который работает в 10.0, а не в 10.1.

Как я могу убедиться, что этот код будет работать во всех флеш-плеерах.

** Edit- Я исправил это, я переместил основной класс вокруг, что каким-то образом нарушило систему координат вспышки. Затем я попытался переместить игровой класс по кругу, и это, похоже, сработало. Все еще задаюсь вопросом, почему перемещение основного класса arround не работает ..


Пожалуйста, помогите мне,

Заранее спасибо,

Эрик Сомбрук

1 Ответ

0 голосов
/ 05 декабря 2011

это способ узнать координаты экранного объекта применительно к этапу

public function getDisplayObjectsRootCoord(target:DisplayObject):Point{
    var coords:Point = target.localToGlobal(new Point());
    return coords;
}

или посмотреть, находится ли мышь над элементом ...

var target:MovieClip;
var stage:Stage;// make sure you have a reference to this
var mouseOverPanel:Boolean = target.hitTestPoint(stage.mouseX,stage.mouseY,true);
...