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 flexcoders@yahoogroups.com, "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: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On > Behalf Of Josh McDonald > Sent: Thursday, July 31, 2008 8:19 PM > To: flexcoders@yahoogroups.com > 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 flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> , > "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 flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> > , "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 flexcoders@yahoogroups.com > <mailto:flexcoders@yahoogroups.com> , "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]> >