2012-09-19 2 views
0

저는 플렉스 4.5를 사용하고 있습니다. 제 신청서에는 기본 CandlestickSeries가있는 CandlestickChart가 있습니다. 여기에 어도비의 문서에 설명 된대로 나는 사용자에게 CandleStickChart에 LineSeries의를 추가하여 candlesChart의 맨 위에 선 차트를 추가 할 수있는 기능을 제공 : hereCandlestickSeries LineSeries 드로잉 캔들 좁히기

내 문제는 라인이 추가 될 때의 모양을 변경한다는 것입니다 촛불이 좁아 지도록. 또한 추가되는 모든 라인은 촛불을 더 좁게 만들고 있습니다.

나는 주위를 둘러 보았고 정확히 같은 문제를 설명하는 "CandlestickChart problem with LineSeries" 어도비의 포럼에서이 스레드를 발견했습니다.

불행히도 스레드는 여전히 응답하지 않습니다.

이 문제에 대한 해결책을 알고있는 사람이 있습니까? 사전에

감사합니다, 니치 라 비드

답변

0

글쎄, 내가 찾은 해결책은 좋은하지 않고 더 나은 솔루션은 아직 평가되지만이 솔루션은 나를 위해 일한 동일한 문제가 당신의 사람들을 위해 :

을 문제는 촛불의 기본 항목 렌더러가 항목의 너비를 사용하여 적절한 의미의 촛불 크기를 계산하기 때문에 발생합니다. 문제는 다른 시리즈를 추가 할 때 버그가 있으며 촛불이 변경되기 전에 항목의 너비가 변경된다는 것입니다.

내 솔루션은 기본 아이템 렌더러의 사본을 만들고 거기에 놓을 그래프의 너비와 양에 따라 양초를 그립니다. 그래서 너는 아이템의 너비를 사용하지 않습니다.

문제가 해결되지만 툴팁 기능을 사용하면 양초에 비해 상대적으로 배치가 엉망입니다.

0

나는이 대답이 조금 늦다는 것을 알고 있지만, 다른 사람들에게 도움이 될 경우, 내가 한 일은 여기있다.

는 CandleStickChart 클래스를 확장하는 클래스를 확인하고 단순히 그래서 "applySeriesSet"함수를 재정의 (철저 중 하나를 테스트 아니에요) :

override protected function applySeriesSet(seriesSet:Array /* of Series */, 
               transform:DataTransform):Array /* of Series */ 
    { 
     // filter out the non-candlestick series 
     var filteredSeriesSet:Array = new Array(); 
     for each(var series:Series in seriesSet){ 
      if(series is CandlestickSeries) filteredSeriesSet.push(series); 
     } 

     // call the CandlestickChart applySeriesSet function with the filtered set, ignore return value 
     super.applySeriesSet(filteredSeriesSet, transform); 

     // do the code that the CartesianChart applySeriesSet function would have done, but with the unfiltered seriesSet 
     // would have preferred to do something like super.super.applySeriesSet(seriesSet, transform); 
     var n:int = seriesSet.length; 
     for (var i:int = 0; i < n; i++) 
     { 
      var newSeries:IChartElement = seriesSet[i]; 
      if (newSeries is Series) 
       customizeSeries(Series(seriesSet[i]), i); 
     } 
     return seriesSet; 
    } 
관련 문제