如何从 Flex 3 组件发送信息?
Posted
技术标签:
【中文标题】如何从 Flex 3 组件发送信息?【英文标题】:How to Send Info From a Flex 3 Component? 【发布时间】:2011-03-27 10:07:14 【问题描述】:在从组件发送信息方面我需要一些帮助。我不确定如何进行。
我正在使用 Alex Uhlmann 的翻转卡类(失真效果)。我有一张有 3 个面的卡片。当用户单击按钮时,它会触发一个更改事件,并且在主应用程序中,更改事件会调用一个翻转卡片的函数flipTo。组件如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
>
<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" />
<mx:ControlBar >
<mx:Button
x="20" y="400"
label="Flip"
click="dispatchEvent( new Event( Event.CHANGE ) );" />
</mx:ControlBar>
</mx:Panel>
主应用程序如下所示:
<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>
主应用程序中的flipTo函数有4个参数:起始边,结束边,然后是确定翻转方向的两个参数。
一切都很好。如果我按下按钮,我可以翻阅所有侧面。但是,我想添加一个组合框,以便用户可以直接翻转到他们想要的一侧,而不必循环浏览所有的一侧。 (这很重要,因为我计划添加更多边)。
在主应用程序中,请注意边的 id 中包含数字 2。例如,frontFace2。我有多组卡片,每组都有不同的编号,frontFace3、frontFace4 等。编号决定了从数据库中提取哪些数据。 (为简洁起见,我简化了代码)。
如何在组件中添加一个组合框,使卡片翻转到选定的一侧?
我需要自定义事件吗? (不幸的是,我对自定义事件一无所知)。有没有办法让组合框设置一个公共变量,然后以某种方式在主应用程序中访问该变量并使用组合框选择的一侧调用 FlipTo?其他可能性?
有什么建议吗?
谢谢。
-拉克西米迪
【问题讨论】:
【参考方案1】:哦,是的,您将需要一个自定义事件。 自定义事件是您对 Event 类的继承,您可以在其上加载更多数据、参数、视图等。
在您的情况下,事情要简单一些,但您需要查看用户选择的“面孔”并翻转到它。
步骤 1.创建自定义事件(从事件继承) 2. 向名为 face 的事件类添加一个 var 3.当用户从combo中选择值时,用value填充face var并派发事件 4.在应用层监听事件,然后翻转到相关的人脸。
【讨论】:
嗨,Avi,感谢您的详细建议。对于我,这说得通。我想我必须尽快了解自定义事件!这将是一个挑战。谢谢。以上是关于如何从 Flex 3 组件发送信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 COBOL 中从面板 (ISPF) 呼叫、发送和接收信息