Monthly Archives: June 2004

Plaxo == Killer App


I got an email Plaxo.com via my sister asking me to update my contact information. I filled out a simple form and decided to try it out. Plaxo is the first killer app I have seen in the past 2 years.&

What does Plaxo do?

1. It delegates updating contact information to the contact via email. You simply enter an email address and wait.

2. Complete contact backup. If your machine dies (it will), simply install Plaxo and hit sync to restore your contacts.

3. Access complete contact information anywhere via the web.

4. It’s free. I don’t know why its free but it is.

Try it out. If your experience is like mine, you will never do contacts the same way again.

The only thing I would add to Plaxo is a version within Central.

Cheers,

Ted ;)

startDrag Alternate > MovieClip.prototype.drag


Here is a functional replacement for startDrag/stopDrag. The difference is that you can drag many items at once while using startDrag for other things.&

Download

Usage:

Target.drag([lock,][left,][top,][right,][bottom])

Target.drag(true) //startDrag(true)

Target.drag(false) //startDrag(false)

Target.drag(1,0,0,100,100) //startDrag(1,0,0,100,100)

Target.drag(-1) //stopDrag()

Events:

onDrag – Called repeatedly when item is dragging

onDrop – Called when drag(-1) executes

Enjoy,

Ted ;)

Player Focus and _xmouse, _ymouse, and onMouseMove


There is a very subtle behavior within onMouseMove, _xmouse, and _ymouse with regard to Flash Player focus. It seems these values continue to update outside the player boundary when the mouse is depressed!&

If your mouse is depressed within the Flash Player and you exit the boundary dragging, the player will receive updates to _xmouse, _ymouse, and onMouseMove outside of the player until the mouse is released. This was added in Flash Player 6 and works seamlessly in the release F6 and F7 players.

Code:

onMouseMove = function(){ trace(‘onMouseMove _xmouse:’+_xmouse+’ _ymouse:’+_ymouse)}

Test:

Depress your mouse and drag outside of the player boundary. The onMouseMove should continue to fire. As soon as you release the mouse, onMouseMove no longer fires and _xmouse/_ymouse no longer update.

Kudos to the engineers at Macromedia who made this happen. It was a most unexpected and rewarding find within the Player in quite a while. It is one of those things you don’t think about until your scrollbar freezes when it is dragged outside the player boundary.

Cheers,

Ted ;)

Breaking the law – Odd Variable Names


On a recent project I needed a simple way to store name value pairs where the name supported all characters. It is a little unknown fact but the flash player supports this by default.&

By evaluating variable names dynamically, you can use any string of characters as a variable name, even ones that are supposedly illegal(inital numbers, special chars, spaces).

Example:

_level0[“Ted’s Very Long Illegal Variable Name”] = true

trace(_level0[“Ted’s Very Long Illegal Variable Name”]) //true

The trick is that you must set and get the values using brace notation. If you try to hard code the string name into a path, the Flash compiler with throw an error. You can also use this for any type of object.

_level0[‘9032480192839128309812098120981209381098′] = {ted:true}

trace(_level0[‘9032480192839128309812098120981209381098′].ted) //true

Why would you do this?

I found it useful for caching XML result sets on the client-side. Each result set should be identical for unique url during a user session of the app I am building. So for duplicate requests, I used a client-side cache vs going over the wire again. It made the application much faster in this case. The key is using the url as the ‘name’ and the result as the ‘value’.

_level0.cache = {}

_level0.cache[‘http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=Macromedia+Flash&btnG=Search’%5D = “GOOGLE RESULT DATA”

I also used this technique within Icon Builder for saving icon files. The file names can use any character allowing support for long filenames and dot notation.

Cheers,

Ted ;)