Installing AMFPHP to Windows 7

english mobile

I was excited to read about the release of AMFPHP 1.9 in February, but I didn't need to install it until a couple of weeks ago, when I was working on refactoring my Lazy Loading Tree example to take advantage of Maté. I wound up burning up almost an entire day due to permission problems on AMFPHP that were difficult to track down.

It turns out that something about my setup, whether it's Windows 7 or IE 8, caused a problem with the zip file when I downloaded it. The first thing I needed to do was to go into the properties of the zip file and hit the "Unblock" button. I had no idea that the "blocked" setting on a zip file could affect what are, in effect, text files inside.

But even after I did that, I had problems with the AMFPHP files that were in subdirectories, and no matter how I changed security settings on it, I couldn't find anything that would work. It seems that somehow Windows was encrypting the folders as they were being extracted. When I extracted them on a thumb drive, it couldn't apply the encryption. When I copied those extracted files over to my WAMP installation, AMFPHP worked perfectly.

Hope this helps someone avoid blowing out a day on this.

Sample code for OOP + Timeline InsideRIA Article

english mobile

Several people asked me for code samples for my Combining the Timeline with OOP As3 in Flash that appeared on InsideRIA on April 7. So I've put together two examples, which produce a file that looks like this:

The example files do the same thing, just through different methods. One listens for the added event on the root document to start tweening the smiley faces as they are added, 10 frames apart. The other overrides the setter of the smiley face instance variables to start the tweening.

Download the source code here.

Debugging Responder Result Functions

english mobile

Lots of times when we use AsyncTokens with Responders, something will go wrong between when the call is made and when it returns. Usually if there is a problem, the fault handler will fire. Because of this, it's fairly straightforward to get information on what has happened in the fault responder function by looking at the FaultEvent's properties, such as the fault property.
But what about when there's an error and the Result handler is the one that fires? This does happen. For example, the infamous Access "Operation must use updateable query" error message in access triggers the result handler.

One of the first things I try to do when there is an error with a database call is to reconstruct the exact call that was made, so I can make the same call directly from a browser. It's not exactly intuitive where to find this information in the ResultEvent that is the parameter in the result handler, but, with a little digging, I found it.

It turns out that AsyncToken has a property called "Message," which is actually a HTTPRequestMessage. HTTPRequestMessage has a "body" property that is described this way: The body of a message contains the specific data that needs to be delivered to the remote destination. This, apparently, is a circuitous way of saying that this is the actual request object that was sent in the HTTPRequest.send() method that returned this token.

Hope this helps someone!