Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.07.2011, 09:22
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 11  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Не знаю как это правильно делается. Но, для отрисовки в draw() наклоненного объекта, я передавал в матрицу метода draw() матрицу объекта который отрисовывался, только надо учитывать, что содержимое объекта при повороте может смещаться в отрицательные координаты его пространства. Чтобы это компенсировать я помещал, временно, объект в спрайт и снимал getBounds() относительно спрайта....
Кто дружит с геометрией, наверное, сделает проще


Последний раз редактировалось fish_r; 06.07.2011 в 09:41.
Старый 06.07.2011, 11:47
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
мне видится это как-то так
Код AS3:
const W:Number = 200;
const H:Number = 100;
 
// битмап (здесь из Embed)
var bmp:Bitmap = new _img();
 
 
// контейнер
var sprite:Sprite = new Sprite();
bmp.x = -bmp.width / 2;
bmp.y = -bmp.height / 2;
sprite.addChild(bmp);
sprite.x = 200;
sprite.y = 200;
sprite.rotation = 65;//90
 
// прямоугольник 
var rect:Sprite = new Sprite();
rect.graphics.lineStyle(1, 0xff0000);
rect.graphics.drawRect(0, 0, W, H);
rect.x = sprite.x - rect.width / 2;
rect.y = sprite.y - rect.height / 2;
 
//фрагмент
var matrix:Matrix = new Matrix();
var rectStagePoint:Point = rect.localToGlobal(new Point());
var rectBmpPoint:Point = bmp.globalToLocal(rectStagePoint);
 
matrix.translate( -rectBmpPoint.x, -rectBmpPoint.y);
matrix.rotate(Math.PI / 180 * sprite.rotation);
 
var bdata:BitmapData = new BitmapData(W, H, true, 0x00ffffff);
bdata.draw(bmp, matrix);
 
this.addChild(sprite);
this.addChild(rect);
// смотрим
var res:Bitmap = new Bitmap(bdata);
res.smoothing = true;
addChild(res).x=400;

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

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
Ты гений! Что еще скажешь.. СПАСИБО ГУРУ!
никогда не встречал localToGlobal.. не знал о нем..

Добавлено через 5 минут
Результат http://vkontakte.ru/app2398570
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 06.07.2011, 18:48
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 14  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
...то, о чём я говорил (отрисовка наклонённого объекта, или его фрагмента) :

Код AS3:
...
 
 
		private function createBitmapData(obj:DisplayObject):void
		{
 
 
			_rectShift = selectPosition(obj);
 
 
			_dataObject = new BitmapData( obj.width, obj.height, true, 0x00 );
			var matrix:Matrix = new Matrix(obj.transform.matrix.a, 
											obj.transform.matrix.b,
											obj.transform.matrix.c,
											obj.transform.matrix.d,
											obj.transform.matrix.tx - obj.x - _rectShift.x,
											obj.transform.matrix.ty - obj.y - _rectShift.y);
 
			_dataObject.draw( obj , matrix, obj.transform.colorTransform );
 
			_dObject = new Bitmap(_dataObject);
 
		}
 
		private function selectPosition(obj:DisplayObject):Rectangle
		{
			var sp:Sprite = new Sprite();
			var rect:Rectangle;
			var childIndex:uint;
 
 
			if ( obj.parent !== null)
			{
				childIndex = obj.parent.getChildIndex(obj);
				obj.parent.addChildAt(sp, childIndex);
				sp.x = obj.x;
				sp.y = obj.y;
				sp.addChild(obj);
				rect = obj.getBounds(sp);
				sp.parent.addChildAt(obj, childIndex);
				obj.x = sp.x;
				obj.y = sp.y;
				obj.parent.removeChild(sp);
				sp = null;
 
			}
			else
			{
				sp.addChild(obj);
				rect = obj.getBounds(sp);
				rect.x -= obj.x;
				rect.y -= obj.y;
				sp.removeChild(obj);
				sp = null;
 
 
			}
 
			return rect;
 
		}
оффтоп. Нет опыта в использовании чужой графики. Вы не нарушаете права авторов этой графики? Или вы этот вопрос не рассматривали?


Последний раз редактировалось fish_r; 06.07.2011 в 18:51.
Старый 07.07.2011, 00:09
Azo вне форума Посмотреть профиль Отправить личное сообщение для Azo Найти все сообщения от Azo
  № 15  
Ответить с цитированием
Azo
 
Аватар для Azo

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


кстати а как вырезать картинку в фроме микимауса? Только квадратиком можно? Silin знаете?
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 07.07.2011, 01:21
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 16  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Пока silin не успел ответить... Не пробовал подобное, но предположу, что берется изображение и используется как карта пикселей для целевого изображения из исходного....

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.