
Экспорт уровней из FlashIDE для использование в игровом движке Phaser
Привет камрады, 
решил поделиться небольшим примером JSFL скрипта который я написал для парсинга уровней из Flash IDE в JS массив для использования его в игровом движке Phaser.
Для начала рассмотрим fla файл уровня. Все очень просто, мы видим два слоя: back – для фона, а на слое levels размещаются объекты для парсинга, обратите внимание что слой для парсинга должен быть верхним по иерархии.

Теперь сам скрипт:
И для примера результат работы скрипта:
Исходники можно забрать здесь

решил поделиться небольшим примером JSFL скрипта который я написал для парсинга уровней из Flash IDE в JS массив для использования его в игровом движке Phaser.
Для начала рассмотрим fla файл уровня. Все очень просто, мы видим два слоя: back – для фона, а на слое levels размещаются объекты для парсинга, обратите внимание что слой для парсинга должен быть верхним по иерархии.

Теперь сам скрипт:
/**
* www.toybrainstudio.com
*/
var getTotal = function (name) {
var t = 0;
for (var i = 0; i < totals.length; i++)
{
if (totals[i] === name)
{
t++;
}
}
totals.push(name);
if (t == 0)
{
return '';
}
else
{
return t.toString();
}
}
var addBitmap = function (element, num) {
var png = element.libraryItem.name;
var name = png;
var local = name + getTotal(name);
var r = element.rotation;
element.rotation=0;
var x = element.x;
var y = element.y;
var sx = element.scaleX;
var sy = element.scaleY;
element.rotation = r;
if (round)
{
x = Math.round(x);
y = Math.round(y);
}
// Save to preload array
if (preload.indexOf(png) == -1)
{
preload.push(png);
}
// Save to the create array
create = create.concat("['" + name + ".png', " + x + ", " + y + ", "+ r + "],");
create = create.concat("\n");
}
fl.outputPanel.clear();
var totals = new Array();
var round = true;
var preload = new Array();
//the current frame on timeline
var levelNum = fl.getDocumentDOM().getTimeline().currentFrame+1;
//create a variable level
var create = "var level" + levelNum +" = [\n";
var cframe = fl.getDocumentDOM().getTimeline().currentFrame;
var stage = fl.getDocumentDOM().getTimeline().layers[0].frames[cframe].elements;
for (var i = 0; i < stage.length; i++)
{
if (stage[i].instanceType == "bitmap")
{
addBitmap(stage[i], i);
}
}
create = create.concat("];");
var output = "";
output = output.concat(create);
fl.trace(output);
И для примера результат работы скрипта:
var level1 = [
['portal01.png', 43, 405, 0],
['wood04.png', 63, 547, -0.50006103515625],
['wood04.png', 253, 236, 89.99824523925781],
['wood02.png', -7, 362, 0],
['circle02.png', 155, 284, 0],
['stone04.png', -5, 245, -0.50006103515625],
['pot01.png', 2, 266, 0],
['enemy04.png', 150, 172, -0.50006103515625],
['hero.png', 365, 447, -0.250030517578125],
];
Исходники можно забрать здесь
- +8
- MXPain
Комментарии (1)