It would probably be useful to declare the methods public as well, so they show up in the introspection list. Then your tab-completion will work properly in the debugger :-)
On Mon, Feb 11, 2008 at 11:18 AM, P T Withington <[EMAIL PROTECTED]> wrote: > Why not have the swf9 compiler do that, so we can have the source at > least be right? Don it shouldn't be too hard to do that should it? > Can't you just make the getter for the public attribute always return > 'true'? > > > > On Feb 11, 2008, at 9:50, "Henry Minsky" <[EMAIL PROTECTED]> wrote: > > > Well, just for now, how about if I declare the instance vars in my > > swf9-specific branches of LFC files as public, to aid in > > making a debugger for swf9, and when we > > merge them back with their original .lzs files, we can figure out how > > to scope them? > > > > > > > > > > On Mon, Feb 11, 2008 at 9:06 AM, P T Withington <[EMAIL PROTECTED]> wrote: > >> I think namespace is the way to go. The question is whether to do it > >> by hand or in the compiler. One idea is that when compiling the LFC, > >> everything listed as public is in the lzxapplication namespace and > >> everything else is in the lfc namespace. Everything is public, just > >> in different namespaces. > >> > >> I don't know how it is in AS3, but in JS2, a package is just a way of > >> creating a pair of namespaces: public and private. So I don't see > >> why > >> you couldn't do the same thing with explicit namespaces. > >> > >> > >> > >> On 2008-02-11, at 08:44 EST, Donald Anderson wrote: > >> > >>> I'd hate to change the visibility in the source, someday our js2doc > >>> will want to take full advantage of it, and it's just the right > >>> thing to do. > >>> > >>> One alternative is to have the script compiler strip private, and > >>> add public, > >>> for all vars when compiling in debug mode. That would be at a risk > >>> of getting > >>> a different behavior (seems unlikely, would require some bad coding > >>> in the LFC). > >>> > >>> Maybe there's some way to leverage namespaces to solve this? > >>> > >>> > >>> On Feb 11, 2008, at 2:50 AM, Henry Minsky wrote: > >>> > >>>> I found out the describeType() function has this restriction: > >>>> > >>>> Note: describeType() only shows public properties and methods, and > >>>> will not show properties and methods that are private, package > >>>> internal or in custom namespaces. > >>>> > >>>> > >>>> So if we want our debugger to really work nicely, I guess we have > >>>> to > >>>> declare all variables as public on the LFC obejcts... > >>>> > >>>> > >>>> > >>>> ---------- Forwarded message ---------- > >>>> From: Henry Minsky <[EMAIL PROTECTED]> > >>>> Date: Tue, Nov 15, 2005 at 2:16 PM > >>>> Subject: interesting introspection API for AS3 > >>>> To: Platform Team <[EMAIL PROTECTED]> > >>>> > >>>> > >>>> > >>>> So they have an API for inspecting a sealed class. Haven't seen if > >>>> there is any API for modifying it at runtime though (I am guessing > >>>> not) > >>>> > >>>> > >>>> Using the introspection API > >>>> > >>>> If you want to list all the public properties and methods of a > >>>> non-dynamic (or sealed) class or class instance, use the > >>>> describeType() method and parse the results using the E4X API. The > >>>> describeType() method is in the flash.util package. The method's > >>>> only > >>>> parameter is the object that you want to introspect. You can pass > >>>> it > >>>> any ActionScript value, including all available ActionScript types > >>>> such as object instances, primitive types such as uint, and class > >>>> objects. The return value of the describeType() method is an E4X > >>>> XML > >>>> object containing an XML description of the object's type. > >>>> > >>>> The following example instrospects the Button control and prints > >>>> the > >>>> details to TextArea controls: > >>>> <?xml version="1.0"?> > >>>> <mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" > >>>> creationComplete="getDetails()"> > >>>> > >>>> > >>>> <mx:Script> > >>>> <![CDATA[ > >>>> import flash.util.*; > >>>> > >>>> public function getDetails():Void { > >>>> // Get the Button control's E4X XML object description: > >>>> > >>>> var classInfo:XML = describeType(button1); > >>>> > >>>> // Dump the entire E4X XML object into ta2: > >>>> ta2.text = classInfo.toString(); > >>>> > >>>> // List the class name: > >>>> > >>>> ta1.text = "Class " + [EMAIL PROTECTED]() + "\n"; > >>>> > >>>> // List the object's variables, their values, and their types: > >>>> for each (var v:XML in classInfo..variable) { > >>>> > >>>> ta1.text += "Variable " + [EMAIL PROTECTED] + "=" + [EMAIL PROTECTED] + > >>>> > >>>> " (" + [EMAIL PROTECTED] + ")\n"; > >>>> } > >>>> > >>>> // List accessors as properties: > >>>> > >>>> for each (var a:XML in classInfo..accessor) { > >>>> ta1.text += "Property " + [EMAIL PROTECTED] + "=" + [EMAIL PROTECTED] + > >>>> > >>>> " (" + [EMAIL PROTECTED] +")\n"; > >>>> > >>>> } > >>>> > >>>> // List the object's methods: > >>>> for each (var m:XML in classInfo..method) { > >>>> ta1.text += "Method " + [EMAIL PROTECTED] + "():" + [EMAIL PROTECTED] + > "\n"; > >>>> > >>>> } > >>>> } > >>>> ]]> > >>>> </mx:Script> > >>>> > >>>> <mx:Button label="Submit" id="button1"/> > >>>> <mx:TextArea id="ta1" width="400" height="200" /> > >>>> > >>>> <mx:TextArea id="ta2" width="400" height="200" /> > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Henry Minsky > >>>> Software Architect > >>>> [EMAIL PROTECTED] > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Henry Minsky > >>>> Software Architect > >>>> [EMAIL PROTECTED] > >>> > >>> > >>> -- > >>> > >>> Don Anderson > >>> Java/C/C++, Berkeley DB, systems consultant > >>> > >>> voice: 617-547-7881 > >>> email: [EMAIL PROTECTED] > >>> www: http://www.ddanderson.com > >>> > >>> > >>> > >>> > >> > >> > > > > > > > > -- > > Henry Minsky > > Software Architect > > [EMAIL PROTECTED] > -- Henry Minsky Software Architect [EMAIL PROTECTED]
