From: kramm Date: Thu, 1 Nov 2001 15:13:45 +0000 (+0000) Subject: button/actionscript example X-Git-Tag: release-0-1-0~17 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=e29229a3ea9992a5422f03846bab43035463e14c button/actionscript example --- diff --git a/lib/example/buttontest.c b/lib/example/buttontest.c new file mode 100644 index 0000000..99ad495 --- /dev/null +++ b/lib/example/buttontest.c @@ -0,0 +1,141 @@ +/* shape1.c + + Example implementation for creating a button with rfxswf + + Part of the swftools package. + + Copyright (c) 2000, 2001 Matthias Kramm + Rainer Böhme + + This file is distributed under the GPL, see file COPYING for details +*/ + +#include +#include +#include +#include "../rfxswf.h" + +TAG* t; + +int useDefineButton2 = 0; // set this to 1 to use DefineButton2 Tags + // instead of DefineButton1 + +int main (int argc,char ** argv) +{ SWF swf; + RGBA rgb; + SRECT r; + LPSHAPE s; + ActionTAG*a1,*a2,*a3, *actiontoset; + S32 width=300,height = 300; + + int f,i,ls1,fs1; + int count; + + memset(&swf,0x00,sizeof(SWF)); // set global movie parameters + + swf.fileVersion = 4; // make flash 4 compatible swf + swf.frameRate = 0x1900; // about 0x19 frames per second + + swf.movieSize.xmax = 20*width; // flash units: 1 pixel = 20 units + swf.movieSize.ymax = 20*height; + + swf.firstTag = swf_InsertTag(NULL,ST_SETBACKGROUNDCOLOR); + t = swf.firstTag; + rgb.r = 0xff; + rgb.g = 0xff; + rgb.b = 0xff; + swf_SetRGB(t,&rgb); + + for(count=0;count<4;count++) + { + t = swf_InsertTag(t,ST_DEFINESHAPE); + swf_ShapeNew(&s); // create new shape instance + rgb.r = rgb.b = rgb.g = 0x00; + ls1 = swf_ShapeAddLineStyle(s,40,&rgb); + rgb.r = count*0x40; rgb.b = 0xff; + fs1 = swf_ShapeAddSolidFillStyle(s,&rgb); + swf_SetU16(t,33+count); // now set character ID + r.xmin = 0; + r.ymin = 0; + r.xmax = 20*width; + r.ymax = 20*height; + swf_SetRect(t,&r); // set shape bounds + swf_SetShapeHeader(t,s); // write all styles to tag + swf_ShapeSetAll(t,s,0,0,ls1,fs1,0); // move to (0,0), select linestyle ls1 and no fillstyle + swf_ShapeSetCircle(t,s,width*10,height*10,width*10,height*10); + swf_ShapeSetEnd(t); // finish drawing + swf_ShapeFree(s); // clean shape structure (which isn't needed anymore after writing the tag) + } + + a1 = swf_ActionStart(t); + action_SetTarget("movie"); + action_NextFrame(); + action_SetTarget(""); + action_End(); + swf_ActionEnd(); + + a2 = swf_ActionStart(t); + //action_GetUrl("test.swf","_level0"); // load a swf + //action_GetUrl("index.html","_this"); // load html in new window + action_GetUrl("http://www.quiss.org/swftools/index.html","_parent"); // load html in this window + action_End(); + swf_ActionEnd(); + + a3 = swf_ActionStart(t); + action_GotoFrame(33); + action_End(); + swf_ActionEnd(); + + actiontoset = a2; + + if(!useDefineButton2) + { + t = swf_InsertTag(t,ST_DEFINEBUTTON); + swf_SetU16(t,31); //id + swf_ButtonSetFlags(t, 0); //menu=no + swf_ButtonSetRecord(t,0x01,33,1,0,0); + swf_ButtonSetRecord(t,0x02,34,1,0,0); + swf_ButtonSetRecord(t,0x04,35,1,0,0); + swf_ButtonSetRecord(t,0x08,36,1,0,0); + swf_SetU8(t,0); + swf_SetActions(t,actiontoset); + swf_SetU8(t,0); + } + else + { + t = swf_InsertTag(t,ST_DEFINEBUTTON2); + swf_SetU16(t,31); //id + swf_ButtonSetFlags(t, 0); //menu=no + swf_ButtonSetRecord(t,0x01,33,1,0,0); + swf_ButtonSetRecord(t,0x02,34,1,0,0); + swf_ButtonSetRecord(t,0x04,35,1,0,0); + swf_ButtonSetRecord(t,0x08,36,1,0,0); + swf_SetU8(t,0); + + swf_ButtonSetCondition(t, 4); + swf_SetActions(t,actiontoset); + swf_SetU8(t,0); + + swf_ButtonSetCondition(t, 0); + swf_SetU8(t,0); + + swf_SetU8(t,0); + + swf_ButtonPostProcess(t, 2); + } + + t = swf_InsertTag(t,ST_PLACEOBJECT2); + swf_ObjectPlace(t, 31, 2,0,0,0); + + t = swf_InsertTag(t,ST_SHOWFRAME); + t = swf_InsertTag(t,ST_END); + + f = open("button.swf",O_WRONLY|O_CREAT, 0644); + if FAILED(swf_WriteSWF(f,&swf)) fprintf(stderr,"WriteSWF() failed.\n"); + close(f); + + swf_FreeTags(&swf); // cleanup + return 0; +} + +