The EnterPage 12-04
December 15, 2009

In this issue:

Exam Engine Now Supports Flash and Silverlight

2010 e-Learning Authoring Conference Even Cheaper than 2009!

TBK Tracker Manages Exam Engine, Training Studio, or ToolBook Content

Save $5 on Programming for e-Learning Developers

e-Learning Authoring Conference Faculty Proposals Now Being Accepted

ToolBook 10: Buy One Get One 50% Off

Expert Information from the Learning & Mastering ToolBook Series

OpenScript Tip from the Learning & Mastering ToolBook Series

Web Hint from the Learning & Mastering ToolBook Series

ActionScript Tip

VBTrain.Net Nugget



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.
  • Off Campus ($785)
  • CC Inn Double ($865)
  • CC Inn Single ($930)
  • Apartment Multiple Occupancy ($980)
  • Apartment Single ($1,175)
Preconference workshops are also the same great prices as in the past:
  • One Preconference Session ($150)
  • Two Preconference Sessions ($285)
  • Three Preconference Sessions ($420)
  • Four Preconference Sessions ($555)
Here are some great links. Note that some of these show TBCON 2009 information but will be updated for TBCON 2010 once the faculty, sessions, and preconference workshops are finalized.

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?
  • ToolBook (Introductory)
  • ToolBook (Intermediate/Advanced)
  • Flash/Silverlight/Flex
  • Web Technologies
  • e-Learning Management
Do you have or can you build sample applications (with source included) that you can provide to attendees as part of the Archives for Attendees? Does helping others make their e-Learning better get you jazzed? Do you want to see your name in the bright lights (well at least on the postcard)? If so, we are taking speaking proposals at the link below. Anywhere from 1 to 3 sessions (each typically repeated twice) is fine. The more that are accepted, the greater your conference discount.

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