单数字领先零(闪存)

时间:2009-09-20 07:28:04

标签: flash actionscript-3

我正在使用Flash CS3 - AS 3.0。

我有以下代码用于使图像在外部计数:我不确定你是否都熟悉幻灯片专业版(我不认为你需要为了帮助我)。

function albumStuff(event:SSPDataEvent) {
     if (event.type=="albumData") {
     total1.text =  event.data.totalImages;
     }
}

如果该文本字段中出现的数字为9,那么我如何才能使前导零出现?

我希望我的问题不会引起混淆。

6 个答案:

答案 0 :(得分:4)

进一步优化Seanonymous的回答:

function addLeadingZero(val:Number, places:uint):String
{
    var result:String = val.toString();
    for(var i:int = result.length; i < places; i++)
    {
        result = '0' + result;
    }
    return result;
}

速度只有在迭代数百个字符串/数字时才会显着。

答案 1 :(得分:3)

 function leadingZero(num : Number) : String {
    if(num < 10) {
       return "0" + num;
    }
    return num.toString();
 }

答案 2 :(得分:1)

这是一个更好的方法,如果你有一个以上的小数位(如0001到0991之类的东西等)将起作用。

步骤1:创建一个占位符变量,其最大数量为0

  

var leadingZeroes:String =“000000000”;

第2步:将您的号码变成字符串

  

var intToString:String = String(myInteger);

第3步:根据数字中的字符数

,删除占位符的末尾
  

leadingZeroes = leadingZeroes.substr(0,leadingZeroes.length-intToString.length);

步骤4:将连接的字符串打印到文本字段(或在任何地方使用)

  

TxtField.text =字符串(leadingZeroes + intToString);

瞧!

答案 3 :(得分:1)

将一个零添加到十个以下的数字是很好的&amp;好的,但是如果你想要更加彻底,这将允许你添加任意数量的零:

function alz( value:uint, places:Number ):String { //Add Leading Zeros
    var result:String = value.toString();
    while ( result.length < places ) {
        result = '0' + result;
    }
    return result;
}

然后,您可以使用相同的函数来处理不同数量的前导零:

var timeText:String = alz( minutes, 2) + ":" + 
                        alz( seconds, 2 ) + "." + 
                        alz( milliseconds, 4 );

timeText:03:08.0042

答案 4 :(得分:0)

您可以使用Casalib's NumberUtil

The library's website

对于新来者,该库提供了许多有用的小功能,当您查看其来源时,它是一个非常好的学习材料。

答案 5 :(得分:0)

这是一种单行方式:

private function leadingZeros(value:int, numDigits:int):String
{
    return String(new Array(numDigits + 1).join("0") + String(value)).substr(-numDigits, numDigits);
}

但是,我不确定Array的join()方法是否比while循环更快。

此帖子与this

重复 然而,当我们谈论as3时,那个人的头衔中有“红宝石”。我建议让那个与此重复。