Domanda

Nella mia domanda, ho una tabella che voglio visualizzare in una TitleWindow quando si fa clic su.

        var win:TitleWindow = PopUpManager.createPopUp(this, TitleWindow, false) as TitleWindow;
        win.addChild(myChart);
        PopUpManager.bringToFront(win);

E 'in effetti posizionare il grafico nel titlewindow che si presenta, ma rimuove il grafico originale dal genitore. Poi, quando il titlewindow è chiuso, mia tabella è andato semplicemente. Io non riesco a capire come clonare il grafico - tutti i metodi che ho provato non è riuscita -. E non ho idea del perché questo sta accadendo

Soluzione:

  public var barChart:BarChart;
  public function onClick(e:Object):void
  {
    barChart = (e as BarChart);
    if(barChart != null)
    {
        var win:MyWindow = PopUpManager.createPopUp(this, MyWindow, false) as MyWindow;
        PopUpManager.centerPopUp(win);

    }
  }

// ... MyWindow.mxml ...

var _parent:Object;
private function creationComplete(e:Event):void
{
    bChart = parentApplication.barChart;
    _parent = bChart.parent;
    this.addChild(bChart);
}

private function onMyWindowClose(evt:CloseEvent):void {
    _parent.addChild(bChart);
    PopUpManager.removePopUp(this);
}
È stato utile?

Soluzione

Quando si esegue un addChild l'oggetto viene reparented, come ha detto Simon uno DisplayObject non può appartenere a due genitori. Se è non è un problema di non vedere due grafico nello stesso momento in cui si apre il popup, è possibile prima di aprire il popup Salva il genitore del bambino e l'indice, e quando si chiude il popup di ripristinare lo stato del bambino.

prima di aprire

myChartParent=myChart.parent;
myChartIndex=myChartParent.getChildIndex(myChart);

in fase di chiusura

myChartParent.addChildAt(myChartIndex);

Ma se volete vedere due grafico che si dovrà creare due esempio di grafico.

Altri suggerimenti

Non sono riuscito a trovare la documentazione per sostenerlo, ma credo che un componente Flash UI può avere un solo genitore. Quando si chiama addChild () Ho il sospetto che la parentela dei cambiamenti di controllo e scompare dalla finestra. Dal momento che la parentela è cambiato otterrà garbage collection quando la nuova TitleWindow scompare.

Quello che penso avrei fatto nella tua posizione sarebbe quello di astrarre il grafico verso il proprio controllo in modo da non dover duplicare il codice, utilizzare lo stesso controllo nella finestra regolare e il vostro popup, e passare i dati al dopo la chiamata createPopup.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top