Loading swf files

Started by
5 comments, last by Evan2009 11 years, 8 months ago
Hello everyone,

An artist I am currently working with is having some trouble creating sprite sheets from .swf animations that she's recieving from another company. She is managing but I would like to help improve her work flow and create a tool. However, I am not familiar with .swf files and how to load them. I was hoping to find something I could use for a C# WinForm application. I did some research earlier and found "AxInterop.ShockwaveFlashObjects.dll" and "Interop.ShockwaveFlashObjects.dll". But I don't think I have the correct dll versions, it's always breaking on me, returning FileNotFoundException when I try using them.

The idea of the tool is to load in a .swf from a local file that I feed it from a dialog. Parse the information within the animation and start populating the new sprite sheet with the frames. After that animation is loaded and on the sheet the user can load another local .swf file. Once the sprite sheet is complete, then the user can save out the .png(or whatever format necessary) and at the same time create a .json file of all the animation data held within that sprite sheet for easy loading in the game engine. There are several tools that accomplish creating a spritesheet from .swf, but I have yet to come across a tool that does this for multiple animations/characters. The tools I've run into only create a sprite sheet for a single animation/character.

Overall, I just need to figure out how to load these .swf files so that I may get each frame's data.

Any help would be greatly appreciated, thank you.
Advertisement
I think your going to run into problems. Shockwave flash objects are a proprietary closed source format, I don't think the license terms of flash allow you to do what you want to do and your not going to find tools that can do this easily for you.

This might just be one of those really irritating things that needs doing manually
You could take a look at GameSWF which I've used in the past to do something similar, and it was also used as a base in the initial versions of Scaleform Gfx.
GameSWF looks like it might be a good choice. But I need to figure out what to PInvoke so I can use it. During my research I also came across Fluix, which is XNA functionality of loading a swf file and playing it. However, XNA loads in assets from the ContentManager and I need to load it from a file.
Perhaps this will be of use to you, but Adobe publishes the spec for the SWF file format. It covers file versions up through v10.
Definitely nice knowing the format if I have to do it from scratch. But I'm hoping to find some library that I could use to save time. Right now, I'm still checking out GameSWF. It looks like it's exactly what I need. I'm trying to figure out how to import the functions I need from a C++ dll to C# and some of the parameters in the signatures C# doesn't get along with. Take this function signature for example,

void get_movie_info( const char* filename,int* version, int* width, int* height,float* frames_per_second, int* frame_count, int* tag_count); //C++ version

Trying to find the C# equivalent

[DllImport("libgameswf.dll")]
public static extern void get_movie_info(string filename, out int ver, out int width, out int height, out float framesPerSecond, out int frameCount, out int tagCount);
Okay, I'm getting closer. What I currently have for getting the function I want is..

[DllImport("libgameswf.dll")]
public static extern void get_movie_info(
[MarshalAs(UnmanagedType.LPStr)]string filename,
ref int ver,
ref int width,
ref int height,
ref float framesPerSecond,
ref int frameCount,
ref int tagCount);

But now I'm getting a DllNotFoundException for some reason. The libgameswf.dll is currently in the debug folder and the main folder but still no luck.

This topic is closed to new replies.

Advertisement