天儿真好,
该功能已编码,但它位于舞台帧上。我希望将它转换为更具动态性的功能,以便我可以在所有文本字段上调用它。
以下是代码:
function numtolet():void
{
output.text = String(int(earner * 100) / 100);
if (earner >= 1000 && earner < 1000000)
{
output.text = String(int((earner/1000) * 100) / 100 + "k");
}
else if (earner >=1000000 && earner < 1000000000)
{
output.text = String(int((earner/ 1000000) * 100 ) / 100 + " M");
}
}
我希望将'output.text'部分变成一个变量,该变量根据调用函数的文本字段和文本字段读取的变量的'earner'而变化。
干杯,
-Aidan。
答案 0 :(得分:1)
您最好将您的函数编写为正确的函数,可以return
String
值分配给text
属性或在其他地方使用。此外,如果需要,您应该使用可以轻松扩展为更大前缀的模式。比如说,我找到了一个使用W
前缀的游戏,这个游戏超出了常见的“yotta”前缀,并且还有一组后续前缀。所以,这就是你应该如何设计这样一个功能:
function numtolet(x:Number):String {
const prefixes:Vector.<String> = Vector.<String>(["","k","m","g","t"]);
// add more to taste. Empty prefix is used if the number is less than 1000
var y:Number=x;
var i:int=1;
// provided x>0, if not, store a minus somewhere and attach later
while((y>=1000) && (i<prefixes.length)) {
y=y/1000;
i++;
}
// there, you have just divided X by 1000 a couple of times and selected the prefix
var s:String = y.toFixed(2)+prefixes[i-1];
// if there was a minus, add it here: s="-"+s;
return s;
}
然后你就这样称呼它:
output.text=numtolet(earner);
答案 1 :(得分:0)
您可以使用CHANGE事件执行此操作:
output.addEventListener(Event.CHANGE, numtolet);
function numtolet(e:Event):void
{
output.text = String(int(earner * 100) / 100);
if (earner >= 1000 && earner < 1000000)
{
output.text = String(int((earner/1000) * 100) / 100 + "k");
}
else if (earner >=1000000 && earner < 1000000000)
{
output.text = String(int((earner/ 1000000) * 100 ) / 100 + " M");
}
}
这将使每次用户更改文本时运行该函数,但您可能想要向函数添加一些条件(if),或者使用变量来保持追踪数量。当数字转换为1k时,它如何知道在1000k处做什么?
请随时询问您是否需要帮助。
答案 2 :(得分:0)
当您使用Neguido所说的CHANGE
事件并将侦听器添加到不同的文本字段时,您可以使用e.target.text =
更改调用文本字段中的文本。
为每个文本字段定位不同的变量更加困难,因为您无法将额外的参数传递给事件处理程序,并且您无法将自己的变量/属性添加到textFields。您可以将每个textField粘贴到父MovieClip中,然后在其中创建变量MovieClip1.earner = 0
,并使用e.target.parent.earner
检索值。您还可以在TextField类中编写动态扩展,您可以在其中添加自定义变量。或者,您可以在事件处理程序中使用switch
语句为不同的调用者使用不同的变量。
答案 3 :(得分:0)
这是我为其他事情写的快速功能。通过添加另一个if语句并将000添加到数字中,可以轻松地将其调整为更大的数字。它也不包括输出显示,但也可以很容易地添加。希望它有所帮助!
通过numToLet(收入者)调用该函数。
function numToLet(x) {
if (x > 1000000000000000000) {
x = x / 1000000000000000000
x = Number(x.toFixed(2));
return x + "Quin";
}
if (x > 1000000000000000) {
x = x / 1000000000000000
x = Number(x.toFixed(2));
return x + "Quad";
}
if (x > 1000000000000) {
x = x / 1000000000000
x = Number(x.toFixed(2));
return x + "Tril";
}
if (x > 1000000000) {
x = x / 1000000000
x = Number(x.toFixed(2));
return x + "Bil";
}
if (x > 1000000) {
x = x / 1000000
x = Number(x.toFixed(2));
return x + "Mil";
}
if (x < 1000000) {
x = Number(x.toFixed(2));
return x;
}
}