> Stepping back, IIRC, the reason we tried wrapping Sprite was to deal with
> code-hinting in the IDEs and issues with property and method names with
> low-level Flash APIs.

A bigger issue was related to defining properties and methods which collided 
with Flash ones. That’s not just a tooling issue. It’s not possible to define 
the properties and methods without overrides, and overrides generally do not 
work because they are incompatible.

I don’t think wrapping things on the Flash side adds an unacceptible amount of 
overhead. It’s not worse that classic Flex components (probably a lot better) 
in that regard.

On Aug 18, 2016, at 9:38 PM, Alex Harui <aha...@adobe.com> wrote:

> 
> 
> On 8/18/16, 10:42 AM, "Peter Ent" <p...@adobe.com> wrote:
> 
>> I think I'm leaning more toward agreeing with you, Harbs, about a Flex
>> event bus. I remember changing MouseEvent because of some issue (have to
>> look at the logs) with it being a subclass of Event. If we make it a rule
>> that every FlexJS component only work with org.apache.flex.events.Event
>> (or a subclass), and have a set of interactive event (mouse, touch,
>> keyboard) classes (which derive from our own Event class), something deep
>> down should be able to translate platform events to our events and put
>> them onto our bus. It is a shame not to take advantage of the platform's
>> own dispatching system, but when trying to put things together from
>> different systems, sometimes you need to go outside the box.
> 
> Duplicating the event system is definitely a possibility, but I would like
> to explore other solutions first.
> 
> Stepping back, IIRC, the reason we tried wrapping Sprite was to deal with
> code-hinting in the IDEs and issues with property and method names with
> low-level Flash APIs.  It occurred to me that the wrapping solution might
> be attacking this problem incorrectly:  it is adding runtime overhead for
> an author-time problem.  That isn't PAYG.  Further adding a duplicate
> event system will only add more runtime overhead.  The Google event system
> we use on the JS side added 6K to every download.  Not sure how big a
> Flash version will be, but it will double the number of event listener
> arrays and worse, the duplicates will be in ActionScript instead of C
> code.  And when you add overhead, you invite others to undercut you with
> lower-overhead alternatives and fracture the community.
> 
> In addition, IMO, it was a goal to try to abstract away the internal
> implementations of the components.  I'm concerned that we will get used to
> wrapping everything.  The CreateJS code and another Canvas framework that
> doesn't have to wrap HTMLElements shouldn't have to wrap elements.  Same
> will be true for any Flash 3D/Starling/Feathers sort of thing for the SWF.
> 
> So maybe the answer is to upgrade the tools to solve the original set of
> problems.  Then the runtime is as efficient as it can be for each platform.
> 
> The separate problem of event classes and their inheritance is, IMO a
> separate problem and the solution is dependent on whether we keep wrapping
> DisplayObjects in the SWF implementation.  I will say, though, that it is
> important to remember that we want the lowest overhead on the JS side, so
> having some additional overhead on the SWF side is ok, but double the
> number of objects may be too much.  Further, 100% compatibility with Flex
> is not a requirement.  So, some old Flex coding patterns and expectation
> may have to change, including whether you have to get the type of your
> events correct because MouseEvent doesn't subclass Event. That might still
> be better fixed with better tooling and debugging.  I can imagine some
> hybrid apps where the app uses more than one library which are dispatching
> different kinds of events.
> 
> I am going to go dig up the original thread and respond there with a
> discussion on alternative solutions.
> 
> My 2 cents,
> -Alex
> 

Reply via email to