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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.08.2010, 14:07
Dragon rideR вне форума Посмотреть профиль Отправить личное сообщение для Dragon rideR Найти все сообщения от Dragon rideR
  № 1  
Ответить с цитированием
Dragon rideR
 
Аватар для Dragon rideR

Регистрация: Jan 2007
Сообщений: 368
По умолчанию Как получить снимок области экрана заданного размера

Подскажите как сделать снимок области экрана нужно размера.
Т.е. у меня есть клип Page, грубо говоря там изображение 2х страниц стоящих рядом(раскрытая книга). Как мне сделать два отдельных BitmapData чтобы в одном хранилась левая страница, а другом правая.
Левую я получаю таким образом, как получить правую?
Код AS3:
clip=edit_mc.template_mc.page23 as Sprite;
bmp=new BitmapData(clip.width/2, clip.height, true, 0);
bmp.draw(clip);
Params._page2_bitmap=bmp;
clip=edit_mc.template_mc.page23 as Sprite;
//вот как тут сдвинуть вправо область снимка??
bmp=new BitmapData(clip.width/2, clip.height, true, 0);
bmp.draw(clip);
Params._page3_bitmap=bmp;

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

Регистрация: Aug 2009
Адрес: ХМАО
Сообщений: 47
copyPixels
позволяет скопировать кусок битмапы
__________________
Тяжела и неказиста жизнь простого программиста. Распрекрасна и богата жизнь межзвёздного пирата.

Старый 04.08.2010, 14:24
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 3  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
Есть вариант заглянуть в хелп и увидеть, что в draw есть параметр clipRect, в нем задается область снимка:
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false)

Старый 04.08.2010, 14:44
Dragon rideR вне форума Посмотреть профиль Отправить личное сообщение для Dragon rideR Найти все сообщения от Dragon rideR
  № 4  
Ответить с цитированием
Dragon rideR
 
Аватар для Dragon rideR

Регистрация: Jan 2007
Сообщений: 368
Что то попробовал вот так не получилось, битмап вообще пустой получается (
Код AS3:
clip=edit_mc.template_mc.page23 as Sprite;
var rect:Rectangle = new Rectangle(clip.width/2, 0, clip.width/2, clip.height);
bmp.draw(clip,null,null,null,rect,true);

Старый 04.08.2010, 15:02
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 5  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
В том же хелпе сказано, что вместо matrix можно оставить null, но colorTransform = new ColorTransform(), и, наверное, blendMode = "normal"

Старый 04.08.2010, 15:09
Dragon rideR вне форума Посмотреть профиль Отправить личное сообщение для Dragon rideR Найти все сообщения от Dragon rideR
  № 6  
Ответить с цитированием
Dragon rideR
 
Аватар для Dragon rideR

Регистрация: Jan 2007
Сообщений: 368
хмм сделал так
Код AS3:
bmp.draw(clip,null,new ColorTransform(),"normal",rect,true);
все равно битмап чистый. может я не правильно Rectangle указал?

Старый 04.08.2010, 15:47
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 7  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Попробуй так:
Код AS3:
bmp=new BitmapData((clip.width/2+сlip.width, clip.height, true, 0);


Либо другой вариант:

Левая:

Код AS3:
var leftPageCopyBmd:BitmapData = new BitmapData(clip.width/2, clip.height); //тут задаёшь размер копируемой области
var lRect:Rectangle = new Rectangle (0, 0, clip.width/2, clip.height); //тут задаёшь верхнюю левую точку левой страницы x и y и размеры ширины/высоты прямоугольника
leftPageCopyBmd.copyPixels (clipName, lRect, new Point());
 
var leftPageCopy:Bitmap = new Bitmap(leftPageCopyBmd);
leftPageCopy.x = 100; // сюда задавай x
leftPageCopy.y = 100; // сюда задавай y
addChild(leftPageCopy);
Правая
Код AS3:
var rightPageCopyBmd:BitmapData = new BitmapData(clip.width/2, clip.height); //тут задаёшь размер копируемой области
var rRect:Rectangle = new Rectangle (clip.width/2, 0, clip.width/2, clip.height); //тут задаёшь верхнюю левую точку правой страницы x и y и размеры ширины/высоты прямоугольника
rightPageCopyBmd.copyPixels (clipName, rRect, new Point());
 
var rightPageCopy:Bitmap = new Bitmap(rightPageCopyBmd);
rightPageCopy.x = 300; // сюда задавай x
rightPageCopy.y = 100; // сюда задавай y
addChild(rightPageCopy);
P.s.: авторы Шуп и Россер


Последний раз редактировалось tsarapkabel; 04.08.2010 в 16:09.
Старый 04.08.2010, 16:08
Dragon rideR вне форума Посмотреть профиль Отправить личное сообщение для Dragon rideR Найти все сообщения от Dragon rideR
  № 8  
Ответить с цитированием
Dragon rideR
 
Аватар для Dragon rideR

Регистрация: Jan 2007
Сообщений: 368
нет он все равно создает снимок начиная с координат 0,0 клипа

Старый 04.08.2010, 16:15
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 9  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Как это ты так быстро попробовал? Пробуй второй вариант, который я описал.

Старый 04.08.2010, 16:21
Dragon rideR вне форума Посмотреть профиль Отправить личное сообщение для Dragon rideR Найти все сообщения от Dragon rideR
  № 10  
Ответить с цитированием
Dragon rideR
 
Аватар для Dragon rideR

Регистрация: Jan 2007
Сообщений: 368
Цитата:
Сообщение от mry Посмотреть сообщение
copyPixels
позволяет скопировать кусок битмапы
Спасибо помогло, сделал так:
Код AS3:
bmp=new BitmapData(clip.width, clip.height, true, 0);
				bmp.draw(clip);
 
				var rect:Rectangle = new Rectangle(0, 0, clip.width/2, clip.height);
				var pt:Point = new Point(0, 0);
				var bmp1:BitmapData=new BitmapData(clip.width/2, clip.height, true, 0);
				bmp1.copyPixels(bmp, rect,pt);
				Params._page2_bitmap=bmp1;
				var rect2:Rectangle = new Rectangle(clip.width/2, 0, clip.width/2, clip.height);
				var bmp2:BitmapData=new BitmapData(clip.width/2, clip.height, true, 0);
				bmp2.copyPixels(bmp, rect2,pt);
 
				Params._page3_bitmap=bmp2;
Спасибо всем за помощь

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

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

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


 


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


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