English 中文(简体)
ActionScript 3 accordion component child container overlay each other
原标题:

I use accordion list in as3 to display marker cluster info on google map. For some reason, the current selected child container (a vbox) is overlaid partly by the next container s label. And it seems the longer the accordion list, the bigger the area of the container will be covered. I tried to set the resizeToContent property to true/false but neither seem to work. Here is the custom accordion class (list is an array of marker infowindow objects which also extends UIComponent):

package{
         import mx.containers.Accordion;
          ...
public class AccordionWindow extends UIComponent{ 

public function AccordionWindow(list:Array){

        var panel:Box = new Box();
        panel.width = 300;
        panel.height = 200;
        addChild(panel);

        var acc:Accordion = new Accordion();
        acc.percentWidth = 100;
        acc.percentHeight = 100;

        for (var i:int = 0; i < list.length; i++)
        {
            var vbox:VBox = new VBox();
            vbox.label = "Item" + String(i);
            vbox.addChild(list[i]);
            acc.addChild(vbox);
        }

        panel.addChild(acc);
   }
}

Any ideas?

问题回答

I m not sure what exactly the cause of your problem is, but here are a couple of thoughts that should help.

  1. You need to start your constructor with a super() statement.

    public function AccordionWindow(list:Array)
    {
        super();
    
    
        // any other code you might have in your constructor.  
        // generally, you ll want to store arguments in instance properties.  
        // maybe something like this:
    
           this.list = list;
    
    }

Sorry - don t know why I m having so much trouble with the code formatting...

  1. Based on the code you posted, it looks like the AccordionWindow class is intended to create an Accordion and put it in a Box. Maybe you have a specific need to do things the way you are trying to do them, but in my experience it would make better sense to extend Box, rather than UIComponent.

  2. You ll tend to run into issues creating children and adding them to the stage in the constructor. Instead, override the protected createChildren method and move all of the code you currently have in your constructor to that method.

createChildren is called automatically, so you don t have to do anything more than override it and move your code into it.

override protected function createChildren():void
{
    super.createChildren();  // very important.  do not leave this out.

    // paste the code that is currently in the constructor here
}

There is a very helpful post about the UIComponent lifecycle at http://danorlando.com/?p=122.





相关问题
Attaching a property to an event in Flex/AS3

I have a parameter that needs to be passed along with an event. After unsuccessful attempts to place it on the type by extending the class, I ve been advised in another SO question to write a custom ...

Sorting twodimensional Array in AS3

So, i have a two-dimensional Array of ID s and vote count - voteArray[i][0] = ID, voteArray[i][1] = vote count I want the top 3 voted items to be displayed in different colors, so i have a 2nd Array -...

Virtual Tour using sketch up, ajax, flash technologies

I want to know if there are existing technology that make your 3d models in sketch into virtual tours, using either Ajax or Flash for web presentation. If there s none, which will be a good approach ...

What s a good way of deserializing data into mock objects?

I m writing a mock backend service for my flex application. Because I will likely need to add/edit/modify the mock data over time, I d prefer not to generate the data in code like this: var mockData =...

AS3 try/catch out of memory

I m loading a few huge images on my flex/as3 app, but I can t manage to catch the error when the flash player runs out of memory. Here is the what I was thinking might work (I use ???? because i dont ...

热门标签