У меня очень странная проблема с компилятором flex (использующей Flash Builder 4.5), с которой я никогда раньше не сталкивался.
Я пытаюсь создать экземпляр класса (который существует в том же пакете), и компилятор не распознает класс как константу времени компиляции, а только в методах экземпляра. Методы класса (статические) будут компилироваться без проблем.
Этот класс используется повсеместно без проблем. Просто в этом месте он не будет компилироваться в экземплярах методов. Не имеет смысла.
Я перепробовал все, что мог придумать ...
- Добавлен импорт для UploadDate (даже если класс находится в том же пакете)
- Очистить построенный проект (и все родительские / дочерние проекты)
- Кэш модели удаленного кода (.metadata / .plugins / com.adobe.flexbuilder.codemodel / *)
- Удален весь сгенерированный кеш активов (... / com.adobe.flexide.editorcore / GeneratedAssets / *)
- Скомпилировано с различными Flex SDK (3.2, 3.5, 3.6)
Вот код:
package classes
{
import classes.UploadDate;
[Bindable]
public class UserImages {
....
//this compiles with no errors
public static function classMethod():void {
var ud:UploadDate = new UploadDate();
}
//this will not compile
public function instanceMethod():void {
//1046: Type was not found or was not a compile-time constant: UploadDate
var obj:UploadDate = new UploadDate();
}
//this is the ugly workaround I am currently using (works fine at Runtime)
public function hackyMethod():void {
var Def:Class = getDefinitionByName("classes.UploadDate") as Class;
var obj:* = new Def();
}
}
}
И класс UploadDate:
package classes
{
[Bindable]
public class UploadDate {
public var date:String;
public var numImages:int;
public UploadDate() {
}
}
}
Кто-нибудь видел это раньше?
Спасибо,
Matt