AS3-按十进制的按钮到十进制的按钮



我需要帮助。我想制作一个按下一个数字的按钮,小数点小数点,例如1.2345至1.234至1.23等。我不想使用数学。使用 *10/10, *100/100,因此,由于我在答案中得到了不同的小数。我单击btnEquals并将答案围住后,此按钮必须在计算器上使用。

我还需要帮助才能在"列表"组件中使用addEventListener

我不知道我是否很好地理解了这个问题,但是在您的情况下,我会做这样的事情:

var myVal:Number = 1.2345
var vectorFloorResult:Vector.<Number>;
var vectorRoundResult:Vector.<Number>;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals: uint = (lastDecimal-firstDecimal)
var decimalsMultiply:uint = Math.pow(10,decimals);

trace ("decimals = " + decimalsMultiply)
// output : decimals = 4 
function decreseDecimals():void{
    vectorFloorResult = new Vector.<Number>()
    vectorRoundResult = new Vector.<Number>()
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult.push(Math.floor(myVal*i)/i)
        vectorRoundResult.push(Math.round(myVal*i)/i)
    }
}
decreseDecimals();
trace("floor result = " + vectorFloorResult);
trace("round result = " + vectorRoundResult);

输出:

decimals = 10000

用于数学:

floor result = 1.2345,1.234,1.23,1.2

用于数学:

round result = 1.2345,1.235,1.23,1.2

单击按钮时,您可以更改代码以获取结果...

对不起,但是我的英语真的很糟糕!因此,这也许是一个错误的答案。:(

TL;博士更多信息,但很无聊!

如果要使用固定的向量长度,则可以将功能更改为:

function decreseDecimals():void{
    var count:uint = 0
    trace(lastDecimal)
    vectorFloorResult = new Vector.<Number>(decimals,true)
    vectorRoundResult = new Vector.<Number>(decimals,true)
    for (var i:uint = decimalsMultiply; i>=10; i/=10){
        vectorFloorResult[count]=(Math.floor(myVal*i)/i)
        vectorRoundResult[count]=(Math.round(myVal*i)/i)
        count++
    }
}

如果您对"表演"做事,那肯定会更好...

真的太长了,DR;;)

[编辑]

要通过结果更新文本字段或其他组件,您可以执行此操作:

import flash.text.TextField;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
var myVal:Number = 1.2345;
var vectorFloorResult:Vector.<Number > ;
var vectorRoundResult:Vector.<Number > ;
var decimals2String:String = myVal.toString();
var firstDecimal:uint = (decimals2String.lastIndexOf(".")+1);
var lastDecimal:uint = decimals2String.length;
var decimals:uint = (lastDecimal - firstDecimal);
var myCustomButton:SimpleButton = myCustomButton;
var myDisplayRound:TextField = new TextField();
myDisplayRound.x = 100;
myDisplayRound.y = 50;
myDisplayRound.text = myVal.toString();
addChild(myDisplayRound);
var myDisplayFloor:TextField = new TextField();
myDisplayFloor.x = 100;
myDisplayFloor.y = 100;
myDisplayFloor.text = myVal.toString();
addChild(myDisplayFloor);
    var countClicks:uint = 1;
var decimalsMultiply:uint = Math.pow(10,decimals);
function decreseDecimals():void {
    var count:uint = 0;
    vectorFloorResult = new Vector.<Number > (decimals,true);
    vectorRoundResult = new Vector.<Number > (decimals,true);
    for (var i:uint = decimalsMultiply; i>=10; i/=10)
    {
        vectorFloorResult[count]=(Math.floor(myVal*i)/i);
        vectorRoundResult[count]=(Math.round(myVal*i)/i);
        count++;
    }
}
decreseDecimals();
myCustomButton.addEventListener(MouseEvent.MOUSE_DOWN,changeDisplay);
function changeDisplay(me:MouseEvent):void {
    myDisplayRound.text = vectorRoundResult[countClicks].toString();
    myDisplayFloor.text = vectorFloorResult[countClicks].toString();
    if (countClicks < vectorRoundResult.length-1)
    {
        countClicks++;
    }
    else
    {
        countClicks = 0;
    }
}

[/edit]

最新更新