I'm currently working with JSFL.
What is JSFL? JavaScript for FLash . It's a scripting language that allows to automatize some tasks interacting with Flash GUI to store or edit data.... like here: It stores the keyframe's properties of specific Movieclips.
I have made a levels editor for my game where I can edit the path of enemies too.
I made it using MovieClips where I would detect key frames and store the coordinates in that frame.
I have all Movieclips stored in the library, and the script I generated checks all objects in library to export the relevant data to JSON, but it was taking too long. How long? About 2 mins to process ~10 paths in a 6 core 3.4GHz machine. This is far too long and would make sense the need to optmize code.
I was processing many things but I isolated the problem: the bottle neck was the keyframes detector function.
function getKeyframes (layer){
var keyframes = [];
for(var f in layer.frames){
if (f==layer.frames[f].startFrame){
keyframes.push({
frame:layer.frames[f],
index:f
});
}
}
return keyframes;
};
It was taking very long time per MC. I played with code and I finally improved it by changing it to:
function getKeyframes (layer){
var keyframes = [];
var layerFrames = layer.frames;
for(var f in layerFrames){
if (f==layerFrames[f].startFrame){
keyframes.push({
frame:layerFrames[f],
index:f
});
}
}
return keyframes;
};
After this, the script takes about 2-3 seconds instead of 2 mins.
A note for the reader: I usually optimize all my code but since this JSFL script is only executed every now and then I didn't think it was necessary to optimize it.
I hope it helps to someone!
Thanks for reading!
No comments:
Post a Comment