Flash按钮链接和切换

时间:2014-11-22 17:11:49

标签: actionscript-3 flash

单击3个按钮之一显示total.text中的价格输出 每个按钮显示不同的价格。

目前用于每个按钮的代码:

1    btn1.addEventListener(MouseEvent.CLICK, myButtonClick);
2    
3    function myButtonClick(ev:MouseEvent):void
4    {
5    var a:Number = Number(99) * Number(1.2);
6    total.text = String(a);
7    }
8
9   btn2.addEventListener(MouseEvent.CLICK, myButtonClick);
10   
11    function myButtonClick(ev:MouseEvent):void
12    {
13    var b:Number = Number(99) * Number(1.4);
14    total.text = String(b);
15    }
16
17  btn3.addEventListener(MouseEvent.CLICK, myButtonClick);
18   
19    function myButtonClick(ev:MouseEvent):void
20    {
21    var c:Number = Number(99) * Number(1.6);
22    total.text = String(c);
23    }
24

它工作正常,但我真的想添加按钮2和/或3的值,如果切换到按钮1的值并显示在total.text

最终,我试图选择5个按钮来切换1。该切换将使用某些东西设置初始Number(99)值。或者不是。然后,如果我在第二组5个按钮中切换1个按钮,它将在第二个数字(1.2)中设置值。从那里。两个切换的btn2和btn3将乘以total.text中的总数。

我知道在哪里可以制作一大堆按计算值的按钮。但我确定有一个更清洁的方法来做到这一点。 我是闪光灯的新手,只是在这里寻找方向。它会很棒。

编辑:做了一点研究。希望我朝着正确的方向前进

好的,添加了像

这样的变量号
var modifier1:Number = 99;
var modifier2:Number = 1.2;

然后调用像

这样的函数
var a:Number = Number(modifier1) * Number(modifier2);

现在研究如何使modifier1实际链接到按钮的切换状态,并为其指定一个值为99,用于切换,1为不用。

1 个答案:

答案 0 :(得分:0)

我建议为所有按钮创建一个小类,它应包含。您还需要一个包含这些按钮列表的对象,我们将其称为应用程序。当用户单击Button1时,它将在Application中设置一个字段,指示切换 - 所有值的乘积或仅按下按钮。然后将实际文本设置为传递给的任何内容(我称之为valueText)

http://puu.sh/d1hP7/e25228352b.png

这里有一些快速代码,我还没有测试它是否真的有效,但它应该很容易理解:

class Button {

    private var app:Application;
    public var value:Number;

    public function Button(app:Application, value:Number) {
        this.app = app;
        this.value = value;
        this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
    }
    private function mouseDown(e:MouseEvent):void {
        app.displayText(value);
    }
}

class Application {

    private var buttonList:Vector.<Button> = new Vector.<Button>();
    public var isToggleOn:Boolean = false;

    public function Application() {
        buttonList.push(new Button(this, 0.98));
        buttonList.push(new Button(this, 0.75));
        buttonList.push(new Button(this, 0.88));
    }

    public function getProduct():Number {
        var sum:Number = 0;
        for(var button:Button in buttonList) {
            sum += button.value;
        }
        return sum;
    }

    public function displayText(value:Number):void {
        valueText.text = isToggleOn ? getProduct() : value;
    }
}