Seamlessly looping video files in AS3 with Netstream.appendBytes

Often I find, particularly with exhibit type projects, there is a requirement for some looping video.  Often the loop is required as it’s part of the UI, rather than consumable content.  A designer or animator has made some cool effect and video is simply the best way to deliver this asset.

Now there comes a problem  – in older versions of flash player it was quite easy to just loop a video, but in more recent releases it’s broken and according to adobe this is not important enough to fix.

The only way that I found to get around this was to convert the file to a swf with the video on the timeline. I had some success with this, but the quality always suffered and every time the designers updated the asset I had to reconvert. Someone on the bug report suggested however that there might be way to get the video file to repeat seamlessly by using appendBytes but hadn’t provided a working example. So I just ran into this again and decided to tackle it  once and for all – here’s a class that’ll seamlessly loop an flv (appendBytes only supports flv):

Edit: I recently had cause to use this again in a project so have tidied up the code a little and fixed a bug where I had delays in later loops. Also I’ve added a variation for cases where an animation plays in with one video, then loops with another.

Could not embed GitHub Gist 7772246: Requires authentication

TLFTextField and RTL direction in pure AS3 (no IDE or flex)

So I’ve been struggling all afternoon to get TLFTextfield to display direction = Direction.RTL without any success. The rtl text still flowed left to right. I just got it to work with the help of this post

Basically it’s just this bit:

var myFormat:TextLayoutFormat = new TextLayoutFormat();
var myTextFlow:TextFlow=tf.textFlow;
myTextFlow.hostFormat=myFormat;

…needs to go at the end and it all starts working. urgh.