/// <summary> /// Generates a main timeline script for a new SWF /// </summary> /// <param name="qClassName">Qualified class name for the MainTimeline class, /// e.g. mygeneratedswf_fla.MainTimeline</param> /// <returns>A DoABC tag that can be inserted into a new SWF, which may be the one /// from the timeline (And so may already be in the SWF).</returns> public static DoABC GenerateDefaultScript(string qClassName, Timeline timeline) { DoABC abc = timeline.Root.FirstScript; if (abc == null) { abc = new DoABC(true, string.Empty, null, null); abc.code = new AbcCode(); } AS3ClassDef classDef = GenerateTimelineClass(abc.code, qClassName, timeline.Root.Context); timeline.Class = classDef; Script s = new Script() { Method = GenerateTimelineScript(abc.code, classDef) }; abc.code.AddScript(s); s.AddTrait(new ClassTrait() { As3class = classDef, Kind = TraitKind.Class, Name = timeline.Class.Name }); return abc; }
/// <summary> /// Read in the definitions for the code block. /// </summary> private void ReadScriptDefs() { uint scriptCount = this.abcdtr.ReadU30(); for (int i = 0; i < scriptCount; i++) { uint idx = this.abcdtr.ReadU30(); Method m = this.code.GetMethod((int)idx); Script s = new Script() { Method = m }; uint traitCount = this.abcdtr.ReadU30(); while (traitCount --> 0) { s.AddTrait(this.ReadTrait()); } this.code.AddScript(s); } }