Peter Hall's Flash, Flex and AIR blog. News and insights into development with Flash, Flex and AIR.

This page is powered by Blogger. Isn't yours?
Sunday, November 23, 2003

NodeTraveller

I can't believe I haven't found this blog [Nodetraveller] before. It just turned up in Google when I was looking for a TV listings webservice which the author, Lawrence Carvalho, has provided.

At first I thought it must be a blog purely on XML, but then I was suprised to spot a link to my own blog on his front page, and actually took an interest in what he is writing about. Excellent stuff on Flash, webservices and even design patterns.

I wasn't going to announce any more blogs (due to possible RSI implications) but, while I am on the subject, you should take a look at Jeremy Brown's blog. He knows what he is talking about, so make sure to go and have a read.

Monday, November 17, 2003

Flex rune?

I was just wondering what the new rune for Flex might look like. These are two possiblities I came up with:

                

Sunday, November 16, 2003

What to do if your Mom discovers your blog...

Blogger has the best stuff in it's knowledge base. This article explains what to do.

I can't say I have much to worry about. I have a kind of self-imposed censorship, based on the fact that I know a lot of the people who are reading it. For example I cannot criticise my work colleagues because they know about it. Paddy is reading it right now (and Tom will read it shortly when Paddy sends him the link because I mentioned his name). I can't say anything that I wouldn't say to my boss.

My mother has known about my blog for some time and, I assume, considers it far too boring to read. And this is my real problem. Rather than being concerned that my mother will discover my recklessness, the issue is whether people I meet will think I am a boring geek.

Probably I should have handled it a bit more like Vera, who has a Flash blog, a personal blog and at least one "communal" blog. That's good thinking. If you are reading this then you are probably not meant to read her other blogs, so I won't give you the links (though "hoop" is a good starter keyword for google).

Tuesday, November 11, 2003

old Flash Player archive

Finally Macromedia have produced an archive of old Flash players, including minor versions.

With all your favourites (5.0.30, 5.0.42, 6.0.21, 6.0.29, 6.0.40) and more, you noe have no excuse not to test thoroughly, especially in combination with the Flash Plugin Switcher from kewbee.de, which makes testing in multiple player versions a doddle-a-roony!

Say thankyou to Julie London for pointing out this new information.

Flash Updater

I wouldn't be a Flash blogger if I didn't mention the Flash Updater which Macromedia have released today.

The updater installs on top of your existing installation, so you don't need to uninstall, and fixes a number of bugs and performance issues. It also adds a huge amount of extra documentation.

A lot of the fixed bugs, that are not connected with stability and performance, are with DataBinding which is now a lot more robust and usable. At some point I will update my UltraShock tutorial to reflect the change; most of the reasons to be wary of the Binding panels are no longer valid. For example, bindings now do not rely on absolute paths and you can copy and paste components without losing their bindings. You can even move a single component into a different parent movieClip and it's bindings will all be preserved. I didn't think they would be able to pull that off, so I'm pretty happy about it.

The documentation updates are immense; overwhelming in fact. It's well worth looking stuff up in the Help panel, even if you have been using a feature for a while and feel comfortable with it, just because there is likely to be something new in there.

Wednesday, November 05, 2003

a Flash Blog with a difference

As if we need another Flash blog! Actually this one is different. Burak Kalayci, the creator of ActionScript Viewer, will be offering his expertise on SWF file format and stuff like that. One of the few Flash-related with a really unique perspective. He already has a very informative discussion about LiveMotion and LiquidMotion.

<cough>Nigel</cough>

Saturday, November 01, 2003

nested function scopes

I was leaving a comment on Grant's blog, but it started getting bit long so it's here instead.

Grant was talking about how the execution context (value of this) of a nested function is different, according to whether you publish with Flash MX 2004 or with Flash MX; the former it is undefined; the latter is an object, a reference to the function's activation object. Other ECMA-262 implementations also exhibit one or other of these behaviours although the actual spec is unclear. What the spec does say, however, is that the activation object should not be directly accessible, so that would suggest that it should be undefined.

My first thought, when I read Grant's post, was that the Flash 7 player had changed this behaviour but, as Grant says, it is the compiler and not the player that is different. The only difference in publishing with F04 is that registers are used for local variables, although I am not sure exactly why this would affect the behaviour. You can test this quite simply if you publish for Flash 6 player because it has only 4 registers and only uses 3 in a function. When you use them up, it has to resort to named local variables so you can see the two different behaviours. eg try this code published for Flash 6:

   f4 = function() {
      // compiled as named var
      var f5 = function () { trace(this); }
      // compiled to register
      var f6 = function () { trace(this); }
      // compiled to register
      var f7 = function () { trace(this); }
      f5();
      f6();
      f7();
   }
   f4();

// outputs:
// [type Object]
// undefined
// undefined

This inconsistency could be a problem if you were relying on accessing activation objects (although why would you?), but the behaviour is constistent if you declare your inner functions with a name, instead of the literal form above:

   f4 = function() {
      function f5 () { trace(this); }
      f5();
   }