brought up to date
authorkramm <kramm>
Fri, 6 Feb 2004 17:48:40 +0000 (17:48 +0000)
committerkramm <kramm>
Fri, 6 Feb 2004 17:48:40 +0000 (17:48 +0000)
doc/fileformat.sc

index 752426c..538d5d3 100644 (file)
@@ -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
 # -----------
 
 #                                         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
 
 # 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) 
     .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
 .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.
 
 
 .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)
 
 .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
 # 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
 # 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
 # -------------------
 
 .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
-