Скины, не загруженные в подпрограммах (во Flex) - PullRequest
4 голосов
/ 29 июля 2010

Мы пытаемся разработать движок флеш игры с несколькими уровнями абстракции. Этот гибкий проект содержит:

Приложение (1) -> загрузка класса (2) -> загрузка другого класса (3), который создает компонент Flex (4).

В загрузках используется SWFLoader. Последний компонент Flex (4) - это просто группа с AdvancedDataGrid. Мы не определяем скины, поэтому я полагаю, что он должен иметь скин по умолчанию.

Проблема в том, что во время выполнения выдается ошибка, так как обложка по умолчанию для компонентов не может быть найдена в компоненте Flex (4). В нашем случае для AdvancedDataGrid:

Error #1007: Instantiation attempted on a non-constructor.

в mx.controls::AdvancedDataGridBaseEx.

Виновная команда: getStyle("headerSeparatorSkin");, которая возвращает ноль

На данный момент мы нашли два решения:

  • первое решение - добавить атрибут headerSeparatorSkin="spark.skins.SparkSkin" в AdvancedDataGrid компонента Flex (4). Но это означает, что я должен вручную добавить каждый скин для каждой части компонента, что является довольно скучным решением.

  • Второе решение - поместить AdvancedDataGrid в первое Приложение (1). Я полагаю, что он добавляет AdvancedDataGrid в процесс компиляции и компоновки. Однако это решение не подходит, потому что Application (1) должен знать, какие компоненты UIC используются компонентом Flex (4).

Мы попробовали опцию компилятора "keep-all-type-selectors = true" (например, this ), но ничего не изменилось.

Итак, есть ли у кого-нибудь решение, чтобы заставить компилятор явно связать компонент Flex и его обложку в субприложении?

Ответы [ 2 ]

6 голосов
/ 11 мая 2011

Согласно Flexmaniak.pl , это можно решить, добавив -keep-all-styles-selectors к аргументам компилятора flex.

Правильный синтаксис для Flex 4.5.1: -keep-all-type-selectors

1 голос
/ 01 ноября 2010

Я столкнулся с этой проблемой при включении всех моих библиотек Flex в качестве общих библиотек времени выполнения (RSL). Я изменил структуру фреймворка в опциях моего компилятора, чтобы «Объединить в код» и getStyle («headerSeparatorSkin») больше не возвращал ноль Не уверен, что это приемлемый вариант для вас, но, по крайней мере, он даст вам подсказку.

...