通过mxml中的函数传递值?

时间:2012-02-11 07:46:37

标签: flash actionscript-3 actionscript mxml

我对MXML和Flash Builder相当陌生,对Flash Professional中的AS3有一定的经验。我的问题是我目前有一个基本的应用程序,我们有多个按钮,这些按钮上的“click”事件监听器激活了这些功能。问题是每个按钮或多或少都具有相同的功能;只是为每个按钮加载的数据是不同的。我如何制作它以便我能够回收相同的功能?在Javascript或AS3中,这些内容将会完成......

<s:Button id="btn_1" x="378" y="601" label="Button 1" click="photoSwap(event,"image1.jpg")"/>
<s:Button id="btn_2" x="350" y="601" label="Button 2" click="photoSwap(event,"image2.jpg")"/>

protected function photoSwap(event:MouseEvent):void
{
    // TODO Auto-generated method stub
    var selectedImage = evt.target;
    Tweener.addTween(img, {alpha:0, time:1});
    img.source="images/" + selectedImage;
    Tweener.addTween(img, {alpha:1, time:2, delay:1});
}

但这显然不是它的运作方式。我尝试了解决这个问题的麻烦但却找不到任何东西。当我让每个按钮都有自己的功能时,它会工作,但这看起来很愚蠢,不需要这样做。

2 个答案:

答案 0 :(得分:3)

一个非常常见的Flash Builder新手错误。

MXML标记具有以双引号(")指定的属性。因此,在属性值中禁止"是很自然的。您需要做的就是使用单引号('

在MXML属性中指定字符串
<s:Button id="btn_1" x="378" y="601" label="Button 1" click="photoSwap(event,'image1.jpg')"/>
<s:Button id="btn_2" x="350" y="601" label="Button 2" click="photoSwap(event,'image2.jpg')"/>

protected function photoSwap(event:MouseEvent, selectedImage:String):void
{
    Tweener.addTween(img, {alpha:0, time:1});
    img.source="images/" + selectedImage;
    Tweener.addTween(img, {alpha:1, time:2, delay:1});
}

答案 1 :(得分:0)

此外,如果您引用高度和宽度等属性,请将方法括在{}

<s:HGroup id="hoppers" height="40%" gap="{getAbsolutedimension(9.8, 'width')}"
...
...
</s:HGroup>

其中getAbsolutedimension返回一个数字