flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Ent <p...@adobe.com>
Subject [FlexJS] Seeking input on FlexJS core.graphics change
Date Fri, 12 Dec 2014 20:28:06 GMT
Hi,

I've recently completed a set of FlexJS chart classes that "optimize" the chart graphics.
You can read about it on the FlexJS Wiki [1] (at the end of the page). What this means is
that rather than creating a nesting of objects to represent, say, a bar on a chart, I use
the FlexJS core.graphics.GraphicsContainer's drawRect() function.

In JavaScript, this results in a single SVG <rect> element. In ActionScript, this results
in a call to the Flash drawingAPI drawRect() function.  This works well because there is an
ActionScript and a JavaScript version of the core.graphics package. Most of the FlexJS chart
code is in the FlexJSJX project which is cross-compiled into JavaScript so I don't have to
write both versions.

While this seemed ideal at first, I've run into a situation where I can get events from the
JavaScript side, but not from the ActionScript side, on a per-element basis. For example,
in JavaScript I can tell when the mouse enters the <rect> element, but in ActionScript,
there is no object, just a drawing.

What I propose to do is add to the core.graphics.GraphicsContainer object a set of functions
that create elements in both JavaScript and ActionScript. Where we now have:

graphicsContainer.drawRect(0, 0, 100, 200)
   (makes JavaScript): <rect x="0" y="0" width="100" height="200">
   (makes ActionScript): graphics.drawRect(0,0,100,200)

I would add:

graphicsContainer.createRect(0, 0, 100, 200) which would do the same thing in JavaScript as
.drawRect(), but the ActionScript version would yield a Shape. In this way we have parity
between the JavaScript and ActionScript versions with a simple object tree for graphics that
also can generate events.

The current ActionScript "optimized" package would become the "NonInteractive" package and
later we could have that match to HTML5 <canvas> and its drawing API and keep the parity
going.

Let me know what you think.

Regards,
Peter Ent
Adobe Systems

[1] https://cwiki.apache.org/confluence/display/FLEX/FlexJS+Charts

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message