Вход

Просмотр полной версии : Как сместить точку регистрации у Bitmap ?


NoCD
11.02.2010, 18:28
Всем привет!

Делаю копию круга(у круга точка регистрации находится в центре). А вот у bitmap - ы, точка регистрации находится в верхнем левом углу, как мне её сместить, что бы точка регистрации находилась по центру?
У bitmap нужен центр, что бы проверять множество ball на столкновение.

Вот пример:

import flash.display.BitmapData;
import flash.geom.Matrix;


var mc:MovieClip = attachMovie("mc","mc",1000)

mc._x = 200;
mc._y = 200;

var bmp = new BitmapData(80,80,true,0x00000000)
var matrix:Matrix = new Matrix();

var circle = createEmptyMovieClip("ball",1009)


circle.attachBitmap(bmp,2000+t)
matrix.tx= circle._width/2;
matrix.ty= circle._height/2;

bmp.draw(mc,matrix);
bmp.cacheAsBitmap = true;
mc.removeMovieClip();

circle._rotation = 45;


Если это не возможно, то как решить эту задачу иначе?

Hauts
11.02.2010, 18:49
Компенсировать разности координат точек центра при расчетах.

Сдвиг центра у битмапа вправо и вниз — это тоже самое, что сдвиг изображения вверх и влево. Три четверти изображения пропадут.

NoCD
11.02.2010, 20:31
Что ж, будем компенсировать в расчетах:(

expl
12.02.2010, 01:03
Можно на том же муви-клипе вместо аттача битмапы
нарисовать прямоугольник с заливкой этой битмапой
а нарисованный прямоугольник можно пододвинуть как хочется.

На худой конец можно обернуть мувиклип с этой битмапой еще в один.

А компенсация в расчетах - это:
- либо делать методы setX(value) и getX(), setY(value) и getY(), в которых выставлять истинное положение мувиклипа
- Придется вместо _x = 10 писать setX(10)
(в as2, насколько помню перегрузка полей типа _x связана с большими траблами, поэтому придется обходиться методами с именами отличными от _x и
_y)
- Если шарик нужно повернуть - добавиться еще и setRotation и веселая тригонометрия

ИМХО оно того не стоит.