Thank you all for your continued patience ... and here's the why:
Column chart, 3 series, first 2 = column series of manufacturer "prev
sales", "current sales" clustered so the chart shows prev and curr
sales for each manufacturer as dual columns. The third series is
"percent", a line series whose data equates to the difference between
prev and curr for each manufacturer as a %. The percent data points
must be line segments above their respective column cluster
_____
_____ _____
_ _
_ | |_ | |
_| | | | | _| |
| | | | | | | | |
<mx:LineSeries id="percSeries" form="horizontal" />
draws a line segment fragment very nicely, but the line starts above
the middle of the second/"curr" column and continues to the next data
point. I tried to break into "horizontal" in lineseries.as but "lost
the trail". So on to
<mx:LineSeries id="percSeries" lineSegmentRenderer="PercentLineRenderer"/>
and within the renderer
g.drawRect(item.x - adjustment, item.y, 50 - adjustment,5);
where the adjustments must manipulate the starting point and length of
the line to position it above the column pair. Column pairs move
around horizontally on a Flex chart depending on the underlying data,
so even though the manufacturers are constant for each view the time
periods alter, if curr sales = 0 for 1 manufacturer, there is no
column and all the other columns move about. So there must be "series
interaction" - the percent series renderer needs information about the
column series to make its adjustments.
Learning from you guys I was able to access the chart object from
within the renderer
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
var lc:ColumnChart;
var ls:LineSeries = parent as LineSeries;
lc = ls.owner as ColumnChart;
and inspecting lc to see what I could use, I found
lc.series[0].seriesRenderData
which contained renderedXOffset and renderedhalfWidth, the actual
params used to render the column series. Since renderedXOffset changes
when the columns reposition themselves, I thought it was likely I had
found an attribute I could use to tell me what was going on with the
columns so I could calculate the adjustment in
g.drawRect(item.x - adjustment, item.y, 50 - adjustment2,5);
i.e. knowledge of the column series by the line series. When I found
out that seriesRenderData (renderData in LineSeries.as) was protected
I attempted to subclass LineSeries .as with this stuff
public class myLineSeries extends LineSeries
{
// overriding a function not marked for override
// incompatible override
private function get renderData():Object{
return super.renderData;
}
// incompatible override
override protected function get renderData():Object { return
super.renderData; }
Synopsis: Percent line segments must hover symetrically over the
associated column pairs
TIA in 64 point font,
Mic
--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> Monkey-patching is a necessary evil because Adobe didn't want to fully
> document every API used to build the framework because then we'd be
> locked into supporting it forever, and then we'd be really restricted on
> making improvements to the framework.
>
>
>
> Depending on what you monkey-patch, you might eliminate your ability to
> take advantage of the shared framework RSLs.
>
>
>
> Amazingly, I've helped answer 1000's of customer issues with only maybe
> one or two answers requiring monkey-patching. I've been able to find
> ways around most problems in ways that still let you use the shared
> RSLs. But monkey-patching can be faster than figuring out a clever
> workaround w/o monkey-patching.
>
>
>
> ________________________________
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of Josh McDonald
> Sent: Thursday, July 31, 2008 8:19 PM
> To: [email protected]
> Subject: Re: [flexcoders] Re: Overriding function not marked for
> override?
>
>
>
> Indeed, hence my monkey-patch recommendation. I've got several
> monkey-patches in the SOAP encoder code that we include in all our
> projects. When and if my fixes all make it into svn then we'll
> monkey-patch with the official file, and when they make it into a
> release we'll use that. But don't be afraid to monkey-patch stuff from
> the framework if you need to!
>
> However, in this case you're probably trying to do something in the
> wrong way, so perhaps you should post some stuff about what you're
> actually trying to achieve and somebody might be able to help in a way
> that doesn't require modifying any framework code.
>
> -Josh
>
> On Fri, Aug 1, 2008 at 12:13 PM, zyzzx00_99 <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]> > wrote:
>
> If you need to override functions in framework components that are
> private (or what have you), why not just copy all of the code from
> that component and make your own? Sure, future functionality might be
> in-the-air, but for Flex3 stuff certain off-limits stuff is sometimes
> needed.
>
>
>
>
> --- In [email protected] <mailto:[email protected]> ,
> "chigwell23" <chigwell23@> wrote:
> >
> > Yes Josh it is protected read-only .... why would the flex developers
> > intentionally cripple the functionality like this? Rhetorical question
> > I guess :-(
> >
> > --- In [email protected] <mailto:[email protected]>
> , "Josh McDonald" <dznuts@> wrote:
> > >
> > > If it's a protected read-only, you won't be able to expose it
> without
> > > monkey-patching the original file, as _renderData is almost
> > certainly going
> > > to be private, so you can never set it.
> > >
> > > -Josh
> > >
> > > On Fri, Aug 1, 2008 at 8:37 AM, Amy <amyblankenship@> wrote:
> > >
> > > > --- In [email protected]
> <mailto:[email protected]> , "chigwell23" <chigwell23@>
> > > > wrote:
> > > > >
> > > > > Again thanks for all the help so far ... turns out that
> > > > >
> > > > > LineSeries.RenderData is a protected property
> > > > >
> > > > > renderData property
> > > > > renderData:Object [read-only]
> > > > >
> > > > > Stores the information necessary to render this series.
> > > > >
> > > > > Implementation
> > > > > protected function get renderData():Object
> > > > >
> > > > > ... so I presume I have to subclass LineSeries to make it
> publicly
> > > > > available which gives errors on both attempts:
> > > > >
> > > > > package
> > > > > {
> > > > > import mx.charts.series.LineSeries;
> > > > >
> > > > > public class myLineSeries extends LineSeries
> > > > > {
> > > > >
> > > > > // overriding a function not marked for override
> > > > > // incompatible override
> > > > > public function get renderData():Object{
> > > > > return super.renderData;
> > > > > }
> > > > >
> > > > > // incompatible override
> > > > > override public function get renderData():Object {
> > > > return
> > > > > super.renderData; }
> > > > >
> > > > >
> > > > > }
> > > > > }
> > > >
> > > > try
> > > >
> > > > override protected function get...
> > > >
> > > >
> > > > ------------------------------------
> > > >
> > > > --
> > > > Flexcoders Mailing List
> > > > FAQ:
> http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> <http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt>
> > > > Search Archives:
> > > > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo
> <http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo> !
> Groups
> > > > Links
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > "Therefore, send not to know For whom the bell tolls. It tolls for
> > thee."
> > >
> > > :: Josh 'G-Funk' McDonald
> > > :: 0437 221 380 :: josh@
> > >
> >
>
>
>
> ------------------------------------
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> <http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt>
> Search Archives:
> http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo
> <http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo> ! Groups
> Links
>
>
> (Yahoo! ID required)
>
> mailto:[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
>
>
>
>
>
>
> --
> "Therefore, send not to know For whom the bell tolls. It tolls for
> thee."
>
> :: Josh 'G-Funk' McDonald
> :: 0437 221 380 :: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>