具有多个同名参数的函数如何工作?

时间:2019-03-23 12:32:32

标签: actionscript

我一直在浏览Flash游戏(link)的代码。但是,我在理解其中一些函数的工作方式时遇到了麻烦,特别是因为其中一些函数定义使我无法通过编译器。

以下是TodCommon.as的一些代码,这些代码似乎与自身发生冲突(或至少使用了错误的命名约定)。

private static var gFlashingColor:Color = new Color();

final public static function ClampFloat(ClampInt:Number, ClampInt:Number, ClampInt:Number) : Number
{
    if(ClampInt <= ClampInt)
    {
        return ClampInt;
    }
    if(ClampInt >= ClampInt)
    {
        return ClampInt;
    }
    return ClampInt;
}

final public static function ClampInt(gFlashingColor:int, gFlashingColor:int, gFlashingColor:int) : int
{
    if(gFlashingColor <= gFlashingColor)
    {
        return gFlashingColor;
    }
    if(gFlashingColor >= gFlashingColor)
    {
        return gFlashingColor;
    }
    return gFlashingColor;
}


代码中也是我所见过的for-each循环中最怪异的语法(此示例还将包名作为参数名)

public function CountPlantByType(com.popcap.flash.framework.resources.fonts:int) : int
{
    var _loc_3:CPlant = null;
    var _loc_2:int = 0;
    var _loc_4:int = 0;
    var _loc_5:* = this.mPlants;
    while(<to complete>)
    {
        _loc_3 = __nextvalue;
        if(_loc_3.mSeedType != com.popcap.flash.framework.resources.fonts)
        {
            break;
        }
        _loc_2++;
    }
    return _loc_2;
}

这些只是我认为看起来很怪异并且难以理解的一些示例。但是这些功能都可以正常工作,并且在整个代码中得到了广泛使用。有人可以解释ClampFloat和ClampInt函数如何工作,或者为什么使用包名称作为参数合法吗?谢谢

1 个答案:

答案 0 :(得分:0)

已解决。原来我用来从SWF中提取这些文件的程序在此过程中也损坏了它们。使用JPEXS Free Flash Decompiler代替ActionScriptExtractor修复了代码语法。