Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Loading swf files


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 EvanV   Members   -  Reputation: 111

Like
0Likes
Like

Posted 21 July 2012 - 01:24 PM

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.

Sponsor:

#2 6677   Members   -  Reputation: 1058

Like
1Likes
Like

Posted 21 July 2012 - 03:00 PM

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

#3 joew   Crossbones+   -  Reputation: 3677

Like
1Likes
Like

Posted 21 July 2012 - 03:47 PM

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.

#4 EvanV   Members   -  Reputation: 111

Like
0Likes
Like

Posted 21 July 2012 - 09:54 PM

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.

Edited by EvanV, 21 July 2012 - 09:55 PM.


#5 romer   Members   -  Reputation: 323

Like
1Likes
Like

Posted 22 July 2012 - 10:47 AM

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.

#6 EvanV   Members   -  Reputation: 111

Like
0Likes
Like

Posted 22 July 2012 - 11:11 AM

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);

#7 EvanV   Members   -  Reputation: 111

Like
0Likes
Like

Posted 22 July 2012 - 04:06 PM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS