int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc, dejagnuclip; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); SWFMovie_nextFrame(mo); /* 1st frame */ mc = newSWFMovieClip(); add_clip_actions(mc, "_root.x = 1;" "_root.check_equals(_root.x, 1);"); SWFMovieClip_nextFrame(mc); add_actions(mo, " gotoAndPlay(4); "); SWFMovie_nextFrame(mo); /* 2nd frame */ SWFMovie_nextFrame(mo); /* 3rd frame */ /* add mc to _root and name it as "mc" */ SWFDisplayItem it; it = SWFMovie_add(mo, (SWFBlock)mc); SWFDisplayItem_setDepth(it, 3); SWFDisplayItem_setName(it, "mc"); add_actions(mo, " _root.x = 2; " " _root.check_equals(_root.x, 2); "); SWFMovie_nextFrame(mo); /* 4th frame */ SWFDisplayItem_remove(it); check_equals(mo, "_root.x", "1"); check_equals(mo, "typeof(mc)", "'undefined'"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 5th frame */ //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
void add_xtrace_function_clip(SWFMovieClip mc, SWFBlock font, int depth, int x, int y, int width, int height) { SWFTextField tf; SWFDisplayItem it; int flags; tf = newSWFTextField(); SWFTextField_setFont(tf, font); /* setting flags seem unneeded */ flags = 0; //flags |= SWFTEXTFIELD_USEFONT; flags |= SWFTEXTFIELD_WORDWRAP; //flags |= SWFTEXTFIELD_NOEDIT; SWFTextField_setFlags(tf, flags); /* Add all ascii chars */ SWFTextField_addChars(tf, asciichars); SWFTextField_addString(tf, " - xtrace enabled -\n"); SWFTextField_setBounds(tf, width, height); /* * Hopefully we have a *single* _root. */ SWFTextField_setVariableName(tf, "_root._trace_text"); /* * Set flags explicitly so that the field is selectable * and you can cut&paste results. * (the default seems to include SWFTEXTFIELD_NOSELECT) */ SWFTextField_setFlags(tf, SWFTEXTFIELD_NOEDIT); /*SWFTextField_setHeight(tf, 240);*/ /*SWFTextField_setColor(tf, 0x00, 0x00, 0x00, 0xff);*/ /*SWFTextField_setAlignment(tf, SWFTEXTFIELD_ALIGN_LEFT);*/ /*SWFTextField_setLeftMargin(tf, 0);*/ /*SWFTextField_setRightMargin(tf, 0);*/ /*SWFTextField_setIndentation(tf, 0);*/ /*SWFTextField_setLineSpacing(tf, 40);*/ /*SWFTextField_setLineSpacing(tf, 40);*/ it = SWFMovieClip_add(mc, (SWFBlock)tf); SWFDisplayItem_moveTo(it, x, y); SWFDisplayItem_setDepth(it, depth); SWFDisplayItem_setName(it, "_xtrace_win"); add_clip_actions(mc, " _root.xtrace = function (msg) { " " _root._trace_text += msg + '\n'; " "};"); }
void addRedSquareExport(SWFMovie mo) { SWFShape sh; SWFMovieClip mc; sh = make_fill_square (0, 0, 60, 60, 255, 0, 0, 255, 0, 0); mc = newSWFMovieClip(); SWFMovieClip_add(mc, (SWFBlock)sh); /* This is here just to turn the clip into an active one */ add_clip_actions(mc, "onRollOver = function() {};"); add_clip_actions(mc, "onMouseDown = function() { _root.mouseDown++; _root.note(_name+' mouseDown '+_root.mouseDown); };"); add_clip_actions(mc, "onMouseUp = function() { _root.mouseUp++; _root.note(_name+' mouseUp '+_root.mouseUp); };"); SWFMovieClip_nextFrame(mc); SWFMovie_addExport(mo, (SWFBlock)mc, "redsquare"); SWFMovie_writeExports(mo); }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc1, mc2, dejagnuclip; SWFDisplayItem it1, it2; SWFShape sh_red; /* For the button duplication test */ #if MING_VERSION_CODE >= 00040400 SWFButton but; SWFButtonRecord br; #endif const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); add_actions(mo, "x1=0; x2=0; x3=0;"); SWFMovie_nextFrame(mo); /* 1st frame */ mc1 = newSWFMovieClip(); sh_red = make_fill_square (100, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc1, (SWFBlock)sh_red); add_clip_actions(mc1, "stop();"); SWFMovieClip_nextFrame(mc1); mc2 = newSWFMovieClip(); sh_red = make_fill_square (100, 200, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc2, (SWFBlock)sh_red); add_clip_actions(mc2, "stop();"); SWFMovieClip_nextFrame(mc2); it1 = SWFMovie_add(mo, (SWFBlock)mc1); SWFDisplayItem_setDepth(it1, 10); SWFDisplayItem_setName(it1, "mc1"); it2 = SWFMovie_add(mo, (SWFBlock)mc2); SWFDisplayItem_setDepth(it2, 20); SWFDisplayItem_setName(it2, "mc2"); SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('onClipLoad triggered'); " " _root.x1 = _root.x1 + 1; "), SWFACTION_ONLOAD); SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('onClipEnterFrame triggered'); " " _root.x2 = _root.x2 + 1; "), SWFACTION_ENTERFRAME); SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('onClipUnload triggered'); " " _root.x3 = _root.x3 + 1; "), SWFACTION_UNLOAD); add_actions(mo, " mc1.onLoad = function () {}; " " mc1.prop1 = 10; " " duplicateMovieClip('mc1', 'dup1', 1); " " mc2.onLoad = function () {}; " " duplicateMovieClip('mc2', 'dup2', 2); " ); SWFMovie_nextFrame(mo); /* 2nd frame */ check_equals(mo, "mc1.prop1", "10"); check_equals(mo, "typeof(mc1.onLoad)", "'function'"); check_equals(mo, "mc1.getDepth()", "-16374"); /* user defined property will not be duplicated */ check_equals(mo, "dup1.prop1", "undefined"); /* user defined event handler will not be duplicated */ check_equals(mo, "typeof(dup1.onLoad)", "'undefined'"); check_equals(mo, "dup1.getDepth()", "1"); /* check user defined onLoad */ check_equals(mo, "typeof(mc2.onLoad)", "'function'"); /* onClipEvent does not define a function */ check_equals(mo, "typeof(mc2.onEnterFrame)", "'undefined'"); /* user defined event handler will not be duplicated */ check_equals(mo, "typeof(dup2.onLoad)", "'undefined'"); check_equals(mo, "_root.x1", "2"); check_equals(mo, "_root.x2", "2"); SWFMovie_nextFrame(mo); /* 3rd frame */ SWFDisplayItem_remove(it1); SWFDisplayItem_remove(it2); add_actions(mo, " dup2.removeMovieClip(); "); SWFMovie_nextFrame(mo); /* 4th frame */ #if MING_VERSION_CODE >= 00040400 /* Create a button, add it to mc1 */ but = newSWFButton(); br = SWFButton_addCharacter(but, (SWFCharacter)sh_red, SWFBUTTON_UP); SWFButtonRecord_setDepth(br, 10); it1 = SWFMovie_add(mo, (SWFBlock)but); SWFDisplayItem_setName(it1, "button"); /* Sanity check */ check_equals(mo, "typeof(button)", "'object'"); add_actions(mo, "trace(button);" "dupl = MovieClip.prototype.duplicateMovieClip;" "button.dupl = dupl;" "o = { x: 4 };" "d = button.dupl('buttdup', 201, o);" ); xcheck_equals(mo, "typeof(d)", "'object'"); xcheck_equals(mo, "'' + _root.buttdup", "'_level0.buttdup'"); check_equals(mo, "_root.buttdup", "d"); /* initobj not used */ check_equals(mo, "_root.buttdup.x", "undefined"); #endif add_actions(mo, "t = new Object();" "t.dupl = dupl;" "o2 = { x: 44 };" "d2 = t.dupl('objdup', 202, o2);" "trace(_root.objdup);" ); /* Does not work on plain objects */ check_equals(mo, "typeof(d2)", "'undefined'"); check_equals(mo, "typeof(_root.objdup)", "'undefined'"); SWFMovie_nextFrame(mo); /* 5th frame */ check_equals(mo, "_root.x1", "2"); check_equals(mo, "_root.x2", "3"); check_equals(mo, "_root.x3", "2"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 5th frame */ //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc1, mc2, mc3, mc4, mc5, dejagnuclip; SWFDisplayItem it1, it2, it3, it4, it5; SWFShape sh_red; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); add_actions(mo, " x2 += 'as_start+'; " " _root.OnLoad = function () { _root.note('_root onLoad called'); x2 += 'load_called+'; }; " " x2 += 'as_end+'; " " _root.onEnterFrame = function () { x3 += 'enterFrame_called+'; }; "); SWFMovie_nextFrame(mo); /* 1st frame */ mc1 = newSWFMovieClip(); sh_red = make_fill_square (0, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc1, (SWFBlock)sh_red); add_clip_actions(mc1, " _root.note('actions in 1st frame of mc1'); " // Defining onLoad in first frame of a sprite doesn't work, but works for root " this.onLoad = function() { _root.note('mc1 onLoad called'); _root.x1 += 'YY'; };" " _root.x1 += '2+'; "); SWFMovieClip_nextFrame(mc1); /* mc1, 1st frame */ add_clip_actions(mc1, " _root.note('actions in 2nd frame of mc1'); " " _root.x1 += '12+'; " " stop(); "); SWFMovieClip_nextFrame(mc1); /* mc1, 2nd frame */ mc2 = newSWFMovieClip(); sh_red = make_fill_square (80, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc2, (SWFBlock)sh_red); add_clip_actions(mc2, " _root.note('actions in 1st frame of mc2'); " // Defining onLoad in first frame of a sprite doesn't work, but works for root " this.onLoad = function() { _root.note('mc2 onLoad called'); _root.x1 += 'XX'; };" " _root.x1 += '4+'; "); SWFMovieClip_nextFrame(mc2); /* mc2, 1st frame */ add_clip_actions(mc2, " _root.note('actions in 2nd frame of mc2'); " " _root.x1 += '10+'; " " stop(); "); SWFMovieClip_nextFrame(mc2); /* mc2, 2nd frame */ mc3 = newSWFMovieClip(); sh_red = make_fill_square (160, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc3, (SWFBlock)sh_red); add_clip_actions(mc3, " _root.note('actions in 1st frame of mc3'); " // Defining onLoad in first frame of a sprite doesn't work, but works for root " this.onLoad = function() { _root.note('mc3 onLoad called'); _root.x1 += 'ZZ'; };" " _root.x1 += '6+';"); SWFMovieClip_nextFrame(mc3); /* mc3, 1st frame */ add_clip_actions(mc3, " _root.note('actions in 2nd frame of mc3'); " " _root.x1 += '8+'; " " stop(); "); SWFMovieClip_nextFrame(mc3); /* mc3, 2nd frame */ /* add mc1 to _root and name it as "mc1" */ it1 = SWFMovie_add(mo, (SWFBlock)mc1); SWFDisplayItem_setDepth(it1, 10); SWFDisplayItem_setName(it1, "mc1"); /* Define Construct ClipEvent */ SWFDisplayItem_addAction(it1, compileSWFActionCode(" _root.note('mc1 Construct called');" " _root.x0 += '01+'; "), SWFACTION_CONSTRUCT); /* Define Load ClipEvent */ SWFDisplayItem_addAction(it1, compileSWFActionCode(" _root.note('mc1 Load called');" " _root.x1 += '1+'; "), SWFACTION_ONLOAD); /* Define Unload ClipEvent */ SWFDisplayItem_addAction(it1, compileSWFActionCode(" _root.note('mc1 Unload called'); " " _root.x1 += '13+'; "), SWFACTION_UNLOAD); /* Define EnterFrame ClipEvent */ SWFDisplayItem_addAction(it1, compileSWFActionCode(" _root.note('mc1 EnterFrame called'); " " _root.x1 += '11+'; "), SWFACTION_ENTERFRAME); /* add mc2 to _root and name it as "mc2" */ it2 = SWFMovie_add(mo, (SWFBlock)mc2); SWFDisplayItem_setDepth(it2, 12); SWFDisplayItem_setName(it2, "mc2"); /* Define Construct ClipEvent */ SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('mc2 Construct called');" " _root.x0 += '02+'; "), SWFACTION_CONSTRUCT); /* Define Load ClipEvent */ SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('mc2 Load called'); " " _root.x1 += '3+'; "), SWFACTION_ONLOAD); /* Define Unload ClipEvent */ SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('mc2 Unload called'); " " _root.x1 += '14+'; "), SWFACTION_UNLOAD); /* Define EnterFrame ClipEvent */ SWFDisplayItem_addAction(it2, compileSWFActionCode(" _root.note('mc2 EnterFrame called'); " " _root.x1 += '9+'; "), SWFACTION_ENTERFRAME); /* add mc3 to _root and name it as "mc3" */ it3 = SWFMovie_add(mo, (SWFBlock)mc3); SWFDisplayItem_setDepth(it3, 11); SWFDisplayItem_setName(it3, "mc3"); /* Define Construct ClipEvent */ SWFDisplayItem_addAction(it3, compileSWFActionCode(" _root.note('mc3 Construct called');" " _root.x0 += '03+'; "), SWFACTION_CONSTRUCT); /* Define Load ClipEvent */ SWFDisplayItem_addAction(it3, compileSWFActionCode(" _root.note('mc3 Load called'); " " _root.x1 += '5+'; "), SWFACTION_ONLOAD); /* Define Unload ClipEvent */ SWFDisplayItem_addAction(it3, compileSWFActionCode(" _root.note('mc3 Unload called'); " " _root.x1 += '15+';" ), SWFACTION_UNLOAD); /* Define EnterFrame ClipEvent */ SWFDisplayItem_addAction(it3, compileSWFActionCode(" _root.note('mc3 EnterFrame called'); " " _root.x1 += '7+'; "), SWFACTION_ENTERFRAME); add_actions(mo, " _root.x3 += '_root_frm2_as+'; "); SWFMovie_nextFrame(mo); /* 2nd frame */ add_actions(mo, " _root.x3 += '_root_frm3_as+'; "); check_equals(mo, "_root.x3", "'enterFrame_called+_root_frm2_as+enterFrame_called+_root_frm3_as+'"); SWFMovie_nextFrame(mo); /* 3rd frame */ /* It's no use to change the order below. After compile, Ming will re-organize them as remove mc1; remove mc2; remove mc3;*/ SWFDisplayItem_remove(it3); SWFDisplayItem_remove(it1); SWFDisplayItem_remove(it2); SWFMovie_nextFrame(mo); /* 4th frame */ check_equals(mo, "_root.x0", "'01+02+03+'"); check_equals(mo, "_root.x1", "'1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+'"); check_equals(mo, "_root.x2", "'as_start+as_end+load_called+'"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 5th frame */ //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc_red1, mc_red2, mc_red3, mc_red4, mc_red5, dejagnuclip; SWFDisplayItem it_red1, it_red2, it_red3, it_red4, it_red5; SWFShape sh_red; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); SWFMovie_nextFrame(mo); /* 1st frame */ mc_red1 = newSWFMovieClip(); sh_red = make_fill_square (0, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red1, (SWFBlock)sh_red); add_clip_actions(mc_red1, " _root.x1 += \"depth10+\"; "); SWFMovieClip_nextFrame(mc_red1); /* mc_red1, 1st frame */ add_clip_actions(mc_red1, " _root.x2 += \"depth10+\"; stop(); "); SWFMovieClip_nextFrame(mc_red1); /* mc_red1, 2nd frame */ mc_red2 = newSWFMovieClip(); sh_red = make_fill_square (80, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red2, (SWFBlock)sh_red); add_clip_actions(mc_red2, " _root.x1 += \"depth12+\"; "); SWFMovieClip_nextFrame(mc_red2); /* mc_red2, 1st frame */ add_clip_actions(mc_red2, " _root.x2 += \"depth12+\"; stop(); "); SWFMovieClip_nextFrame(mc_red2); /* mc_red2, 2nd frame */ mc_red3 = newSWFMovieClip(); sh_red = make_fill_square (160, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red3, (SWFBlock)sh_red); add_clip_actions(mc_red3, " _root.x1 += \"depth11+\"; "); SWFMovieClip_nextFrame(mc_red3); /* mc_red3, 1st frame */ add_clip_actions(mc_red3, " _root.x2 += \"depth11+\"; stop();"); SWFMovieClip_nextFrame(mc_red3); /* mc_red3, 2nd frame */ /* add mc_red1 to _root and name it as "mc_red1" */ it_red1 = SWFMovie_add(mo, (SWFBlock)mc_red1); SWFDisplayItem_setDepth(it_red1, 10); SWFDisplayItem_setName(it_red1, "mc_red1"); /* add mc_red2 to _root and name it as "mc_red2" */ it_red2 = SWFMovie_add(mo, (SWFBlock)mc_red2); SWFDisplayItem_setDepth(it_red2, 12); SWFDisplayItem_setName(it_red2, "mc_red2"); /* add mc_red3 to _root and name it as "mc_red3" */ it_red3 = SWFMovie_add(mo, (SWFBlock)mc_red3); SWFDisplayItem_setDepth(it_red3, 11); SWFDisplayItem_setName(it_red3, "mc_red3"); SWFMovie_nextFrame(mo); /* 2nd frame */ /* Action order is not dependent on DisplayList depth here! */ check_equals(mo, "_root.x1", "'depth10+depth12+depth11+'"); SWFMovie_nextFrame(mo); /* 3rd frame */ mc_red4 = newSWFMovieClip(); sh_red = make_fill_square (240, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red4, (SWFBlock)sh_red); add_clip_actions(mc_red4, " _root.x2 += \"depth9+\"; "); SWFMovieClip_nextFrame(mc_red4); /* mc_red4, 1st frame */ /* add mc_red4 to _root and name it as "mc_red4" */ it_red4 = SWFMovie_add(mo, (SWFBlock)mc_red4); SWFDisplayItem_setDepth(it_red4, 9); SWFDisplayItem_setName(it_red4, "mc_red4"); mc_red5 = newSWFMovieClip(); sh_red = make_fill_square (240, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red5, (SWFBlock)sh_red); add_clip_actions(mc_red5, " _root.x2 += \"depth13+\"; "); SWFMovieClip_nextFrame(mc_red5); /* mc_red4, 1st frame */ /* add mc_red5 to _root and name it as "mc_red5" */ it_red5 = SWFMovie_add(mo, (SWFBlock)mc_red5); SWFDisplayItem_setDepth(it_red5, 13); SWFDisplayItem_setName(it_red5, "mc_red4"); SWFMovie_nextFrame(mo); /* 4th frame */ check_equals(mo, "_root.x2", "'depth11+depth12+depth10+depth9+depth13+'"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 5th frame */ //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc_red, dejagnuclip; SWFShape sh_red; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 1.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); SWFMovie_nextFrame(mo); /* 1st frame - so we can use _root.note */ mc_red = newSWFMovieClip(); sh_red = make_fill_square (0, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc_red, (SWFBlock)sh_red); add_clip_actions(mc_red, " _root.note('frm1 of mc_red - gotoAndStop(2)'); " "x = 'as_in_frm1_of_mc_red'; " "gotoAndStop(2); "); SWFMovieClip_nextFrame(mc_red); /* 1st frame */ add_clip_actions(mc_red, " _root.note('frm2 of mc_red - gotoAndStop(3)'); " "x = 'as_in_frm2_of_mc_red'; " "gotoAndStop(3); "); SWFMovieClip_nextFrame(mc_red); /* 2nd frame */ add_clip_actions(mc_red, " _root.note('frm3 of mc_red - gotoAndStop(4)'); " "x = 'as_in_frm3_of_mc_red'; " "gotoAndStop(4); "); SWFMovieClip_nextFrame(mc_red); /* 3rd frame */ SWFMovieClip_nextFrame(mc_red); /* 4th frame */ SWFDisplayItem it_red; it_red = SWFMovie_add(mo, (SWFBlock)mc_red); SWFDisplayItem_setDepth(it_red, 3); SWFDisplayItem_setName(it_red, "mc_red"); add_actions(mo, " _root.note('frm2 of root - gotoAndStop(3)'); " "mc_red.x = 'as_in_frm2_of_root'; " "gotoAndStop(3); "); SWFMovie_nextFrame(mo); /* 2nd frame */ /* mc_red.x has been set after playing the 1st frame, check it here */ add_actions(mo, " check_equals(mc_red.x, 'as_in_frm1_of_mc_red'); " " _root.note('frm3 of root - gotoAndStop(4)');" "mc_red.x = 'as_in_frm3_of_root'; " "gotoAndStop(4); "); SWFMovie_nextFrame(mo); /* 3rd frame */ /* mc_red.x has been set again after playing the 2nd frame, check it again */ add_actions(mo, " check_equals(mc_red.x, 'as_in_frm2_of_mc_red'); " " _root.note('frm4 of root - gotoAndStop(5)');" " mc_red.x = \"as_in_frm4_of_root\"; " " gotoAndStop(5); "); SWFMovie_nextFrame(mo); /* 4th frame */ /* mc_red.x has been set again after playing the 3rd frame, check it again */ check_equals(mo, "mc_red.x", "'as_in_frm3_of_mc_red'"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 5th frame */ /* Output movie */ puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip dejagnuclip; SWFMovieClip mc1, mc11; SWFDisplayItem it1, it11; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); // _root.frame1 dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); add_actions(mo, " x1=0; x2=0; x3=0; x4=0; x5=0; x6=0; x7=0; x8=0; x9=0; x10=0; "); SWFMovie_nextFrame(mo); // // _root.frame2: define movieclips and some functions. // // Define mc11 mc11 = newSWFMovieClip(); add_clip_actions(mc11, " func1 = function () { _root.x1=1; _root.x2=this; }; " "stop();"); SWFMovieClip_nextFrame(mc11); add_clip_actions(mc11, "_root.x3 = 1; stop();"); SWFMovieClip_nextFrame(mc11); add_clip_actions(mc11, "_root.x4 = 1; stop();"); SWFMovieClip_nextFrame(mc11); // Define mc1, add mc11 to mc1 mc1 = newSWFMovieClip(); it11 = SWFMovieClip_add(mc1, (SWFBlock)mc11); SWFDisplayItem_setDepth(it11, 3); SWFDisplayItem_setName(it11, "mc11"); add_clip_actions(mc1, " func2 = function () { _root.x5=1; _root.x6=this; }; " "stop();"); SWFMovieClip_nextFrame(mc1); add_clip_actions(mc1, "_root.x7 = 1; stop();"); SWFMovieClip_nextFrame(mc1); add_clip_actions(mc1, "_root.x8 = 1; stop();"); SWFMovieClip_nextFrame(mc1); // place mc1 it1 = SWFMovie_add(mo, (SWFBlock)mc1); SWFDisplayItem_setDepth(it1, 4); SWFDisplayItem_setName(it1, "mc1"); SWFMovie_nextFrame(mo); // // _root.frame3: invoke function calls // add_actions(mo, "asm{" "push 0 " "push '_root.mc1.mc11.func1' " // valid format "callfunction " "};"); add_actions(mo, "asm{" "push 2 " "push 1 " "push '_root.mc1.mc11.gotoAndStop' " // valid format "callfunction " "};"); add_actions(mo, "asm{" "push 0 " "push '_root.mc1:func2' " // valid format "callfunction " "};"); add_actions(mo, "asm{" "push 2 " "push 1 " "push '/mc1/:gotoAndStop' " // valid format "callfunction " "};"); add_actions(mo, "asm{" "push 3 " "push 1 " "push '/_root/mc1/mc11/gotoAndStop' " // *invalid* format "callfunction " "};"); add_actions(mo, "asm{" "push 3 " "push 1 " "push '_root:mc1:gotoAndStop' " // valid format "callfunction " "};"); SWFMovie_nextFrame(mo); // // _root.frame4: check if the function call succeeded // check_equals(mo, "_root.x1", "1"); check_equals(mo, "_root.x2", "_root.mc1.mc11"); check_equals(mo, "_root.x3", "1"); check_equals(mo, "_root.x4", "0"); check_equals(mo, "_root.x5", "1"); check_equals(mo, "_root.x6", "_root.mc1"); check_equals(mo, "_root.x7", "1"); check_equals(mo, "_root.x8", "1"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc1, mc2, dejagnuclip; SWFShape sh1, sh2; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); add_actions(mo, " _root.x = '0+'; "); SWFMovie_nextFrame(mo); /* 1st frame */ mc1 = newSWFMovieClip(); sh1 = make_fill_square (300, 300, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc1, (SWFBlock)sh1); /* add init actions */ add_clip_init_actions(mc1, " _root.note('mc1.init_actions'); " " _root.x += '1+'; " " y = 'var_of_root'; " ); /* add actions */ add_clip_actions(mc1, " _root.note('mc1.actions'); _root.x += '9+'; "); SWFMovieClip_nextFrame(mc1);//1st frame mc2 = newSWFMovieClip(); sh2 = make_fill_square (600, 600, 60, 60, 255, 0, 0, 255, 0, 0); SWFMovieClip_add(mc2, (SWFBlock)sh2); /* add init actions */ add_clip_init_actions(mc2, " _root.note('mc2.init_actions'); _root.x += '3+'; "); /* add actions */ add_clip_actions(mc2, " _root.note('mc2.actions'); _root.x += '11+'; "); SWFMovieClip_nextFrame(mc2);//1st frame /* add mc1 to _root */ SWFDisplayItem it1; it1 = SWFMovie_add(mo, (SWFBlock)mc1); SWFDisplayItem_setDepth(it1, 10); SWFDisplayItem_setName(it1, "mc1"); SWFDisplayItem_addAction(it1, newSWFAction(" _root.note('mc1.onClipInitialize'); _root.x += '2+'; " "_root.check_equals(this.__proto__, MovieClip.prototype);" ), SWFACTION_INIT); SWFDisplayItem_addAction(it1, newSWFAction(" _root.note('mc1.onClipConstruct'); _root.x += '5+'; "), SWFACTION_CONSTRUCT); SWFDisplayItem_addAction(it1, newSWFAction(" _root.note('mc1.onClipLoad'); _root.x += '8+'; "), SWFACTION_ONLOAD); /* add mc2 to _root */ SWFDisplayItem it2; it2 = SWFMovie_add(mo, (SWFBlock)mc2); SWFDisplayItem_setDepth(it2, 11); SWFDisplayItem_setName(it2, "mc2"); SWFDisplayItem_addAction(it2, newSWFAction(" _root.note('mc2.onClipInitialize'); _root.x += '4+'; "), SWFACTION_INIT); SWFDisplayItem_addAction(it2, newSWFAction(" _root.note('mc2.onClipConstruct'); _root.x += '6+'; "), SWFACTION_CONSTRUCT); SWFDisplayItem_addAction(it2, newSWFAction(" _root.note('mc2.onClipLoad'); _root.x += '10+'; "), SWFACTION_ONLOAD); /* add main timeline actions */ add_actions(mo, "_root.note('_root.actions'); _root.x += '7+'; "); SWFMovie_nextFrame(mo); /* 2nd frame */ /* The check below used to succeeds, and started failing when * executing init actions "after" DLIST tags. * Should be fixed if we postpone the call to ::construct * to "after" init actions are executed, which would require * some book keeping in sprite_instance class */ check_equals(mo, "_root.x", "'0+1+2+3+4+5+6+7+8+9+10+11+'"); check_equals(mo, "_root.y", "'var_of_root'"); add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); /* 3rd frame */ //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFDisplayItem it1, it2, it3; SWFDisplayItem it41; SWFDisplayItem it51; SWFMovieClip mc1, mc2, mc3, dejagnuclip; SWFMovieClip mc4, mc41; SWFMovieClip mc5, mc51; SWFShape sh1, sh2, sh3; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { //fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); //return 1; } Ming_init(); Ming_useSWFVersion (OUTPUT_VERSION); mo = newSWFMovie(); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate(mo, 12); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); add_actions(mo, " haslooped1=false; haslooped2=false; haslooped3=false;" " mc1Initialized=0; mc1Unloaded=0;" " mc2Initialized=0; mc2Unloaded=0;" " mc3Initialized=0; mc3Unloaded=0;" " asOrder='0+';"); SWFMovie_nextFrame(mo); // frame1 sh1 = make_fill_square (100, 100, 60, 60, 255, 0, 0, 255, 0, 0); mc1 = newSWFMovieClip(); SWFMovieClip_add(mc1, (SWFBlock)sh1); SWFMovieClip_nextFrame(mc1); sh2 = make_fill_square (200, 200, 60, 60, 0, 0, 0, 0, 0, 0); mc2 = newSWFMovieClip(); SWFMovieClip_add(mc2, (SWFBlock)sh2); SWFMovieClip_nextFrame(mc2); sh3 = make_fill_square (300, 300, 60, 60, 0, 0, 0, 0, 0, 0); mc3 = newSWFMovieClip(); SWFMovieClip_add(mc3, (SWFBlock)sh3); SWFMovieClip_nextFrame(mc3); it1 = SWFMovie_add(mo, (SWFBlock)mc1); SWFDisplayItem_setName(it1, "mc1"); SWFDisplayItem_setDepth(it1, 100); SWFDisplayItem_addAction(it1, newSWFAction( "_root.note(this+' initialized');" "_root.mc1Initialized++;" "_root.asOrder += '1+';" ), SWFACTION_INIT); SWFDisplayItem_addAction(it1, newSWFAction( "_root.note(this+' unloaded');" "_root.mc1Unloaded++;" "_root.asOrder += '3+';" ), SWFACTION_UNLOAD); SWFMovie_nextFrame(mo); // frame2 SWFDisplayItem_remove(it1); it2 = SWFMovie_add(mo, (SWFBlock)mc2); SWFDisplayItem_setName(it2, "mc2"); SWFDisplayItem_setRatio(it2, 0.1); SWFDisplayItem_setDepth(it2, 100); SWFDisplayItem_addAction(it2, newSWFAction( "_root.note(this+' initialized');" "_root.mc2Initialized++;" "_root.asOrder += '2+';" ), SWFACTION_INIT); SWFDisplayItem_addAction(it2, newSWFAction( "_root.note(this+' unloaded');" "_root.mc2Unloaded++;" "_root.asOrder += '5+';" ), SWFACTION_UNLOAD); SWFMovie_nextFrame(mo); // frame3 SWFDisplayItem_remove(it2); it3 = SWFMovie_add(mo, (SWFBlock)mc3); SWFDisplayItem_setName(it3, "mc3"); SWFDisplayItem_setRatio(it3, 0.2); SWFDisplayItem_setDepth(it3, 100); SWFDisplayItem_addAction(it3, newSWFAction( "_root.note(this+' initialized');" "_root.mc3Initialized++;" "_root.asOrder += '4+';" ), SWFACTION_INIT); SWFDisplayItem_addAction(it3, newSWFAction( "_root.note(this+' unloaded');" "_root.mc3Unloaded++;" ), SWFACTION_UNLOAD); SWFMovie_nextFrame(mo); // frame4 SWFMovie_nextFrame(mo); // frame 5 add_actions(mo, "if(! haslooped1) {" " gotoAndPlay(5);" " haslooped1 = true;" "}" ); SWFMovie_nextFrame(mo); // frame 6 check_equals(mo, "mc1Initialized", "2"); check_equals(mo, "mc2Initialized", "2"); check_equals(mo, "mc3Initialized", "1"); check_equals(mo, "mc1Unloaded", "2"); check_equals(mo, "mc2Unloaded", "2"); check_equals(mo, "mc3Unloaded", "0"); xcheck_equals(mo, "asOrder", "'0+1+2+3+4+5+1+2+3+5+'"); SWFMovie_nextFrame(mo); // frame 7 // // ==case 2== // mc4 = newSWFMovieClip(); mc41 = newSWFMovieClip(); SWFMovieClip_nextFrame(mc41); it41 = SWFMovieClip_add(mc4, (SWFBlock)mc41); add_clip_actions(mc4, "_root.check_equals(this._target, '/instance3');" "inst = this.getInstanceAtDepth(-16383);" "if(! haslooped2) {" " haslooped2 = true;" " _root.check_equals(inst._target, '/instance3/instance4');" "} else {" " _root.check_equals(inst._target, '/instance3/instance5');" " stop();" "}" ); SWFMovieClip_nextFrame(mc4); SWFDisplayItem_remove(it41); SWFMovieClip_nextFrame(mc4); SWFMovie_add(mo, mc4); SWFMovie_nextFrame(mo); // frame 9 SWFMovie_nextFrame(mo); // frame 10 // // ==case 3== // mc5 = newSWFMovieClip(); mc51 = newSWFMovieClip(); SWFMovieClip_nextFrame(mc51); it51 = SWFMovieClip_add(mc5, (SWFBlock)mc51); add_clip_actions(mc5, "_root.check_equals(this._target, '/instance6');" "inst = this.getInstanceAtDepth(-16383);" "if(! haslooped3) {" " haslooped3 = true;" " _root.check_equals(inst._target, '/instance6/instance7');" "} else {" " _root.check_equals(inst._target, '/instance6/instance7');" " stop();" "}" ); SWFMovieClip_nextFrame(mc5); SWFMovieClip_nextFrame(mc5); SWFMovie_add(mo, mc5); SWFMovie_nextFrame(mo); // frame 11 SWFMovie_nextFrame(mo); // frame 12 SWFMovie_nextFrame(mo); // frame 13 mc5 = newSWFMovieClip(); add_clip_actions(mc5, "_root.check_equals(this._target, '/instance9');"); SWFMovieClip_nextFrame(mc5); SWFMovie_add(mo, mc5); SWFMovie_nextFrame(mo); // frame 14 add_actions(mo, "totals(16); stop();"); SWFMovie_nextFrame(mo); // frame 15 //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char** argv) { SWFMovie mo; SWFMovieClip mc1, mc11, mc2, dejagnuclip; SWFDisplayItem it1, it11, it2; const char *srcdir="."; if ( argc>1 ) srcdir=argv[1]; else { fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]); return 1; } Ming_init(); mo = newSWFMovieWithVersion(OUTPUT_VERSION); SWFMovie_setDimension(mo, 800, 600); SWFMovie_setRate (mo, 12.0); dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0, 800, 600); SWFMovie_add(mo, (SWFBlock)dejagnuclip); SWFMovie_nextFrame(mo); // 1st frame /* add mc1, mc2 to the main movie */ mc1 = newSWFMovieClip(); mc11 = newSWFMovieClip(); SWFMovieClip_nextFrame(mc11); it11 = SWFMovieClip_add(mc1, (SWFBlock)mc11); SWFDisplayItem_setDepth(it11, 10); SWFDisplayItem_setName(it11, "mc11"); SWFMovieClip_nextFrame(mc1); add_clip_actions(mc1, "duplicateMovieClip('mc11', 'dup_ch1', 1);" "_root.check_equals(typeof(dup_ch1), 'movieclip');" "duplicateMovieClip('/_root/mc1/mc11', 'dup_ch2', 2);" "_root.check_equals(typeof(dup_ch2), 'movieclip');" "duplicateMovieClip('/:_root/:mc1/:mc11', 'dup_ch3', 3);" "_root.check_equals(typeof(dup_ch3), 'movieclip');" "duplicateMovieClip('mc2', 'dup_ch4', 4);" // can not duplicate a movie clip in a different time "_root.check_equals(typeof(dup_ch4), 'undefined');" "duplicateMovieClip('/:mc2', 'dup_ch5', 5);" // can not duplicate a movie clip in a different time "_root.check_equals(typeof(dup_ch5), 'undefined');" // Don't do this, duplicate a self-clip will crash the proprietary player" // "duplicateMovieClip('/:mc1', 'dup_ch6', 6);" "stop();" ); SWFMovieClip_nextFrame(mc1); mc2 = newSWFMovieClip(); SWFMovieClip_nextFrame(mc2); it1 = SWFMovie_add(mo, (SWFBlock)mc1); it2 = SWFMovie_add(mo, (SWFBlock)mc2); SWFDisplayItem_setDepth(it1, 10); SWFDisplayItem_setName(it1, "mc1"); SWFDisplayItem_setDepth(it2, 20); SWFDisplayItem_setName(it2, "mc2"); SWFMovie_nextFrame(mo); // 2nd frame add_actions(mo, "duplicateMovieClip('mc1', 'dup1', 1);"); check_equals(mo, "typeof(dup1)", "'movieclip'"); add_actions(mo, "removeMovieClip(dup1);"); check_equals(mo, "typeof(dup1)", "'undefined'"); add_actions(mo, "duplicateMovieClip('/:mc1', 'dup2', 2);"); check_equals(mo, "typeof(dup2)", "'movieclip'"); add_actions(mo, "removeMovieClip(dup2);"); check_equals(mo, "typeof(dup2)", "'undefined'"); add_actions(mo, "duplicateMovieClip('/:mc1/', 'dup3', 3);"); check_equals(mo, "typeof(dup3)", "'movieclip'"); add_actions(mo, "removeMovieClip(dup3);"); check_equals(mo, "typeof(dup3)", "'undefined'"); add_actions(mo, "duplicateMovieClip('/_root/mc1/', 'dup4', 4);"); check_equals(mo, "typeof(dup4)", "'movieclip'"); add_actions(mo, "removeMovieClip(dup4);"); check_equals(mo, "typeof(dup4)", "'undefined'"); add_actions(mo, "duplicateMovieClip('_root.mc1', 'dup5', 5);"); check_equals(mo, "typeof(dup5)", "'movieclip'"); add_actions(mo, "removeMovieClip(dup5);"); check_equals(mo, "typeof(dup5)", "'undefined'"); add_actions(mo, "duplicateMovieClip('_root.mc1.mc11', 'dup6', 6);"); // can not duplicate a movieclip in a different timeline check_equals(mo, "typeof(dup6)", "'undefined'"); add_actions(mo, "duplicateMovieClip('/_root/mc1/:mc11', 'dup7', 7);"); // can not duplicate a movieclip in a different timeline check_equals(mo, "typeof(dup7)", "'undefined'"); add_actions(mo, "duplicateMovieClip('/_root/mc1/mc11', 'dup8', 8);"); // can not duplicate a movieclip in a different timeline check_equals(mo, "typeof(dup8)", "'undefined'"); SWFMovie_nextFrame(mo); // 3rd frame add_actions(mo, " _root.totals(); stop(); "); SWFMovie_nextFrame(mo); // 4th frame //Output movie puts("Saving " OUTPUT_FILENAME ); SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }