Показать сообщение отдельно
Старый 06.07.2011, 02:58
Azo вне форума Посмотреть профиль Отправить личное сообщение для Azo Найти все сообщения от Azo
  № 10  
Ответить с цитированием
Azo
 
Аватар для Azo

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
Так)) ну попробую сюда вписать:

Код AS3:
 
//есть у нас лоадер который загружен через fileReferance
//и вытаскиваем из него картинку и вставляем на экран
 
var bmp:Bitmap =  loader.content as Bitmap;
 
// если мы просто добавим на экран bmp то при rotate - он будет поворачиваться от начала его координат
// а мне надо чтобы вращался вокруг своейго цента и поэтому я решил создать Sprite и вставить в него bmp
 
var sprite: Sprite = new Sprite();
bmp.x=-bmp.width/2;
bmp.y=-bmp.height/2;
sprite.addChild(bmp);
this.addChild(sprite);
//на sprite вещаем listeners на перемещение зажимая мышкой чтобы перемещать туда сюда...
// это сейчас не суть и поэтому упустим этот бытовой стандартный код
 
// теперь нарисуем поверх всего прямоугольник , который означает служит маской вырезания изображения
var rect:Sprite=new Sprite();
rect.graphics.lineStyle(1,0xff0000);
rect.graphics.drawRect(0,0,130,520);
rect.x=srite.width/2-rect.width/2;
rect.y=sprite.height/2-rect.height/2;// расположили в центре картинки
this.addChild(rect);
 
 
/// теперь эксперементы...
///-----------------------------------------------
///-----------------------------------------------
///-----------------------------------------------
///-----------------------------------------------
 
var matrix:Matrix=new Matrix();
matrix.tx=-sprite.width/2 +rect.x- sprite.x;
matrix.ty=-sprite.height/2+rect.y-sprite.y;
 
//создаем bitmapData и вырезаем в него кусок из картинки bmp маской rect у которого размеры 130x520
 
var bdata:BitmapData = new BitmapData(130, 520, true,  0xffffff);
bdata.draw(bmp,matrix, null, null, new Rectangle(0, 0, 130, 520), true);
// вырезается все нормально и правильно
 
//----------------------------
///-----------------------------------------------
///-----------------------------------------------
///-----------------------------------------------
///-----------------------------------------------
///-----------------------------------------------
 
// а теперь тоже самое но с повернутой картинкой !!!!!!!!!!!!!!!!!!!!!!!!!!
sprite.rotation=90;
 
 
var matrix:Matrix=new Matrix();
matrix.tx=-sprite.width/2 +rect.x- sprite.x;
matrix.ty=-sprite.height/2+rect.y-sprite.y;
matrix.rotate(sprite.rotation*180/Math.PI) // и в матрице делаем поворот , только перевели в радианы
 
//создаем bitmapData и вырезаем в него кусок из картинки bmp маской rect у которого размеры 130x520
 
var bdata:BitmapData = new BitmapData(130, 520, true,  0xffffff);
bdata.draw(bmp,matrix, null, null, new Rectangle(0, 0, 130, 520), true);
// вырезается криво!!!!! Угол поворота задан верно, но tx и ty сбиваются :-(


P.s.
Писал с ipad, могу быть орфаграфические ошибки
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH


Последний раз редактировалось Azo; 06.07.2011 в 03:06.