views:

16

answers:

1

Hi,

I need some help with sending info from a component. I'm not sure how to proceed.

I'm using Alex Uhlmann's flip card class (Distortion Effects). I've got a card that has 3 faces. When the user clicks the button, it fires a change event, and in the main application, the change event calls a function, flipTo, that flips the card. The component is below:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Panel 
        xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
        width="500"
        height="400">

        <mx:Metadata>
            [Event("change", type="mx.events.Event")]
        </mx:Metadata>


        <mx:Script>
            <![CDATA[
                [Bindable]
                public var backCaption:String;
            ]]>
        </mx:Script>


            <mx:Text id="myAnswer" htmlText="{backCaption}"  width="100%" />

        <mx:ControlBar height="40"  width="100%" >
                <mx:Button 
                             x="20" y="400" 
                             label="Flip" 
                             click="dispatchEvent( new Event( Event.CHANGE ) );" />
        </mx:ControlBar>

    </mx:Panel>

The main application looks like:

<mx:Canvas id="homeStack"   >
        <mx:ViewStack id="flipViewStack2"  x="200" y="150"  >

            <sides:FlipFace 
            id="frontFace2" 
            title="Newport"
            change="flipTo(frontFace2, backFace2, DistortionConstants.LEFT, DistortionConstants.RIGHT);" />     


            <sides:FlipReverse  
            id="backFace2" 
            title="Newport: Answer"  
            change="flipTo(backFace2, anotherFace2, DistortionConstants.LEFT, DistortionConstants.LEFT);" />    

            <sides:FlipAnotherSide  
            id="anotherFace2" 
            title="Other Stuff"  
            change="flipTo(anotherFace2, frontFace2, DistortionConstants.RIGHT, DistortionConstants.LEFT);"/>

        </mx:ViewStack>
    </mx:Canvas>

    <mx:Canvas id="OtherStack" >
        (more code)
    </mx:Canvas>

The flipTo function in the main application takes 4 parameters: the starting side, the ending side, and then two parameters that determine the direction of the flip.

Everything works great. If I hit the button, I can flip through all of the sides. But, I'd like to add a comboBox, so that the user can flip directly to the side that they want instead of having to cycle through all of the sides. (This is important as I plan to add more sides).

In the main application, please note that the sides have the number 2 in their ids. For example, frontFace2. I've got multiple sets of cards each with a different number, frontFace3, frontFace4, etc. The number determines which data is pulled from the database. (I've simplified the code for brevity).

How can I add a comboBox in the component that causes the card to flip to the selected side?

Do I need a custom event? (Unfortunately, I don't know anything about custom events). Is there a way to have the comboBox set a public variable and then somehow access that variable in the main application and call flipTo with the comboBox's chosen side? Other possibilities?

Any suggestions?

Thank you.

-Laxmidi

A: 

oh, yeah, you will need a custom event. the custom event is your inheritance to the Event class which on it you can load more data, params, views and more.

in your case, things are a bit more simple but you will need to see what "face" the user selected and flip to it.

steps 1. create a custom event (inherit from event) 2. add a var to the event class that's called face 3. when the user selects the value from the combo, fill the face var with value and dispatch the event 4. listen to the event in the application level and then flipTo the relevant face.

Avi Tzurel
Hi Avi,Thank you for the detailed advice. It makes sense to me. I guess that I'll have to learn about custom events ASAP! That's going to be a challenge. Thank you.
Laxmidi