Introduction With our big ToolBook 10 push out of the way, we've been immersed in the "Flex" world moving our Exam Engine product to the Flash world. We are excited by the results and are looking forward to using the same model for the next version of Training Studio. We've also nailed down pricing for the 2010 e-Learning Authoring conference and already have some sign-ups. We encourage you to use this year's money if possible. We'll be teaching all things ToolBook as well as keeping you up to date with Flash, Flex, Silverlight, and JavaScript. In the meantime, we wish you a very happy holiday season. We know many of you personally and consider you all part of the extended Platte Canyon family. |
Exam Engine Now Supports Flash and Silverlight Building on our Silverlight version, Exam Engine version 3 can now be deployed to Flash. What is unchanged is the unmatched ability to create database-driven, SCORM-conformant exams without any programming. Exam Engine includes matching (images), matching (drawing lines), sequencing, numeric, and more question types. Add or edit XML-based question templates using Adobe® Flex® Builder (to be renamed Flash® Builder with its next release). You can pull questions randomly by objective, email results to a manager, store question results in Access, SQL Server, or XML, use the optional Reporter program to view reports on question and exam data, include media with questions, easily update questions and objectives, and much more. This version adds new question templates, up to four graphics and media per question, the ability to deploy without a virtual directory, an optional web service for storing/emailing question data, an optional Reporter program, and much more. Pricing is $1,995 per development license. This includes templates, source, web service, and three copies of the Exam Engine Question Editor as well as the ability to deploy an unlimited number of exams. Additional licenses of the Question Editor are available for just $295. The optional Exam Engine Reporter application is separately priced at $495 per user. An upgrade from version 2 or between the Flash and Silverlight versions is available for $665. Information Sample Exam (Flash) Configuration Editor Help Question Editor Help Reporter Help Templates Documentation (Flash) Online Store Evaluation Downloads |
2010 e-Learning Authoring Conference Even Cheaper than 2009!
Rates are set for the twelfth annual e-Learning Authoring Conference to be held June 14 - 16, 2010 (preconference training June 12 and 13) in Colorado Springs, Colorado. With all the food, drink, camaraderie, great sessions, and lodging (for all options except Off Campus) included, you won't find a better learning opportunity anywhere. The big news in pricing is that the most popular option, CC Inn Single, has gone down from $975 to $930. There is also a new $865 CC Inn Double option, where two people share a room. The Apartment Single rate is unchanged while the Off Campus and Apartment Multiple options only went up $5. If you sign up by the end of 2009, we will give you the lower of the two prices between this year and last year. Here are the rates through May 1, 2010. After that, they go up by $50.
Rates Sessions Faculty Preconference Attendee Comments Register |
TBK Tracker Manages Exam Engine, Training Studio, or ToolBook Content Our TBK Tracker Learning Management System (LMS) has allowed ToolBook developers to track their native ToolBook content since 1998, whether that content is deployed via CD or Local Area Network (LAN). We added the ability to track Training Studio content in 2007. Now that Exam Engine deploys to Flash, we've added Exam Engine support to TBK Tracker as well. In fact you can mix Training Studio and Exam Engine lessons. ToolBook lessons are launched as native ToolBook and not a .NET projector, so they are deployed somewhat differently. Licensing is $2,995 ($1,995 if you own the ToolBook version of TBK Tracker) per developer with free runtime distribution. Here are some links: Information Sample Installation Projector Documentation Order |
Save $5 on Programming for e-Learning Developers Want the perfect holiday gift for your co-workers? How about a copy of Programming for e-Learning Developers at $5 off the normal price? Order by December 31, 2009 and get each copy for only $40. Getting Jeff to write a short note and sign it costs nothing extra:) Multiple-copy discounts are available as well. Here is a recent post about the book on the ToolBook List: I just finished Jeff Rhodes's new book "Programming for e-Learning Developers." I think it is fantastic and highly recommend it. I have been simultaneously learning ToolBook and ActionScript 3 and his book falls right into place. It explains, in simple, easy to understand language, how the same e-Learning events are produced in not only ToolBook and Flash, but JavaScript and Silverlight as well. Even if you have no plans on learning another programming language, his ToolBook examples and explanations (both Actions Editor AND OpenScript) alone are worth reading. Information Table of Contents Sample Chapter Reader Comments Order |
e-Learning Authoring Conference Faculty Proposals Now Being Accepted Do you have the "Right Stuff" for being on the 2010 faculty of The e-Learning Authoring Conference? Are you an expert in the one or more of the technologies listed below and willing and able to explain how and why you make things work?
Session Proposals |
ToolBook 10: Buy One Get One 50% Off Buy two licenses with support/maintenance and receive the second license at 50% off. This offer is good through December 28, 2009. To get moving, email us for a quote or give us a call at 888-866-5251 (888-ToolBk1) or 719-548-1110. Email Us For a Quote |
Expert Information from the Learning & Mastering ToolBook Series By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Loading Resources From External Files Question: I would like to load external graphics into a button named "JIS Graphic" that is on most pages of the book. Answer: I like to have the external file name match the resource except for the extension. So if my external file is xyz.bmp (or .png, etc.), I name the resource xyz. If you put that name into a field (or better yet, use the name of the page with the button on it), you can use the type of code below. Notice that we are assuming all the graphics are in an "images" subdirectory below the location of the book. You would run this code in real life in response to a menu item or as part of an enterApplication handler. I have put it in a button to make it easier to test. to handle buttonClick resPath = ASYM_ParsePath(name of this book, "PATH") & "images\" step num from 1 to pageCount of this book pageId = page num if isObject(button "JIS Graphic" of pageId) = TRUE objId = button "JIS Graphic" of pageId resName = name of pageId fileName = resPath & resName & ".bmp" if fileExists(fileName) = 1 bs = ASYM_BlockSuspend() tempRef = "bitmap" && quote & resName & quote if isObject(tempRef) = TRUE replace resource tempRef with fileName normalGraphic of objId = tempRef errorString = ASYM_RestoreSuspend(bs) else import bitmap resource fileName as resName errorString = ASYM_RestoreSuspend(bs) if errorString = null normalGraphic of objId = bitmap resName else request "Problem with page " & resName & \ ". error = " & errorString end if end if else request "File does not exist: " & fileName end if end if end step end buttonClick |
OpenScript Tip from the Learning & Mastering ToolBook Series
By Peter Jackson, ToolBookDeveloper.com Using a ToolBook Log File to Store the Student Name Question: I would like to set up my book so that the customer is prompted to "Enter Your Name" only the first time she enters the book. Answer: ToolBook has a built-in logging system that will handle the external file for you. That said, you do need some OpenScript code to get the last logged in name. First, create a native blank book and in the properties for lesson select "Tab Separated" for the Type of log. Set the destination to "Automatic (same as book)" - this is just for your testing so you can see and open the log file. Check the "Custom File Name" and enter a short file name like test.log - again this is just for testing. Save and close the book. When you re-open the book, it will ask for your name. Enter your name and then close the book. Then take a look at the test.log file. The first textline will have your name and then a tab character then the date, Note that this data is "Tab Separated" and the code below assumes that it will always be tab delimited. When you set the custom file to be a fixed name, then the log file will only contain data from the last session so you will never have any issues with file size etc. and ToolBook will handle all the error checking/security issues for the log file. You will notice that each time you open the book, you will need to enter your name, the code below will find and open the log file and extract the name from the last session, it will also ask if your name is correct and if not then allow the standard ToolBook logging system to ask for your name. The script will add the name to the book so you can use the Actions Editor to access the studentName. Add the script to the left to the book script: Once you have tested this, I suggest that you name the log file using the same name as your book with a .log extension and you will need to select an appropriate destination like "Automatic (TEMP directory)." to handle enterApplication system s_ASYM_UserName tbr_sbk_name = ASYM_RunSysBookName() if tbr_sbk_name <> "" then send setUserName tbr_sbk_name to self end if forward studentName of self = s_ASYM_UserName end enterApplication to handle setUserName tbr_sbk_name system s_ASYM_UserName clear s_ASYM_UserName tbr_sbk_obj = book (tbr_sbk_name) bookObj = this book logName = ASYM_LogName of bookObj logDir = ASYM_LogDestination of bookObj logFile = _ASYM_MakeLogFileName(logDir, logName) of \ page "Logging" of tbr_sbk_obj if ASYM_IsFIle(logFile) then bs = ASYM_BlockSuspend() closeFile logFile openFile logFile readFile logFile to EOF logData = it closeFile logFile get ASYM_RestoreSuspend(bs) posn = offset(tab,logData) if posn > 0 then s_ASYM_UserName = chars 1 to posn-1 of logData end if if s_ASYM_UserName <> "" then Msg = "Welcome back" && s_ASYM_UserName & crlf & \ crlf & "Is this your name?" resp = ASYM_MessageBox(Msg, "Welcome", "question", \ "YesNo") if resp <> "Yes" then clear s_ASYM_UserName end if end if end if end setUserName |
Web Hint from the Learning & Mastering ToolBook Series
By Tim Barham, SumTotal Systems, Inc. iPhone Media Support Question: Not being in possession of an iPhone, this is a question that I can't answer for myself with ease, and can't appear to find a definitive answer to in any of the current documentation. So that just leaves the List as the fountain of all things useful. Is it possible to play audio in a book written for the iPhone? If not directly possible, is there a hack? Will audio rely on the presence of a credible Flash player for the iPhone? Finally, if we have got this far and still remain blissfully mute, I believe the iPhone has a means for playing You Tube videos (oft touted as a form of Flash hack in the first place). If this is the case, could one hack into that? Answer: In answer to your first question, yes, absolutely. The Universal Media Player will work if configured to use the QuickTime player. Voice Narrations and other audio will also work (as long as it uses a format supported by the QuickTime player). However, you should be aware that all audio and video playback within the mobile Safari browser plays back in a full screen media player app. When the audio or video is started, the full screen media player app appears, and the user has complete control over it from there. When it has finished (or the user presses "Done"), the media player app goes away and you are returned to the content. So, unfortunately, there is no good solution for incidental background audio (or sound effects, in simulations for example) within the browser on the iPhone. There is no way to get into the YouTube player from within the browser (and hence from within ToolBook content). BTW, Adobe has said they are ready to provide Flash support on the iPhone as soon as Apple allows it. |
ActionScript Tip
By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Flash Professional versus Flex As you might guess from the announcement of a Flex-based Exam Engine in this newsletter, I have been spending quite a bit of time in Flex Builder recently. I find it a much more comfortable and friendly environment for building Flash content than Flash Professional. This is largely because I have never really connected with the Flash timeline (I leave bouncing balls and tweens to others) and have mostly used Flash to read XML, populate components, load graphics, and play media. With Flex, there are no more key frames and Action layers. Instead, you work with an MXML Application (equivalent to the Flash movie) and one or more MXML Components (basically like normal Flash components but can also serve as entire "pages" to be loaded into your application. I'll be doing a number of Flex sessions at the 2010 e-Learning Authoring conference, but I wanted to offer up a simple "button click" example in each environment. Flash Professional You drag a Button component from the Components window onto your stage. Give it name like "xyz." To write code, you create an "Actions" layer, typically as the top layer in your project. Open the Actions window and enter code like this: xyz.addEventListener(MouseEvent.CLICK, alertMessage); The above means to add a "listener" to the CLICK event. When that event is fired, call the alertMessage function. In there we might do something. For our example, we'll use the trace method to show some text within a window (similar to the put command in ToolBook OpenScript. function alertMessage(eventId:MouseEvent):void { trace("This is a test."); } For those of you used to Flash (or who have read my Programming for e-Learning Developers book), this is pretty standard stuff. But let's now look at the same example in Flex Builder. Flex Builder We create a Flex application. This create an MXML file of the same name. We then drag a Button component onto the application. We get a visual (Design) interface similar to Flash Professional. In it, we give the button an "ID" of "xyz." But we can then go to the Source view to see the set of XML that represents the button: <mx:Button x="95" y="464" label="Button" id="xyz"/>This is similar to HTML and to the XAML used by Microsoft Silverlight. To create a click handler, we could use the addEventListener syntax like we used in Flash, but easier is to represent this in the MXML like this: <mx:Button x="95" y="464" label="Button" id="xyz" click=alertMessage(event)"/>We can then use the same alertMessage function defined above. But rather than have that live in an Actions layer, it goes in the same MXML file within a special <mx:Script> block. Pretty nice. |
VBTrain.Net Nugget
By Jeff Rhodes, Platte Canyon Multimedia Software Corporation Flex and Silverlight Similarities As I mentioned in the article above, one thing that I like about Flex is that the application and components are represented by a type of XML called MXML. Silverlight and WPF (Windows Presentation Foundation) also use XML, though their flavor is called XAML. This similarity of approaches makes it easier to move between the two environments. Let's look at the same simple "button click" example as in the previous article. For this, we would use Visual Studio, Visual Web Developer, and/or Expression Blend. Our initial user control (equivalent to the application in Flex) is called Page.xaml. We use the Toolbox to drag a Button control onto the design surface. We name it "xyz." Here is how the XAML looks: <Button Height="36" HorizontalAlignment="Left" Margin="24,37,0,0" VerticalAlignment="Top" Width="80" Content="Button" x:Name="xyz" />As with Flex, we can create the Click handler right within the XML. Visual Studio gives a bit more help than Flex Builder in that Visual Studio will actually create a whole stub of the code. Here's the new XAML: <Button Height="36" HorizontalAlignment="Left" Margin="24,37,0,0" VerticalAlignment="Top" Width="80" Content="Button" x:Name="xyz" Click="alertMessage" />Rather than live in the same files as the XML, though, Silverlight code lives in a separate .vb file (for Visual Basic). In it, the code looks like this: Private Sub alertMessage(ByVal sender As System.Object, _ ByVal e As System.Windows.RoutedEventArgs) MessageBox.Show("This is a test.") End Sub |
The EnterPage is distributed up to four times per year, with occasional special issues. Individuals who have expressed interest in Platte Canyon Multimedia Software Corporation or its products receive The EnterPage. Suggestions for articles or proposals for article submissions are welcome. Send information to ep@plattecanyon.com. Back issues of the EnterPage are available at: http://www.plattecanyon.com/enterpage.aspx |
Platte Canyon Multimedia Software Corporation, 8870 Edgefield Drive, Colorado Springs, CO 80920, (719) 548-1110 |