X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=doc%2Fswfc.xml;h=278ac551dce4dbdfe46e38bb358511fe2363ea15;hb=eb701aad0bcc20d9c60411b9f97f72c183c1ffe7;hp=8be7cca3ff174568e04a61dd66992abe8c8054ab;hpb=a56e5730e868870c408848b6e56b73d4a0c11b44;p=swftools.git
diff --git a/doc/swfc.xml b/doc/swfc.xml
index 8be7cca..278ac55 100644
--- a/doc/swfc.xml
+++ b/doc/swfc.xml
@@ -35,8 +35,8 @@ Line breaking:
Links:
- (The lang= is optional)
- .flash
- .box b1 100 100
- .end
+ .flash
+ .box b1 100 100
+ .end
Tables:
@@ -72,7 +72,7 @@ Boxes:
-->
-
-.flash name="box.swf"
+.flash filename="box.swf"
.box b1 100 100 color=yellow fill=red
.put b1 pin=center scale=0%
.frame 100
@@ -113,42 +108,79 @@ Boxes:
.end
+
The
+ Change, on the other hand, modifies an already existing object.
+ It works gradually: In the example above, the change happens over 100 frames.
+ If you want to change an object suddently from one frame to the next, you
+ would use the
+You can define a number of parameters in the
+Each one of these consists of two parts: The multiplicator and the shift.
+The syntax is
+
+You can also specify negative values for both
+The following example demonstrates a few of the possible transforms: +
+ +
-.flash name="cxform.swf" version=5
+.flash filename="cxform.swf" version=5 fps=25
.jpeg s1 "photo.jpeg" quality=80%
.put s1 x=50 y=50 scalex=110 scaley=110
- .frame 100
+ .frame 50
.change s1 x=0 y=0 scalex=210 scaley=210 red=-1+255 green=-1+255 blue=-1+255 #invert
- .frame 200
+ .frame 100
.change s1 x=100 y=50 scalex=110 scaley=110 red=0 green=+0 blue=+0 #remove red
- .frame 300
+ .frame 150
.change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=2 blue=-1+255 #amplify green, invert blue
- .frame 400
+ .frame 200
.change s1 x=50 y=100 scalex=110 scaley=110 red=2-128 green=-2+255 blue=+0.7+40 #alien glow
- .frame 500
+ .frame 250
.change s1 x=0 y=0 scalex=210 scaley=210 red=8-1024 green=8-1024 blue=8-1024 #palette reduce
- .frame 600
+ .frame 300
.change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=+0 blue=+0 #back to normal
- .frame 700
+ .frame 350
.change s1 x=105 y=105 scalex=0 scaley=0 luminance=0 #fadeout
.end
-
+
+A very useful fact is also that you can color transform the alpha component.
+So to fade any object into the background, you would simply transform it's
+alpha color: E.g.
-.flash name="helloworld.swf"
+.flash filename="helloworld.swf"
.font Arial filename="Arial.ttf"
.text helloworld font=Arial text="Hello World!"
@@ -171,6 +203,12 @@ For example, for the obligatory hello world program:
.end
+So much for the basics. Now let's go to the more advanced -functionality. +functionality around fonts.
@@ -215,10 +253,10 @@ objects which you can use in other commands.
-.flash name="fontoutline.swf"
+.flash filename="fontoutline.swf"
.font Arial "Arial.swf"
- .textshape helloworld font=Arial text="Hello World"
- .filled filled_helloworld outline=helloworld fill=blue line=5 color=green
+ .textshape helloworld font=Arial size=200% text="Hello World"
+ .filled filled_helloworld outline=helloworld fill=blue line=3 color=green
.put filled_helloworld
.end
@@ -230,18 +268,31 @@ To make this a little more interesting, let's fill with a gradient instead
of a plain color:
-.flash name="fontgradient.swf"
+.flash filename="fontgradient.swf"
.font Arial "Arial.swf"
.textshape helloworld font=Arial text="SHADE"
.gradient whitefade:
- 0% black
- 50% #505050
- 100% yellow
+ 0% black
+ 50% #505050
+ 100% yellow
.end
.filled filled_helloworld outline=helloworld fill=whitefade line=1 color=#2c2c2c
- .put filled_helloworld
+ .put filled_helloworld scale=200%
+.end
+
+
+While at it, you can also fill with an image:
+
+
+.flash filename="fontimage.swf"
+ .font courier "Courier.swf"
+ .jpeg beach "beach.jpg"
+ .textshape text font=courier text="HOLIDAY"
+
+ .filled filled_text outline=text fill=beach line=1 color=#2c2c2c
+ .put filled_text scale=200%
.end
@@ -251,15 +302,14 @@ with
-.flash name="text5.swf"
+.flash filename="text5.swf"
.font courier "Courier.swf"
-.font helvetica "Helvetica.swf"
-.text hithere text="HELLO" font=courier size=50%
-.swf scene Scenery50.swf
+.text hithere text="HELLO" font=courier size=200%
+.jpeg scenery "scenery.jpg"
-.frame 0
+.frame 1
.startclip hithere pin=center x=100 y=75 scale=50% #text clips...
- .put scene # ...the image "scene"
+ .put scenery scale=50%
.end
.frame 100
.change hithere rotate+=360 pin=center scale=100%
@@ -267,21 +317,30 @@ them for clipping:
.end
++The last two examples look similar, but their underlying structure +is different: The first is a shape object filled with +image data (that is, a texture), while the second uses a normal +text object to clip an rectangular image. (More about clipping in +the next section) +
+ +
Also,
-.flash name="text6.swf"
-.font courier "Courier.swf"
-.font helvetica "Helvetica.swf"
-.text hello text="HELLO" font=helvetica size=50% color=blue
-.text world text="WORLD" font=helvetica size=50% color=red
-
-.frame 0
- .put hello pin=center x=50 y=50
- .put world pin=center x=50 y=50 alpha=25%
+.flash filename="text6.swf"
+.font times "Times.swf"
+.text hello text="HELLO" font=times size=100% color=blue
+.text world text="WORLD" font=times size=100% color=red
+
+.frame 1
+ .put hello pin=center x=50 y=50
+ .put world pin=center x=50 y=50 alpha=25%
.frame 200
.change hello rotate+=360 pin=center alpha=25%
.change world rotate-=360 pin=center alpha=100%
@@ -290,7 +349,425 @@ which is used here together with the alpha parameter of .change :
+.flash filename="xorclip.swf" bbox=640x480 background=black version=6
+.font times "Times.swf"
+.textshape helloworld text="HELLO WORLD" font=times size=500%
+.filled helloworld1 outline=helloworld fill=blue line=0
+.filled helloworld2 outline=helloworld fill=green line=0
+
+.frame 1
+ .box background width=640 height=480 fill=white line=0
+ .sprite twotexts
+ .put h1=helloworld1 y=200
+ .put h2=helloworld2 y=200
+ .frame 1000
+ .change h1 x=-500
+ .change h2 x=-1000
+ .end
+
+ .startclip twotexts
+ .put background
+ .end
+.frame 1000
+.end
+
+
+
+
+.flash filename="edittext.swf" bbox=210x110
+ .font Arial "Arial.swf"
+ .edittext myedittext font=Arial size=20%
+ width=200 height=100
+ color=blue border multiline wordwrap
+ text="Edit me!\nClick with your mouse on this text to edit it."
+ .put myedittext x=3 y=3
+.end
+
+
+
+.flash filename="house.swf"
+
+ .outline house_outline:
+ M 36.99 29.93 L 15.52 51.39 L 20.44 51.39 L 20.44 81.91
+ L 39.73 81.91 L 39.73 62.33 L 48.36 62.33
+ L 48.36 81.91 L 53.84 81.91 L 53.84 51.39
+ L 58.45 51.39 L 36.99 29.93
+ M 28.79 53.70 L 34.55 53.70 L 34.55 60.60 L 28.79 60.60
+ L 28.79 53.70
+ .end
+ .filled house outline=house_outline fill=grey color=grey
+ .put house
+.end
+
+
+The syntax of the paths inside the
+...
+ <path
+ style="fill:#0000ff;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
+ d="M 369.90625 299.31250 L 155.21875 513.96875 L 204.40625 513.96875 L 204.40625 819.15625 L 397.31250 819.15625 L 397.31250 623.37500 L 483.68750 623.37500 L 483.68750 819.15625 L 538.40625 819.15625 L 538.40625 513.96875 L 584.56250 513.96875 L 369.90625 299.31250 z M 287.90625 537.00000 L 345.50000 537.00000 L 345.50000 606.09375 L 287.90625 606.09375 L 287.90625 537.00000 z "
+ id="rect908" />
+...
+
+
+
+.flash filename="gradients.swf"
+
+ .outline star:
+ M 521,640 C 502,678 370,546 328,554 C 270,566 152,731 93,722
+ C 51,716 147,549 127,512 C 98,460 -107,400 -117,341
+ C -124,299 63,339 93,308 C 133,265 127,50 180,23
+ C 218,3 238,195 276,213 C 330,238 532,166 575,208
+ C 605,238 429,316 424,358 C 416,417 547,587 521,640
+ .end
+
+ .gradient rainbow:
+ 0% blue
+ 25% green
+ 50% yellow
+ 75% orange
+ 100% red
+ .end
+
+ .gradient fire radial:
+ 0% white
+ 50% yellow
+ 100% red
+ .end
+
+ .gradient horizon:
+ 0% cyan
+ 49% blue
+ 50% green
+ 100% peru
+ .end
+
+ .gradient transparent:
+ 0% #ff000000
+ 100% #ff0000ff
+ .end
+
+ .box scenery fill=horizon width=200 height=200
+ .box bar fill=transparent width=240 height=20
+ .filled star1 outline=star fill=rainbow line=1
+ .filled star2 outline=star fill=fire line=1
+
+ .put scenery rotate=90%
+ .put star1 scale=10% x=-70
+ .put star2 scale=10% x=-180 y=110
+ .put bar x=-180 y=10 rotate=45
+.end
+
+
+
+
++The previous example demonstrated how to fill an outline with +a gradient. +
+ ++There are two types of gradients: radial and linear. radial gradients +have a center point and a radius (and are immune to rotations), and +linear gradients have a start point and a width (or height) and can +be rotated. +
+ +gradients can be freely positioned inside the object +you want to fill, by passing the
+.flash filename="gradients2.swf"
+
+ .outline o:
+ moveTo -50,-50
+
+ lineTo 0,-45
+ lineTo 50,-50
+
+ lineTo 45,0
+ lineTo 50,50
+
+ lineTo 0,45
+ lineTo -50,50
+
+ lineTo -45,0
+ lineTo -50,-50
+ .end
+
+ .gradient horizon1 radial x=-50 y=-50 r=100:
+ 0% cyan
+ 49% blue
+ 50% green
+ 100% cyan
+ .end
+
+ .gradient horizon2 radial x=0 y=0 r=50:
+ 0% cyan
+ 49% blue
+ 50% green
+ 100% cyan
+ .end
+
+ .filled o1 outline=o fill=horizon1 line=0
+ .filled o2 outline=o fill=horizon2 line=0
+
+ .put o1 x=50 y=50
+ .put o2 x=150 y=50
+
+.end
+
+
+If you want to use a given gradient several times
+with different
+.flash filename="gradients3.swf"
+
+ # same outline as above, only in more terse notation
+ .outline o:
+ M -50,-50
+ L 0,-45 L 50,-50
+ L 45,0 L 50,50
+ L 0,45 L -50,50
+ L -45,0 L -50,-50
+ .end
+
+ .gradient horizon radial:
+ 0% cyan
+ 50% blue
+ 50% green
+ 100% cyan
+ .end
+
+ .texture horizon1=horizon x=-50 y=-50 r=100
+ .filled o1 outline=o fill=horizon1 line=0
+ .put o1 x=50 y=50
+
+ .texture horizon2=horizon x=0 y=0 r=50
+ .filled o2 outline=o fill=horizon2 line=0
+ .put o2 x=150 y=50
+
+ .texture horizon3=horizon x=0 y=50 r=10
+ .filled o3 outline=o fill=horizon3 line=0
+ .put o3 x=50 y=150
+
+ .texture horizon4=horizon x=50 y=50 r=200
+ .filled o4 outline=o fill=horizon4 line=0
+ .put o4 x=150 y=150
+
+ .gradient bunt:
+ 0% black
+ 20% blue
+ 40% magenta
+ 60% orange
+ 80% cyan
+ 100% white
+ .end
+
+ .texture bunt1=bunt x=-50 y=-50 width=100
+ .filled oo1 outline=o fill=bunt1 line=0
+ .put oo1 x=50 y=250
+
+ .texture bunt2=bunt x=-50 y=-50 width=141 height=141 rotate=45
+ .filled oo2 outline=o fill=bunt2 line=0
+ .put oo2 x=150 y=250
+
+ .texture bunt3=bunt x=-50 y=50 width=141 height=141 rotate=-45
+ .filled oo3 outline=o fill=bunt3 line=0
+ .put oo3 x=50 y=350
+
+ .texture bunt4=bunt x=50 y=50 width=100 rotate=180
+ .filled oo4 outline=o fill=bunt4 line=0
+ .put oo4 x=150 y=350
+
+.end
+
+
+
+
+
+
+.flash filename="action.swf" bbox=300x300 fps=50
+
+.box mybox color=blue fill=green width=100 height=100
+.put mybox
+
+.frame 1
+ .action:
+ _root.angle += 0.05;
+ mybox._x = 100*Math.cos(_root.angle)+100;
+ mybox._y = 100*Math.sin(_root.angle)+100;
+ .end
+.frame 2
+ .action:
+ gotoFrame(0);
+ Play();
+ .end
+.frame 3
+.end
+
+
+For much more interesting ActionScript examples, see
+Laurent Lalanne's
+Flash Eyes
+or the
+source
+of Jean-Michel Sarlat's
+Mandelbrot explorer.
+or
+Sunder Iyer's swfc pages.
+
++Actionscript comes in handy when dealing with SWF Buttons. +
++A button defines, in SWF context, an object sensitive to mouse movement, +mouse buttons, and key presses. +
+
+The following is a trivial example: Four objects which change their shape
+once the cursor is over it.
+
+.flash filename="button1.swf" fps=50
+
+.box box1 color=white fill=#336633 width=50 height=50
+.box box2 color=white fill=#99cc99 width=100 height=100
+.button mybutton1
+ .show box1 as=shape x=25 y=25
+ .show box2 as=hover x=12.5 y=12.5
+.end
+
+.frame 1
+ .put b1=mybutton1
+ .put b2=mybutton1 x=100 red=+255
+ .put b3=mybutton1 y=100 green=+255
+ .put b4=mybutton1 x=100 y=100 blue=+255
+.end
+
+
+The
+The only real difference between those two commands is the