Flex Compiler, не константа времени компиляции, а только в экземплярах методов - PullRequest
1 голос
/ 18 августа 2011

У меня очень странная проблема с компилятором 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

1 Ответ

0 голосов
/ 29 ноября 2012

"Я столкнулся с такой проблемой при использовании статических констант в сигнатурах метода или свойствах экземпляра. Решением здесь было переименование класса, который содержит константы, чтобы он был в алфавитном порядке перед всеми другими классами. Попробуйте переименовать UploadDate в AUploadDate «. - Дженс Струве 18 августа 2011 года в 7:12

...