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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.04.2013, 19:51
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Получение общей BitmapData из нескольких спрайтов.

Подскажите плиз.
В swf-файле есть некоторое количество спрайтов в которых методом graphics создано некоторое изображение. Все спрайты разложены в массиве arrBMP.
Требуется составить один объект BitmapData - bmD - который включал бы в себя всю графику отрисованную в спрайтах, и с теми-же координатами. Пробую как-то так:
Код AS3:
private function poluchBitmapData():void {
    var bmD:BitmapData = new BitmapData(1600, 1000, true, 0xFFFF00);
    for (var i:int = 0; i < arrBMP.length; i++) {
	    var sprt:Sprite = arrBMP[i] as Sprite;
	    var bmd2:BitmapData = arrBMP[i] as BitmapData;
	    var rect:Rectangle = new Rectangle(sprt.x, sprt.y, sprt.width, sprt.height);
	    var pt:Point = new Point(sprt.x, sprt.y);
	    bmD.copyPixels(bmd2, rect, pt);
    }
}
но что-то никак.
Опыт работы с классами Bitmap и BitmapData есть, но небольшой.
Подскажите плиз, как сделать правильно.

Старый 03.04.2013, 20:16
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 2  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
ВОт это странно выглядит
Код AS3:
var sprt:Sprite = arrBMP[i] as Sprite;
var bmd2:BitmapData = arrBMP[i] as BitmapData;
Так массив arrBMP состоит из спрайтов или битмамдат?
Для отрисовки спрайта в битмам есть метод draw
Код AS3:
bitmapData.draw(shp);
Вам нужно отрисовать на одной картинке разные спрайты ?

Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BlendMode;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.geom.Matrix;
	import flash.utils.getTimer;
 
	[SWF(width="670", height="550", frameRate="31", backgroundColor="#ffffff")]
	public class Test5 extends Sprite
	{
 
		public function Test5()
		{
			super();
 
			drawSapes();
		}
 
		private function drawSapes():void
		{
			var bmd:BitmapData = new BitmapData(360, 400, false, 0xff0000);
 
			for (var i:uint = 0; i < 8; i++)
			{
				for (var k:uint =0; k < 8; k++)
				{
//создаем графику
					var shp:Shape = new Shape();
					shp.graphics.beginFill(0x0000ff);
					shp.graphics.drawRoundRect(0, 0, 40, 30, i * k);
//Cоздаем матрицу сдвига и отрисовывем клипы сразу на оду и туже bitmapData только в разные позиции					
					var margin:Number = 2;
					var tx:Number =  (shp.width + margin)* i;
					var ty:Number =  (shp.height + margin) * k;
					var matrix:Matrix = new Matrix(1, 0, 0, 1, tx, ty);
					bmd.draw(shp, matrix);
				}
 
			}
 
			var bitmap:Bitmap = new Bitmap(bmd);
			addChild(bitmap);
		}
 
 
	}
}

http://wonderfl.net/c/kMKT/
__________________
...


Последний раз редактировалось Александр Мостовой; 03.04.2013 в 20:47.
Старый 03.04.2013, 20:34
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 3  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Массив состоит из спрайтов в которых есть рисунок. Требуется получить одну BitmapData с общим составным рисунком полученным из всех спрайтов массива. Тема для меня во многом новая, вот я и формулирую вопрос так как представляю.

Старый 03.04.2013, 20:42
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 4  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Мой пример это и делает
Вот этот кусок
Код AS3:
var shp:Shape = new Shape();
shp.graphics.beginFill(0x0000ff);
shp.graphics.drawRoundRect(0, 0, 40, 30, i * k);
можете рассматривать как массив спрайтов и заменить на
Код AS3:
var sprite:Sprite = array[i + k] as Sprite
__________________
...


Последний раз редактировалось Александр Мостовой; 03.04.2013 в 20:55.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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