Просмотр полной версии : bitmapdata положение точки поворота
можно ли указать в bitmapdata место положение точки относительно которой объект поворачивает и позиционируется на сцене ?
BitmapData это массив чисел. Он как бы не позиционируется на сцене, поскольку не может на ней оказаться.
С "объект поворачивает" и "место положение точки" в подразумеваемом Вами контексте ситуация аналогичная. Массив это не визуальный объект.
эмм ну я же могу задавать этому мосиву чисел при draw позиционирование, я чевот походу не догоняю)
Чевот не догоняете :), Можно изменить точку регистрации (а это так называется ) у DisplayObject-а (Sprite, MovieClip, Shape, Bitmap etc.) переопределив, например, акцессоры (get и set) x,y этого объекта.
Еще может быть полезно (если это как-то связанно с вращением) будет вот это почитать: http://www.flasher.ru/forum/blog.php?b=378.
fish_r, спасибо за ссылку на статью но пишу на as3 и так понимаю там нет метода rotateAroundInternalPoint
ну либо я совсем дибил =)
проблема именна с врашением, точнее координатами обьект при вращении, имеется обект ось(точка регистрации) находится грубо говоря в центре обьекта, и создается bitmap у которого данная точка становится в 0,0 обьекта, позиционирование и поворот дублируется из первого обьекта, и при повороте копия смешается, потому появилась потребность сместить данную точку так же как в первом обьекте
Сделайте пустой спрайт, положите туда битмап и сдвиньте его в спрайте на половину ширины и половину высоты влево вверх (в отрицательные координаты) – чтобы центр битмапа приходился на (0, 0) спрайта. И дальше обращайтесь со спрайтом так, как будто у него точка регистрации в центре. Задать ТР программно в том же смысле, как "руками" в ИДЕ не получится. Только так или тригонометрическими рассчетами, смещая битмап после поворота. Сто раз обсуждалось.
fish_r, спасибо за ссылку на статью но пишу на as3 и так понимаю там нет метода rotateAroundInternalPoint
ну либо я совсем дибил =)
метод есть (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/fl/motion/MatrixTransformer.html#rotateAroundInternalPoint%28%29):)
прикрепил пример того что натворил, может кто тыкнет носом де я лох,
а по поводу сто раз обсуждалось можно линку если не сложно
SvetozarPNZ
03.10.2011, 17:11
или тригонометрическими рассчетами, смещая битмап после поворота.
Кстати, тригонометрический расчет - это костыльный способ? Можно им пользоваться желающим стать труфлешерами? :)
Костыльный – это дополнительный контейнер. Вот он да, именно костыль. А тригонометрические рассчеты это единственный вариант решения, будете Вы использовать Матрицы или двигать "ручками" х и у – синусы и косинусы все-равно считать.
сработало вот в таком виде
while (i--) {
var curB = boxes[i];
bmpCar.fillRect(bmpCar.rect, 0);
var myBox : Shape = new Shape();
myBox.graphics.lineStyle(1, 0x000000);
myBox.graphics.beginFill(0x000000);
myBox.graphics.drawRect(16, 16, 32, 32);
myBox.graphics.endFill();
var myMatrix : Matrix = myBox.transform.matrix;
var axisPoint : Point = new Point(car.carBody.width/4, car.carBody.height/2);
var newPoint : Point = myMatrix.transformPoint(axisPoint);
myMatrix.translate(-axisPoint.x, -axisPoint.y);
myMatrix.rotate(car.rotation*(3.14/180));
myMatrix.translate(car.x, car.y);
bmpCar.draw(car.carBody, myMatrix);
if (bmpCar.hitTest(new Point(), 255, curB, new Point(), 255)) {
//trace('yra'+Math.random()*5);
speed =2;
}
}
к сожалению так и не разобрался =(
fish_r, спасибо за ссылку на статью но пишу на as3 и так понимаю там нет метода rotateAroundInternalPoint
ну либо я совсем дибил =)
проблема именна с врашением, точнее координатами обьект при вращении, имеется обект ось(точка регистрации) находится грубо говоря в центре обьекта, и создается bitmap у которого данная точка становится в 0,0 обьекта, позиционирование и поворот дублируется из первого обьекта, и при повороте копия смешается, потому появилась потребность сместить данную точку так же как в первом обьекте
Раз вы компилите в ИДЕ 5.5, то точно есть, этот класс поставляется только с Flash IDE. По ссылке, кстати,
речь и идёт про as3 :)
По вашей задаче. Можно оба объекта поместить (можно временно, на время выполнения) в общий для них контейнер, контейнер повернуть нужным образом, затем вынуть объекты из контейнера, предварительно преобразовав их локальные координаты в глобальные, затем переразместить эти элементы уже вне контейнера. См. 1 пункт по ссылке которую я дал выше, это простейший вариант.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.