#actionscript
#actionscript
Вопрос:
Я просматривал код для флеш-игры (ссылка). Однако у меня возникают проблемы с пониманием того, как работают некоторые из этих функций, особенно потому, что некоторые из них имеют определения функций, которые, как я думаю, не могут пройти мимо компилятора.
Ниже приведен некоторый код из 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:
Решено. Оказывается, программа, которую я использовал для извлечения этих файлов из SWF, также повредила их в процессе. Использование бесплатного флэш-декомпилятора JPEXS вместо ActionScriptExtractor исправило синтаксис кода.