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)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )