1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/eran-CEPackerBox

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 4.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.03.2025 19:52 84ebf84

CEPackerBox

CEPackerBox — это полезный инструмент, предоставленный CopyEngine.

Цель этого инструмента состоит в упаковке нескольких небольших битмап данных с помощью рациональной арифметики.

Упаковка вещей вместе — это старый и интересный вопрос, вы можете найти множество алгоритмов, используя Google.

Как это работает

CEPackerBox использует детекцию столкновений на уровне пикселей.

Да, это может показаться глупым.

Но это довольно мощно.

Как использовать

Сначала вы можете использовать файл SWC напрямую, либо импортировать проект и использовать его как ваш подключаемый модуль.

Затем просто вставьте этот код, и CEPackerBox будет готов к работе!

	var builder:CEPackerBuilder = new CEPackerBuilder();
	builder.initialize(_allBitmapDataDic, _packerBoxNamePR);
	builder.startPackData();

	trace(builder.getAllPackerBoxVector())
  • _allBitmapDataDic — это словарь, содержащий все данные битмап, которые вы хотите упаковать с помощью CEPackerBox.

    Ключ — это имя битмап, которое вы выбрали

    Значение — это источник битмап

  • _packerBoxNamePR — это префикс имени коробки, который вы выбираете, например, если вы выбрали "RedBox" для префикса,

    то сгенерированное имя коробки будет RedBox_1, RedBox_2, RedBox_3...

Пример

// =================================================================================================
//
//	CopyEngine Framework
//	Copyright 2012 Eran. Все права защищены.
//
//	Этот программный продукт является свободным программным обеспечением. Вы можете распространять и/или изменять его
//	в соответствии с условиями прилагаемого соглашения о лицензировании.
//
// =================================================================================================

package
{
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.utils.Dictionary;

	import copyengine.utils.packerbox.CEPackerBuilder;
	import copyengine.utils.packerbox.box.ICEPackerBox;
	import copyengine.utils.packerbox.data.CEPackerElementData;

	public class CEPackerBoxDemo extends Sprite
	{
		public function CEPackerBoxDemo()
		{
			var allBitmapDataDic:Dictionary = new Dictionary();

			//Подготовка тестовых данных
			for (var i:int = 0; i < 10; i++)
			{
				allBitmapDataDic["name_" + i] = new BitmapData(100, 100);
			}

			//Начало упаковки
			var builder:CEPackerBuilder = new CEPackerBuilder();
			builder.initialize(allBitmapDataDic, "DemoBox");
			builder.startPackData();

			//Завершение, весело проводите время!
			
			for each (var box:ICEPackerBox in builder.getAllPackerBoxVector())
			{
				trace("------Коробка: " + box.getBoxName() + " Размер: " + box.getBoxSize());
				for each (var data:CEPackerElementData in box.getAllBoxElement())
				{
					trace("              " + data.bitmapDataName + "       " + data.bitmapDataRe.toString());
				}
				trace("\n");
			}
		}
	}
}

Информация вывода

------Коробка: DemoBox_1 Размер: 256
              name_5       (x=0, y=0, w=100, h=100)
              name_1       (x=103, y=0, w=100, h=100)
              name_9       (x=0, y=102, w=100, h=100)
              name_7       (x=103, y=102, w=100, h=100)


------Коробка: DemoBox_2 Размер: 256
              name_8       (x=0, y=0, w=100, h=100)
              name_4       (x=103, y=0, w=100, h=100)
              name_0       (x=0, y=102, w=100, h=100)
              name_3       (x=103, y=102, w=100, h=100)


------Коробка: DemoBox_3 Размер: 256
              name_6       (x=0, y=0, w=100, h=100)
              name_2       (x=103, y=0, w=100, h=100)

Проблемы

iamzealotwang@126.com

Весело проводите время!

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/eran-CEPackerBox.git
git@api.gitlife.ru:oschina-mirror/eran-CEPackerBox.git
oschina-mirror
eran-CEPackerBox
eran-CEPackerBox
master