Archive for December, 2010

Tuesday, 28 December 2010Posted by Whyves

A while ago, I talked about injecting some life into Captivate quizzes. Well, after being side-tracked long enough, I finally put more time into it and I am almost done. I added most of the expected quiz behaviors and replaced the feedback mechanism with something that  I think is nicer … but I want you to be the judge of this. So, complete the quiz and review your answers at the end.

With this widget, you’ll be able to customize the colors and transparency of the highlight and the font face/size/color. I will also add a few more options like shuffling before releasing it officially. So have a look and let me know what you think!

Friday, 24 December 2010Posted by Whyves

I finally removed the last known issues with the CpNotepad Widget (Cp5 only). It is  now available for purchase at a price of $24.95 USD. I think that this is a fair price considering that the Widget can be used in almost every courses. Check out the updated demo and make sure you understand the limitations that comes with it. The major limitation is that the Export to HTML functionality can only work when the course is published with Flash Player version 10. If your customer is still stuck with version 9, don’t bother it will not work.

Now, since Christmas is knocking on our doors, I decided to make it a Christmas Launch Special. So instead of the usual price, you get a $10 off so the widget will cost you only $14.95 USD. However, there’s a catch! The rebate will only be applied to the first 5 customers. However, being generous in nature :-) , if you buy the widget before the new year and don’t get the rebate, just e-mail me and we’ll fix that.

Happy Christmas!

Wednesday, 22 December 2010Posted by Whyves

It seems that I have a hard time concentrating on finishing CpGears. I always get side tracked to something interesting. A few days ago, James at Mindful by Design was looking at a way to have his users take notes when going through a course. The notes needed to be persisted across sessions and eventually printed. That was enough to get me interested and I ended up being sponsored by James to create a widget that do just that.

The CpNotepad widget offers you a rudimentary text editor to take your notes. They are saved in a Flash Player shared object so that they can be recalled the next time you take the course. For printing, I hit a few brick walls. Printing in Flash is not that great, especially for text that is too big to fit on the screen. I ended up exploiting a Plash Player 10 feature that allows to save a file on the user’s disk. So, I used this approach to export the text and its formatting to an HTML file. The user can then open it up in his favorite browser and print it if he wishes!

I still have to put the final touch and make sure that it’s robust (a few bugs here and there) but you can take a look at it if you wish.

Click here to see the widget in action!

If you see issues with it, please kindly let me know. I will probably put it on sale in a few days. I hope it’s something that will be useful to many :-)

As for finishing CpGears … maybe during the Christmas break?

Tuesday, 21 December 2010Posted by Whyves

I have been confronted lately with some important limitations of the Captivate Widget Framework. It seems that Captivate loads the widget’s swf into its own Applicationdomain. An Applicationdomain is basically a container for discrete groups of Class and classes in different ApplicationDomains cannot communicate together. This segregation can sometimes be a good thing but for widget developers, it is a very bad thing!

For one, it prevents us from using Static variables. In one of my widget, I had some plans to have many instances of the widget share a common component. So, I created a Static variable that was supposed to contain the shared component. To my surprise, it looked like the component I modified in one instance of the widget was never available in another instance. It took me a while to realize that the widgets were on their own Applicationdomain.

So, I decided to try to go around this by dynamically attaching the shared component to the CaptivateMainTimeline movieclip. That worked OK until I tried to cast the shared component into its proper type. The debugger welcomed me with an error message saying that the cast was invalid. This is another side effect of having different Applicationdomains. For the Plash Player, when the exact same class definition is loaded into two different Applicationdomains, it is as if it was two different classes; just like if I was to compare an apple with an orange.

Ok, that sucks! I finally was able to do it by casting the shared component into an Object. This way, the compiler ignores the errors. The drawbacks of this is that I lose the capability to use strongly typed variables and I also lose the auto-completion in my IDE. Not a nice tradeoff at all!

So, for those of you would want to share a common component between widget instances, you will have to attach the shared component to the CaptivateMainTimeline and access it through an Object type. The only other solution that I can see is to try to use the EventDispatcher provided by the widget framework to communicate changes.

If Adobe’s developers are reading this, it would be nice to understand why this was done. I would really like the next version of Captivate to load the widgets in the core Applicationdomain so we can start doing powerful stuff.

Sunday, 05 December 2010Posted by Whyves

While looking at my site’s statistics, I realized that the Youtube widget that I made when answering this post was regularly downloaded. However, I never posted it on my site in the Widget section. So, I decided to revamp it a little bit and added some new stuff. For example, you can now properly resize the widget on the stage. I also added many options such as showing related video, looping, autoplay and more.

That was ok until I realized that Youtube doesn’t allow you to embed more than one player in a Flash context. Some people were able to do it but it requires a lot more work and I don’t think I will be putting more time in this widget. Therefore, if you can live with the limitation of having only one youtube video per presentation, then be my guest and download the widget.

Friday, 03 December 2010Posted by Whyves

Someone on the forum brought back to life an old post to which I contributed when I started to be interested into Captivate. In this post, someone wanted to access the slide’s duration. Since there was no way to get that information directly (… and to my knowledge it’s still the case), I created a small animation that calculated this. The animation was built when Cp4 ruled the earth and now a new user is trying to get it to work in Cp5. It seems that it’s not really working in newest version of Captivate so I decided to take a couple of hours to build a widget for it. So, here is the Slide Duration Widget.

Have fun!