static void DumpSwfChars(SwfMovie swf, string dir) { swf.LinkAssets(); foreach (var tag in swf.Tags) { var sprite = tag as SwfSprite; if (sprite != null) { } else { var c = tag as ISwfCharacter; if (c != null) { string name = c.CharacterId.ToString(); if (!string.IsNullOrEmpty(c.Name)) { name += "_"; name += c.Name.ReplaceInvalidFileNameChars(); } var data = tag.GetData(); data = TrimStart(data, 2); Directory.CreateDirectory(dir); string fname = Path.Combine(dir, name + ".bin"); File.WriteAllBytes(fname, data); } } } }
static void DumpRefs(string path) { string ext = Utils.GetExt(path); if (ext == "swf") { var swf = new SwfMovie(path); swf.LinkAssets(); using (var writer = new StreamWriter(path + ".refs")) { foreach (var tag in swf.Tags) { var ch = tag as ISwfCharacter; if (ch != null) { writer.Write("{0} - ", ch.CharacterId); writer.Write(tag.TagCode.ToString()); if (!string.IsNullOrEmpty(ch.Name)) { writer.Write(" - "); writer.Write(ch.Name); } writer.WriteLine(); var refs = tag.GetRefs(); if (refs != null && refs.Length > 0) { writer.Write("\trefs: "); for (int i = 0; i < refs.Length; ++i) { if (i > 0) { writer.Write(", "); } writer.Write(refs[i]); } writer.WriteLine(); } } } } } }