Yes, I would think it would be easy - I'll try it now.

- Don

On Feb 11, 2008, at 11:18 AM, P T Withington 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]


--

Don Anderson
Java/C/C++, Berkeley DB, systems consultant

voice: 617-547-7881
email: [EMAIL PROTECTED]
www: http://www.ddanderson.com




Reply via email to