spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / programming / perl / graphics / chap7 / 2 To page 1To page 2current pageTo page 4
[previous] [next]

Perl Graphics Programming, Chapter 7: Creating SVG with Perl

Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?

SVG Scripting with JavaScript

SVG elements can be manipulated using ECMAscript (better known as JavaScript). JavaScript scripts are attached to SVG objects as callbacks associated with a particular event. A script can be called when an element is first loaded, when the mouse passes over it, or when the mouse button is clicked on the element. Some of the element events are:

onfocusin
onfocusout
onactivate
onclick
onmousedown
onmouseup
onmouseover
onmousemove
onmouseout 
onload

Scripts can also be called for certain document events:

onunload
onabort
onerror
onresize
onscroll
onzoom 

Or they can be triggered at three points in the execution of an animation:

onbegin
onend
onrepeat

XML specifies a special tag for character data such as scripts that may have embedded XML tags. The script should be wrapped up in a character data (CDATA) tag:

<![CDATA[ ...character data goes here... ]]>

With JavaScript, you can access and manipulate most attributes of an element using the DOM interface. JavaScript can be used as an alternative to the animation tags for creating animations. For a complete reference to JavaScript, see JavaScript: The Definitive Guide by David Flanagan (O'Reilly).

The next example uses XML::Writer to create an SVG file that is very similar to the SWF::DisplayItem example in Chapter 9. The result is two SVG images: a top-level image that consists of a pink background, and the block of animated squares. Each of the squares in the grid has a mouseover event associated with it that turns the square red when the mouse is positioned over it. The user can also click on a point on the pink background to reposition the center of the animated object.

#!/usr/bin/perl -w
#
# Twirling squares.
   
use strict;
use XML::Writer;    # Used to write the SVG output
use IO::Scalar;
   
my ($width, $height) = (200,200);
my $sprite = new IO::Scalar;
my $writer = XML::Writer->new(OUTPUT => $sprite);
$writer->setDataMode(1);
$writer->setDataIndent(2);
   
$writer->startTag('svg',
                  id => 'sprite',
                  height => $height,
                  width  => $width,
                  onload => "StartAnimation(evt)", 
                  'xmlns:xlink' => 'http://www.w3.org/1999/Xlink');

Add the CDATA element containing the script:

$writer->startTag('script',
                  type => "text/ecmascript");
print $sprite <<ENDSCRIPT;
<![CDATA[
    var delay = 1;
    var angle=0;
    var cx = 100;
    var cy = 100;
    var frames = 30;
    var direction = -1;
    var count = 0;
    var element = new Array(  );
    var xIncrement = new Array(  );
    var yIncrement = new Array(  );
    var parent;
    var i,x,y;

home / programming / perl / graphics / chap7 / 2 To page 1To page 2current pageTo page 4
[previous] [next]

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business

Created: February 19, 2003
Revised: February 19, 2003

URL: http://webreference.com/programming/perl/chap7/2/3.html