PDA

Просмотр полной версии : Ширина спрайта.


akeman
28.01.2008, 20:36
Такой, хм, простой вопрос.

Создаю спрайт. Добавляю в него битмап шириной, допустим, 50px.
Спрашиваю ширину спрайта. Как и ожидается 50px.

Сдвигаю битмап вправо внутри(!) спрайта.
bitmap.x=100; Сдвигается.

Спрашиваю ширину спрайта.
Ожидаю получить 150px. Но она 50px!
В то время как его верхний левый угол все еще лежит в 0.

Глупо, но я не врубаюсь. Разъясните, пжста, по-возможности.

etc
28.01.2008, 22:33
А с чего вы взяли, что некоторая точка, взятая за начало координат клипа, как-то влияет на его ширину?

akeman
28.01.2008, 23:45
Я предположил, что ширина спрайта расчитывается как расстояние
от самой левой его точки до самой правой границы одного из его внутренних элементов.
(при данном граничном условии)

Т.к.

sprite.x = 0; // Предполагаю, относительно stage.
bitmap.x = 100; //Предполагаю, относительно sprite'a.
bitmap.width = 50;

то, как показалось логичным, ширина спрайта должна была составить 150px.

Или отступ bitmapa'a (bitmap.x) расчитывается не относительно спрайта, в который он вложен?
Тогда как расчитать отступ именно внутри него?:(

etc
29.01.2008, 01:17
Ширина спрайта равна ширине прямоугольника, в который вписываются все дети этого спрайта.
Отступы и проч. — методы getBounds, getRect.

akeman
29.01.2008, 01:42
ясно. спасибо.

почему-то я был уверен, что отступы тоже засчитываются.
Вроде элемента со стилями (margin-left,top..), вставленного в таблицу в HTML.

Выходит, что bitmap.x=100; задает отступ относительно главной сцены.

Думаю, можно закрывать.

etc
29.01.2008, 01:49
Флеш — это все-таки нечто большее, чем html :)
Насчет «относительно сцены» вы явно ошибаетесь, это относительно родителя, а не сцены. В общем случае утверждение относительно сцены неверно.
Закрывать, так закрывать. Клозед.