From: kramm Date: Fri, 6 Feb 2004 17:48:40 +0000 (+0000) Subject: brought up to date X-Git-Tag: release-0-5-0~12 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=3289d29dbdb4ed443e65c2011a95580c14b71ad8 brought up to date --- diff --git a/doc/fileformat.sc b/doc/fileformat.sc index 752426c..538d5d3 100644 --- a/doc/fileformat.sc +++ b/doc/fileformat.sc @@ -1,14 +1,3 @@ -# ================================================================================== -# -# swfc(1) File format specification (well, sort of) -# Version: 0.1 -# -# ================================================================================== - -# Notice that the following is actually a valid .sc file, generating the four swfs -# spec.flash, scroll1.flash, scroll2.flash and simple_viewer.flash. (Provided all included -# files are present) - # File header # ----------- @@ -26,15 +15,18 @@ # changed to .flash, or the value of the -o command line # parameter if given) -# load a simple object: +# inherit swf movies: # --------------------- -.swf myshape1 "choo1.swf" -.swf myshape2 filename="choo1.swf" # long form -.swf myshape3 filename=choo1.swf # long form, without quotes -.swf myshape4 choo1.swf # short form, without quotes +.swf mymovie1 "choo1.swf" +.swf mymovie2 filename="choo1.swf" # long form +.swf mymovie3 filename=choo1.swf # long form, without quotes +.swf mymovie4 choo1.swf # short form, without quotes -#TODO: Do those files come from the current directory, the script directory or both? +# Notice: An embedded animation can't have a different framerate than +# the frame rate from the surrounding animation. + +#TODO: Those files currently come from the current directory- they should come from the script directory. # load an image: # -------------- @@ -42,7 +34,7 @@ .jpeg background "panorama.jpg" .jpeg background2 "panorama.jpg" quality=30% #reduces jpeg quality -.png background3 "choochoo.png" +.png background3 "choochoo.png" #TODO # (you can put this directly (generating a shape), or insert it into a shape via the fill= argument @@ -54,65 +46,44 @@ # define a gradient # ----------------- -#.gradient mygradient: -# 0.000 0 0 0 -# 0.500 255 255 255 -# 1.000 0 0 0 -#.end - -# load several pages: -# ------------------- - -.movie train1 "choochoopuff.swf" - -# Notice: An embedded animation can't have a different framerate than -# the frame rate from the surrounding animation. +.gradient mygradient: + 0% red + 50% green + 75% aquamarine + 100% #ffffff +.end # Create simple objects: # ---------------------- -# We should support some primitives to not have to load everything -# from a file .box mybox1 width=100 height=50 color=black fill=none #unfilled rectangle (just the lines) .box mybox2 width=100 height=50 color=black #same as above .box mybox3 width=100 height=50 color=black fill #filled black rectangle .box mybox4 width=100 height=50 color=red line=2 fill=blue #blue rectangle with red edges .box mybox5 width=100 height=50 color=red line=2 fill=background #part the background image, with red edges -.circle mycircle1 r=50 color=#aa33ff fill=background -.egon poly1 vertices=5 -# Continuous soundtrack synched up to several frames in a row: -# ------------------------------------------------------------ +.circle mycircle1 r=50 color=#aa33ff fill=mygradient # filled with gradient (defined above) + +# Sounds: +# ------- -# load a sound effect: .sound sound1 "LocoStart.wav" .frame 16 .play sound1 loop=1 #other arguments supported: nomultiple (don't start if already playing) - -.frame 20 -# this starts a synchronized soundtrack at this frame position. The command -# expects a filename, not a sound object, as it would be duplicating the -# sound object otherwise, and I'd rather have that done explicitly. - .soundtrack "LocoStart.wav" - #... TODO: should .soundtrack sounds have a name? we could support - # .stop for them, which would simply stop generating mp3 data - .frame 55 -# unlike characters, sounds can't have multiple instances, and can't -# be referenced once playing. So we stop the sound, not the instance. .stop sound1 +.frame 66 + # this starts a synchronized soundtrack at this frame position. The command + # expects a filename, not a sound object, as it would be duplicating the + # sound object otherwise, and I'd rather have that done explicitly. + .soundtrack "LocoStart.wav" # TODO + # Sound effects on user pressing or releasing a button -.button playbutton shape=obj1 - onMouseDown: { - } - onMouseUp: { - } -# ... -.end -.buttonsounds playbutton press=sound1 release=sound2 enter=sound3 leave=sound4 +.button mybutton shape=obj1 # TODO +.buttonsounds mybutton press=sound1 release=sound2 enter=sound3 leave=sound4 # TODO # Elements of the movie should be animated by various means # moving (x,y and zoom) @@ -130,9 +101,9 @@ .jump obj1 x=200 y=200 # make object to suddenly change to 200,200 at frame 70. .frame 190 - .qchange obj1 x=300 y=200 # make obj1 move towards 300,200... + .qchange obj1 x=300 y=200 # TODO # make obj1 move towards 300,200... .frame 210 - .qchange obj1 x=300 y=300 # ... and then smoothly over to 300,300 using bspline interpolation + .qchange obj1 x=300 y=300 # TODO # ... and then smoothly over to 300,300 using bspline interpolation #.frame 220 #TODO # .jump obj1 x=reset y=reset @@ -140,23 +111,19 @@ .frame 230 .del obj1 #Remove object again -# morphing (easy for simple polygons, hard for more complex shapes) -# ----------------------------------------------------------------- - -.morphshape morphthing start="start.fig" end="end.fig" - -#.morphshape blop [V77CJQAvn3KKYD8GDb4gFgbAZ4oM2RBdhOtvEVRdpNdIJF4tQ5gh7GzxnFYNvxe7lpXVranU -# +v/OjhGkCoUrOq9gUj4bJj0JjioYaA+VDsZ4Wq0+XLm0MiIgJZICQbADnUpdro5N11eVS699O] +# morphing +# -------- -# the following would be more work, but may be nice: -.box mybox6 width=100 height=50 color=black -.box mybox7 width=100 height=50 color=red -.morphshape morphthing2 start=mybox1 end=mybox2 +.morphshape morphthing start="start.fig" end="end.fig" #TODO +.frame 250 + .put morphthing ratio=0% +.frame 270 + .change morphthing ratio=100% # interpolation between crude manual animation frames # --------------------------------------------------- -.swf ball "ball.fig" #The ball should be white or violet to make the cxforms below work +.shape ball "ball.xml" # TODO #The ball should be white or violet to make the cxforms below work # now draw two balls, which fly around each other. @@ -166,29 +133,28 @@ .frame 310 # the .qchange means, "interpolate to this position and frame, using quadratic splines". - .qchange myball1 x=50 y=0 - .qchange myball2 x=50 y=100 + .qchange myball1 x=50 y=0 #TODO + .qchange myball2 x=50 y=100 #TODO .frame 320 # We could also use coordinates relative to start position: .change myball1 x+=100 y+=0 - .qchange myball1 x=100 y=100 - .qchange myball2 x=0 y=100 + .qchange myball1 x=100 y=100 #TODO + .qchange myball2 x=0 y=100 #TODO .frame 330 - .qchange myball1 x=50 y=100 - .qchange myball2 x=50 y=0 + .qchange myball1 x=50 y=100 #TODO + .qchange myball2 x=50 y=0 #TODO .frame 340 # Hmmm. This frame is the same as frame 0. How to prevent duplicating that one? - .qchange myball1 x=0 y=100 - .qchange myball2 x=100 y=100 + .qchange myball1 x=0 y=100 #TODO + .qchange myball2 x=100 y=100 #TODO -# fading into existence/out of existence (colour xform): -# ------------------------------------------------------ +# color transforms (fading) +# ------------------------- # .put, .change, .qchange, .jump all support params which result in color transform. # Everything up to the + is multiplicated, the rest summed. -# TODO: negative values should also be allowed. .put obj1 blue=50% #(scale blue color component to 50%) .change obj1 blue=128 #(same as above) @@ -213,15 +179,14 @@ .change obj1 rotate=45 # tilt object, counterclockwise -# TODO: we still don't have full control over the 2x3 object-placement matrix. -# (As we only have one parameter for the two values on the primary diagonal) ActionScript -# has the same problem, however. +# shearing +# -------- + +.change obj1 shear=100% # shear object -# sprites +# sprites (a.k.a. movieClips) # ------- -# synonym: submovie - .sprite spr1 .frame 1 .put ball1=ball 0 0 .frame 2 .change ball1 100 100 @@ -266,76 +231,58 @@ # buttons # ------- -# create at minimum a Play button and a Stop button, maybe a Rewind also -.png playlogo "Play.png" -.png stoplogo "Stop.png" +.png play "Play.png" #TODO +.png play_pressed "Play_pressed.png" #TODO +.png stoplogo "Stop.png" #TODO -.button myplaybutton shape=playlogo -#everything till the .end is actionscript. - press: - play "spr1" -.end -.button mystopbutton shape=stoplogo - press: - stop "spr1" -.end - -.put myplaybutton x=100 y=100 -.put mystopbutton x=200 y=100 +.button playbutton shape=play press=play_pressed #TODO -# The following examples drop the .end command. This is only possible -# if we keep the leading dot (.) in the command names. (Due to naming -# conflicts with Actionscript) +.button playbutton2 shape=play press=play_pressed: + [mouse down] + ... actionscript ... +# ... +.end # button which is blue, get's green when the mouse hovers over it, and # white when it is pressed: - -.button b1 shape=blueshape over=greenshape press=whiteshape +.button b1 shape=blueshape over=greenshape press=whiteshape #TODO # button where the button position is not identical to the active area: - -.button b2 area=activearea shape=blueshape over=greenshape press=whiteshape +.button b2 area=activearea shape=blueshape over=greenshape press=whiteshape #TODO # (if area is not set, it's the same as shape) # the above put into use: pop up a window if the mouse cursor enters a certain # area: - -.button b3 area=activearea shape=emptyshape over=window1 press=window1 +.button b3 area=activearea shape=emptyshape over=window1 press=window1 #TODO # button characters also support positioning and cxforming characters. # to use this, we put the characters "virtually", and then use the # instances in the button - -.buttonput area1=playlogo x=300 y=400 rotate=0 -.buttonput shape1=playlogo x=400 y=400 rotate=0 red=50% -.buttonput over1=playlogo x=400 y=400 rotate=30 red=50% -.buttonput press1=playlogo x=500 y=500 rotate=180 -.button mybutton1 area=area1 shape=shape1 over=over1 press=press1 +.buttonput area1=playlogo x=300 y=400 rotate=0 #TODO +.buttonput shape1=playlogo x=400 y=400 rotate=0 red=50% #TODO +.buttonput over1=playlogo x=400 y=400 rotate=30 red=50% #TODO +.buttonput press1=playlogo x=500 y=500 rotate=180 #TODO +.button mybutton1 area=area1 shape=shape1 over=over1 press=press1: #TODO #[...actionscript...] .end # fonts # ----- - -#only supported via other tools (lib/examples/makefonts) at the moment. - .font font1 "myfont.swf" +.font font1 "myfont.ttf" +.font font1 "myfont.pfa" # text fields # ----------- - -#(these are scalable vector objects just like shapes) -.text mytext1 "I am a happy little scroll message" color=blue size=100% font=font1 -#TODO: clipping +.text mytext1 font=font1 text="I am a happy little scroll message" color=blue size=100% # edittext # -------- - #(field where the flash animation can get input from the user) .font helvetica "helvetica-bold.swf" -.edittext edittext1 text="Type something here" color=blue maxlength=200 font=helvetica size=24 width=320 height=200 +.edittext edittext1 text="Type something here" color=blue maxlength=200 font=helvetica size=24 width=320 height=200 #TODO # width/height: dimensions of the box # text: The text which appears initally in the box, and can be overwritten by the user # maxlength: max. length of the text the user can type @@ -347,57 +294,20 @@ # actionscript # ------------ -#simplified: - .action: - stop spr1 - setproperty spr1._visible 1 #TODO: spr1._visible=1? -.end - -#full: - -.action opcodes: - settarget "spr1" - stop - settarget "" - push "spr1" - push _visible - push 1 - setproperty - end -.end - -#simplified: - -.button playbutton2 shape=obj1 opcodes: - press: play spr1 - release: stop spr1 -.end - -#full: - -.button playbutton3 shape=obj1 opcodes: - press: - settarget "spr1" - play - settarget "" - end - # [...] + _root.play(); .end -# todo: mx initaction, placeobject2 initclip - # depth control # ------------------- - # .put, .change, .qchange, .jump, .startclip take before and after parameters, # which can be used to specify the depth of an object -.put o1=obj1 -.put o2=obj1 below=o1 x=50 -.frame -.change o1 -.change o2 above=o1 x=50 +.put o1=obj1 #TODO +.put o2=obj1 below=o1 x=50 #TODO +.frame #TODO +.change o1 #TODO +.change o2 above=o1 x=50 #TODO # newline conventions # ------------------- @@ -419,436 +329,3 @@ .end # end of first file -# ================================================================================== -# -# Ok, now for some actual examples -# -# ================================================================================== - -# scroll1.sc -# -# This example scrolls a single line of text from the bottom to the top, with -# a background image -# - -.flash bbox=200x200 fps=25 version=6 name="scroll1.swf" - -.jpeg background "panorama.jpg" - -.font helvetica-bold "helvetica-bold.swf" -.text title1 "I am a happy little scroll message" color=blue font=helvetica-bold size=100% - -.put background x=0 y=0 - -.frame 1 -.put obj1=title1 x=0 y=200 # As text box positions are specified at the upper left corner, this - # places the text just below the bottom. -# (.put title1 is actually .put title1=title1 (i.e. the instance has the same name as the character) - -.frame 200 - # - # "change" moves the object to the new position, _interpolating_ in the frames between. - # Do we also need a command for abruptly changing position (omitting interpolation)? - # -.change obj1 x=0 y-=12 # Now move the text up until it disappears at the top, in 40 frames - -# to scroll horizontally, we would have modified the x instead of the y coordinate, and scrolled to -200 -# (assuming the text is < 200 pixels) - -.end - -# ================================================================================== - -# scroll2.sc -# -# This example now also fades the text in and out again -# - -.flash bbox=200x200 fps=25 version=6 name="scroll2.swf" -.jpeg background "panorama.jpg" - -#create some text for a title and credits - -.font helvetica "helvetica-bold.swf" -.text title1 "ChooChoo Train" color=blue font=helvetica size=100% - -# move from bottom to top. Fade it in on the way, -# then fade it out again. -# TODO: the following looks like fading only if the background is black. Add alpha channel support. -.put obj1=title1 x=0 y=200 luminance=0% -.frame 100 - .change obj1 luminance=100% -.frame 200 - .change obj1 y-=12 luminance=0% - -.end - -# simpleviewer.sc -# -# Create the simple_viewer.flash file used in SWFTools. - -.flash bbox=1024x768 version=4 fps=25 name="simple_viewer.swf" -.frame 1 -.swf leftshape "left.fig" -.swf rightshape "right.fig" - -.sprite viewport -.end - -.action - stop viewport - setvariable "/subtitle" "" -.end - -.buttonput left=leftshape luminance=50% -.buttonput lefthover=leftshape luminance=75% -.buttonput leftpress=leftshape luminance=100% -.button leftbutton shape=left over=lefthover press=leftpress - release: - previousframe viewport -.end - -.buttonput right=rightshape x=20 luminance=50% -.buttonput righthover=rightshape x=20 luminance=75% -.buttonput rightpress=rightshape x=20 luminance=100% -.button rightbutton shape=right over=righthover press=rightpress - release: - nextframe viewport -.end - -.font arial "arial.swf" -.edittext subtitlebox width=826 height=160 color=black variable="/:subtitle" font=arial size=24 - -.put viewport -.put leftbutton -.put rightbutton -.put subtitlebox x=40 - -.end - -# boxlayers.sc -# test "above" - -.flash bbox=400x300 version=4 fps=50 name="boxLayers.swf" - -.box box1 width=100 height=100 color=white fill -.box box2 width=100 height=100 color=white fill - -.frame 0 - .put box1 x=30 y=10 blue=0 red=0 luminance=50 - .put box2 x=60 y=40 green=0 red=0 luminance=50 -.frame 100 - .jump box1 above=box2 -.frame 200 - .jump box2 above=box1 -.end - -# ---------------------- everything below this line should actually be working ---------------------- - - -# boxes.sc -# -# Do things with rectangles. - -.flash bbox=autocrop version=6 fps=50 name="boxes.swf" compress - - .box box1 width=100 height=100 color=red fill #filled red box - .box box2 width=100 height=100 color=white #white hollow frame - .box box3 width=100 height=100 color=green line=10 fill=blue #filled blue box, with thick green border - -.frame 0 - .put box1 x=30 scalex=30 - .put box2 x=30 scalex=30 - .put box3 x=30 scalex=30 -.frame 100 - .change box1 x+=300 scalex=100 - .change box2 y+=300 scalex=100 - .change box3 x+=300 y-=300 scalex=100 -.frame 150 - .del box1 - .del box2 - .del box3 -.end - -# monkey.sc -# - -.flash bbox=autocrop version=4 fps=50 name="monkey.swf" - - .swf island "island.swf" - .swf monkey "monkey4.swf" - .put island - .point leftfoot 45 177 - .point rightfoot 138 177 - .frame 0 .put monkey 160 160 - .frame 20 .change monkey 160 160 - .frame 30 .change monkey 160 122 - .frame 35 .change monkey 160 112 - .frame 40 .change monkey 160 122 - .frame 50 .change monkey 160 160 - - .frame 70 .change monkey 205 337 pin=leftfoot rotate=0 - .frame 90 .change monkey rotate=30 - .frame 100 .change monkey rotate=30 - .frame 120 .change monkey rotate=0 - .frame 122 .change monkey 298 337 pin=rightfoot rotate=0 - .frame 140 .change monkey rotate=-30 - .frame 150 .change monkey rotate=-30 - .frame 170 .change monkey rotate=0 -.end - -# cxform.sc -# -# Try color transforms - -.flash name="cxform.swf" version=5 - - .swf s1 "photo.swf" - - .put s1 x=50 y=50 scalex=110 scaley=110 - .frame 100 - .change s1 x=0 y=0 scalex=210 scaley=210 red=-1+255 green=-1+255 blue=-1+255 #invert - .frame 200 - .change s1 x=100 y=50 scalex=110 scaley=110 red=0 green=+0 blue=+0 #remove red - .frame 300 - .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=2 blue=-1+255 #amplify green, invert blue - .frame 400 - .change s1 x=50 y=100 scalex=110 scaley=110 red=2-128 green=-2+255 blue=+0.7+40 #alien glow - .frame 500 - .change s1 x=0 y=0 scalex=210 scaley=210 red=8-1024 green=8-1024 blue=8-1024 #palette reduce - .frame 600 - .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=+0 blue=+0 #back to normal - .frame 700 - .change s1 x=105 y=105 scalex=0 scaley=0 luminance=0 #fadeout -.end - -# transparency.sc -# -# Test transparency - -.flash bbox=200x200 version=5 fps=25 name="transparency.swf" - -.box box1 90 90 color=yellow fill=blue line=5 -.box box2 90 90 color=white fill=red line=5 - -.put b1=box1 75 75 rotate=0 -.put b2=box1 75 75 rotate=90 -.put b3=box1 75 75 rotate=180 -.put b4=box1 75 75 rotate=270 -.put box2 30 30 alpha=100% -.frame 300 -.change b1 rotate+=360 -.change b2 rotate+=360 -.change b3 rotate+=360 -.change b4 rotate+=360 -.change box2 alpha=0% -.end - - -# points.sc -# -# Test points, pivots, pins - -.flash version=5 fps=20 name="points.swf" - -.box box 90 90 color=white fill=red line=5 -.point center 45 45 -.point corner1 0 0 -.point corner2 90 0 -.point corner3 90 90 -.point corner4 0 90 - -.put b1a=box x=90 y=90 pin=center -.put b1b=box x=90 y=90 pin=center alpha=50% -# OR: .put b1=box x=90 y=90 pin=(45,45) rotate=0 - -.put b2=box x=90 y=90 pin=corner1 alpha=75% blue=+128 red=0.2 -.put b3=box x=90 y=90 pin=corner2 alpha=75% blue=+128 red=0.2 -.put b4=box x=90 y=90 pin=corner3 alpha=75% blue=+128 red=0.2 -.put b5=box x=90 y=90 pin=corner4 alpha=75% blue=+128 red=0.2 - -.frame 100 -.change b1a rotate-=720 -.change b1b rotate+=720 -.change b2 rotate+=360 -.change b3 rotate-=360 -.change b4 rotate+=360 -.change b5 rotate-=360 - -.end - -# clipping.sc -# -# Test clipping - -.flash name="clip.swf" fps=25 - .sprite s1 # this just constructs a colorful object "s1" - .box b1 40 40 color=red fill=violet line=10 - .box b2 40 40 color=blue fill=green line=10 - .box b3 40 40 color=yellow fill=cyan line=10 - .box b4 40 40 color=white fill=black line=10 - .put b1 0 0 - .put b2 60 0 - .put b3 60 60 - .put b4 0 60 - .end - - # the line and fill colors of the circle don't actually do anything- - # as it's used for clipping only it's shape matters - .circle c1 80 color=blue fill=green - - .startclip c1 x=-160 y=-160 #c1 clips... - .put s1 # ...the sprite s1 - .end - -.frame 200 - .change c1 x=160 y=160 # movement doesn't change the clipping property - .change s1 rotate=5 - -.end - -# fonts.sc -# -# fonts&text - -.flash name="fonts.swf" - .font courier "Courier.swf" - .font helvetica "Helvetica.swf" - .text abc text="abcdefghijklmnopqrstuvwxyz" font=courier size=100% color=blue - .text abc2 text="abcdefghijklmnopqrstuvwxyz" font=helvetica size=100% color=red - .put abc - .put abc2 y=200 -.end - - -# shear.sc -# -# Shearing - -.flash bbox=300x200:-30 name="shear.swf" fps=25 - .font helvetica "Helvetica.swf" - .text text text="Shear" font=helvetica size=100% color=yellow - .put t0=text y=150 alpha=0% shear=0 - .put t1=text y=150 alpha=0% shear=1 - .put t2=text y=150 alpha=0% shear=2 - .put t3=text y=150 alpha=0% shear=3 - .put t4=text y=150 alpha=0% shear=4 - .put t5=text y=150 alpha=0% shear=5 - .put t6=text y=150 alpha=0% shear=6 - .put t7=text y=150 alpha=0% shear=7 - .put t8=text y=150 alpha=0% shear=8 - .put t9=text y=150 alpha=0% shear=9 - .frame 50 - .change t0 alpha=40% shear=0 - .change t1 alpha=40% shear=0 - .change t2 alpha=40% shear=0 - .change t3 alpha=40% shear=0 - .change t4 alpha=40% shear=0 - .change t5 alpha=40% shear=0 - .change t6 alpha=40% shear=0 - .change t7 alpha=40% shear=0 - .change t8 alpha=40% shear=0 - .change t9 alpha=40% shear=0 - .frame 100 - .change t0 .change t1 .change t2 .change t3 .change t4 - .change t5 .change t6 .change t7 .change t8 .change t9 - .frame 150 - .change t0 alpha=0% shear=-9 - .change t1 alpha=0% shear=-8 - .change t2 alpha=0% shear=-7 - .change t3 alpha=0% shear=-6 - .change t4 alpha=0% shear=-5 - .change t5 alpha=0% shear=-4 - .change t6 alpha=0% shear=-3 - .change t7 alpha=0% shear=-2 - .change t8 alpha=0% shear=-1 - .change t9 alpha=0% shear=-0 -.end - -# sound.sc -# -# Sound effects - -.flash name="sound.swf" fps=25 -.sound loco "LocoStart.wav" -.sound whistle "Whistle.wav" - -.frame 0 - .play loco -.frame 25 - .stop loco - .play whistle loop=20 -.frame 200 - .stop whistle -.end - - -# outline.sc -# -# Outlines /Fillings - -.flash name="outline.swf" - - .outline box: - moveTo 0,0 - lineTo 100,0 - lineTo 100,100 - lineTo 0,100 - lineTo 0,0 - .end - - .font arial "Arial.swf" - - .textshape abc font="arial" text="Hello World" - -# .gradient bluegreen: -# 0% blue -# 50% green -# 100% red -# .end - - .filled fabc outline=box fill=#ff6633 line=5 color=#7799ff - .filled fbox outline=abc fill=#ff6633 line=5 color=#7799ff - - .put fabc - .put fbox y=200 -.end - -# gradients -.flash name="gradient.swf" - - .font arial "Arial.swf" - .textshape abc font="arial" text="Hello World" - - .gradient bluegreen: - 0% blue - 50% green - 100% red - .end - - .gradient sunshine radial: - 0% white - 50% yellow - 100% red - .end - - .filled fbox outline=abc fill=bluegreen line=1 color=#7799ff - .filled fbox2 outline=abc fill=sunshine line=1 color=#7799ff - - .put fbox - .put fbox2 y=200 -.end - -# actions -.flash name="action.swf" - - .box mybox width=100 height=100 fill=green - - .action: - { - _root.stop(); - } - .end - -.end -