I am very excited to announce that local.ch granted us the possibility to open source the coverflow clone we created for them under the “Simplified BSD License“. So first of all a big thanks to them, you guys rock!
Fear not! This one is actually quite different.
“Yet Another Coverflow Clone”, or lovingly YACC for short, is built in Actionscript 2, which makes it compatible with Flash Player 6 and newer to ensure that a broad userbase can be served. It’s been built to be dimensions independent. That means you can use whatever size of pictures you want and embed the flash with whatever size you can think of.
YACC sports horsepower provided by the open source Papervision3D engine which allows for smooth 3d presentations. Animation is realized through the also open source Tweener which gives you the power to easily change the coverflow animation to whatever your heart desires. Best of all, even though it is Actionscript 2, it’s more performant than many of the other clones we’ve encountered. Even some of the AS3 versions and with 33kb it’s not a burden on your site either!
Of course not! YACC loads its Dataset and many customization settings through a simple, yet extendable XML.
During development I was faced with a couple problems that needed to be solved. Of which two I think are of interest to other developers as well.
As you may or may not know, the Actionscript 2 version of the Papervision3D library does not include a possiblity to dynamically load images on runtime and assign them as a material to 3D objects (in our case planes). So it was neccessary to create a BitmapLoader class capable of loading and creating Papervision compatible materials.
(If you are in need of such a class yourself, feel free to use the BitmapLoader Class in any of your own Projects.)
Pretty soon into development we also realized that the Mac Flash Player has quite some performance issues with the intensive displayrendering that Papervision3D required. We came up with 3 steps to solve this problem:
I hope this information can be useful to someone else struggling with similar problems.
If you have questions, suggestions feel free to chat me up in #liip on freenode and i’ll try to respond to you in a timely manner :)