Monday, 18 October 2010

Error #1069 using namespaced members

ReferenceError: Error #1069: Property myNamespacedProperty not found on a.b.c.MyClass and there is no default value.
Seen when attempting to access a member (property/method/accessor) of a class that uses a custom namespace, e.g:
messaging_internals function getMillisecondsSinceSent():uint {
    return getTimer() - _lastSentTime;
Obviously here "messaging_internals" is the namespace.

Check that both declaration and use are using exactly the same definition of the namespace.  For example, check that you don't have a duplicate definition!

We saw this problem when project A had namespace An on methods in class Ac.  Used by project B in class Bc.  All looked fine, compiled fine but unit testing saw Error #1069.  Eventually realised that a bad refactoring had left a second copy of the namespace An in project B (where it had orignally been), leaving An obscured by the identically named Bn.  Bc was using Bn which failed to resolve to An hence members in Ac were unreachable!
 (Yes, I can add a diagram if anyone wants.)

Obviously ideally the tooling should highlight this.

Sunday, 17 October 2010

FlexUnit from both FlashBuilder and FlexMojos for library projects

FlashBuilder leaves its FlexUnitTestRunnerUI files in "src".
For packaging:swf FlexMojos projects, that's fine (*1), it builds them.
*1: OK, it may not be all that fine but it doesn't cause failure.
For packaging:swc FlexMojos projects, they fail with "Type was not found" etc errors! How to fix, after the break...

Sunday, 10 October 2010

How to fix Flash Builder debugging after breakage by installing Flash Professional

Short version:
Flash Professional messed up Flash Builder's debugging capability.  On Windows, one can replace references to the FP runtime from 'Professional with that to a FlashPlayerDebugger.exe and all will be well.