<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!-- <!DOCTYPE Movie SYSTEM "dtd/RVML.dtd"> --> <Movie version='6' width='600' height='400' rate='30' backgroundColor='white' compressed='No' enableDebug="Yes" xmlns="http://www.kineticfusion.org/RVML/2.0"> <Title> Example Of MovieClip classes and scripted animations </Title> <Desc> Illustrated how to associate a MovieClip symbol with an ActionScript class that can be scripted. Two MovieClips are placed on the timeline but with different initializers so that the first clip is rendered horizontally and the second vertically. The position of each movie clip is altered using a MovieClip ActionScript event handler. </Desc> <Definitions> <FontDefinition id='Arial' fontName='Arial' fontStyle='(bold)' fontRange='defined' /> <!--Grey Box --> <Shape id='greyBoxShape' bounds="auto"> <LineStyles> <LineStyle index="1" width="0.05" color="red"/> </LineStyles> <FillStyles> <ColorFill index="1" color="lightGrey"/> </FillStyles> <Edges> <SetStyle line="1" mainFill="1"/> <Rect x="0" y="0" width="100" height="100" /> </Edges> </Shape> <!-- Movie clip with box on first frame --> <MovieClip id="GreyBoxClip"> <Timeline> <Frame> <Place name="greyBoxShape" depth="1"/> </Frame> </Timeline> </MovieClip> </Definitions> <!-- Export our movie clip as we need to associate it with a name and class in actionscript --> <ExportSymbols> <ExportSymbol name='GreyBoxClip' exportName='GreyBoxClip' /> </ExportSymbols> <InitClipActions> <InitClip name="GreyBoxClip"><![CDATA[ function GreyBoxClass() { this.init(); } GreyBoxClass.prototype = new MovieClip(); GreyBoxClass.prototype.isHorizontal = function() { if ( this.horizontal == undefined ) this.horizontal = true; return this.horizontal; }; GreyBoxClass.prototype.getWidth = function() { if ( this.isHorizontal() ) return 100; else return 5; }; GreyBoxClass.prototype.getHeight = function() { if ( this.isHorizontal() ) return 5; else return 100; }; GreyBoxClass.prototype.init = function() { // Rather contrived example this._width = this.getWidth(); this._height = this.getHeight(); }; Object.registerClass("GreyBoxClip", GreyBoxClass); ]]> </InitClip> </InitClipActions> <Timeline> <Frame> <Place name="GreyBoxClip" depth="1" x="100" y="30"> <MovieClipActions><![CDATA[ // Called before the class initialisers are called so properties available to initialisers onClipEvent( setParameters ) { horizontal = true; // Initialise direction here direction = 1; } onClipEvent( enterFrame ) { this._x = this._x +direction; if ( this._x >600 - this._width || this._x < 0) direction = -direction; } ]]></MovieClipActions> </Place> <Place name="GreyBoxClip" depth="2" x="100" y="130"> <MovieClipActions><![CDATA[ onClipEvent( setParameters ) { horizontal = false; } // The horizontal property set here will not be seen by the class initializers as load //handlers executed afterwards. As a result the box will be drawn vertically. onClipEvent( load ) { horizontal = true; // Initialise direction here direction = 1; } onClipEvent( enterFrame ) { this._x = this._x +direction; if ( this._x >600 - this._width|| this._x < 0 ) direction = -direction; } ]]></MovieClipActions> </Place> </Frame> </Timeline> </Movie>