В чем разница между a.x = 100; a.y = 100 и aove (100 100)? - PullRequest
0 голосов
/ 25 мая 2009

Какая разница между

a.x = 100;
a.y = 100;

и

a.move(100,100);

в ActionScript 3 / Flex?

С уважением,
Артем

Ответы [ 6 ]

2 голосов
/ 25 мая 2009

Что такое? Если бы мы знали, что такое «а», то было бы проще ответить. A.x или a.y обычно определяют координаты верхнего левого угла объекта (скажем, Button) в его родительском элементе (скажем, Canvas).

Если «a» было кнопкой, то установка .x и .y или установка move (x, y) сделают то же самое.

Check the docs out 'Перемещает компонент в указанную позицию в пределах его родителя. Вызов этого метода точно такой же, как установка свойств x и y компонента. «

http://livedocs.adobe.com/flex/3/langref/index.html, это под UIComponent.

2 голосов
/ 25 мая 2009

В общем: вызов метода сообщает о том, что вы делаете, просто высовывание переменных-членов не дает.

Как сказал ChrisF, также может быть разница, когда смещение перемещается к абсолютным координатам, тогда как вызов метода смещается относительно текущей позиции. Я пытался найти ссылку, но не нашел ее.

1 голос
/ 26 мая 2009

Вот случай, когда лучше использовать Move:

Если вы переопределяете метод updateDisplayList() в пользовательском компоненте, вам следует вызывать метод move() вместо установки свойств x и y. Разница в том, что метод move() меняет расположение компонента, а затем отправляет событие move при вызове метода, а установка свойств x и y изменяет местоположение компонента и отправляет событие при следующем обновлении экрана.

1 голос
/ 26 мая 2009

Свойства ActionScript могут фактически поддерживаться методами - так называемыми парами getter / setter. Поэтому, когда вы устанавливаете свойство a.x = 100, вполне вероятно, что выполняется код, чтобы справиться с последствиями этого изменения свойства. (Не зная, какой тип a здесь, невозможно знать наверняка - действительно, никогда невозможно узнать вообще, и вы не должны предполагать, что вы делаете)

Будьте осторожны с одной вещью: вызов одиночного метода, такого как a.move (x, y) , может сильно отличаться от вызова двух, двух отдельных методы установки за ax = q и ay = r Все зависит от того, как реализован используемый вами класс. По этой причине многие классы инфраструктуры Flex (все?) Используют шаблон invalidateProperties () ... commitProperties (), чтобы обеспечить координацию всех изменений свойств через одну контрольную точку.

1 голос
/ 25 мая 2009

Просто угадаю (я не знаю ActionScript), но я бы подумал, что

a.x = 100;
a.y = 100;

установит для (100, 100), а

a.move(100,100);

добавит (100,100) к текущему значению a. Однако в свете принятого ответа кажется, что он делает то же самое. Хотя следующий совет остается в силе:

Вы пробовали последнее для различных начальных значений (0, 0), (100, 100), (23, 42) и т. Д. И проверяли, что происходит?

Если вы не уверены в чем-то, проверьте это - вы ничего не сломаете, и даже если ошибетесь с первого раза, вы можете чему-то научиться.

Я быстро искал документацию, но не смог ничего найти. Я думаю, что вам лучше всего создать несколько тестовых примеров, чтобы изучить, что делает каждый подход.

0 голосов
/ 28 мая 2009
[WINDOWS_USER_PROFILE_PATH]\Local Settings\Application Data\Adobe\Flash[version]\en\Configuration\Classes

Всегда смотри сюда, чтобы точно знать. Если вы имеете в виду UIControl, то посмотрите на [PATH_ABOVE]\mx\core\UIObject.as

И вы увидите разницу:

function move(x:Number, y:Number, noEvent:Boolean):Void
{
    //trace("UIObject.move " + this + " -> (" + x + ", " + y + ")");
    var oldX:Number = _x;
    var oldY:Number = _y;

    _x = x;
    _y = y;

    if (noEvent != true)
    {
        dispatchEvent({type:"move", oldX:oldX, oldY:oldY});
    }
}

Итак, правильный ответ: после присвоения новых координат этот метод отправляет событие 'move', снабженное старыми координатами. Вот и все.

PS: если вы используете другой flash-компилятор - просто найдите его определения классов где-нибудь на вашем компьютере ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...