Это твой вопрос просто ...
почему отсутствует
blockquote>error.response
?Если это так, причина в том, что ресурс, обрабатывающий ваш запрос
POST
, не отвечает заголовкомAccess-Control-Allow-Origin
, даже при том, что это делает для запроса перед полетомOPTIONS
.Из-за политики CORS вашему клиентскому коду поэтому отказано в доступе к ответу HTTP и, следовательно,
error.response
не определено.В вашем обработчике ошибок вы можете предположить, что пустое свойство
response
соответствует проблеме сетевого уровня.
Два пути, обычно. Только путем ссылки на имя класса непосредственно - так, например, если Вы создали новый класс компонента MyComponent
в ActionScript, или косвенно путем создания компонента MXML, расширяющего другой UIComponent названный MyComponent
, в обоих случаях компонент взял бы стили, объявленные в Вашей внешней таблице стилей, при условии, что таблица стилей была импортирована в Ваше приложение (например, через Style source
):
MyComponent
{
backgroundColor: #FFFFFF;
}
Иначе путем установки UIComponent's styleName
свойство (как строка):
public class MyComponent
{
// ...
this.styleName = "myStyle";
// ...
}
... и определение стиля в файле CSS как так (отмечают запись через точку):
.myStyle
{
backgroundColor: #FFFFFF;
}
Иметь смысл?
В дополнение к тому, что предложенный Christian Nunciato, другая опция должен определить статический инициализатор для Ваших стилей компонента Flex. Это позволяет Вам устанавливать стили по умолчанию, не требуя, чтобы разработчик включал файл CSS.
private static function initializeStyles():void
{
var styles:CSSStyleDeclaration = StyleManager.getStyleDeclaration("ExampleComponent");
if(!styles)
{
styles = new CSSStyleDeclaration();
}
styles.defaultFactory = function():void
{
this.exampleNumericStyle = 4;
this.exampleStringStyle = "word to your mother";
this.exampleClassStyle = DefaultItemRenderer //make sure to import it!
}
StyleManager.setStyleDeclaration("ExampleComponent", styles, false);
}
//call the static function immediately after the declaration
initializeStyles();
Уточнение того, что предлагает Joshtynjala:
public class CustomComponent extends UIComponent {
private static var classConstructed:Boolean = classConstruct();
private static function classConstruct():Boolean {
if (!StyleManager.getStyleDeclaration("CustomComponent")) {
var cssStyle:CSSStyleDeclaration = new CSSStyleDeclaration();
cssStyle.defaultFactory = function():void {
this.fontFamily = "Tahoma";
this.backgroundColor = 0xFF0000;
this.backgroundAlpha = 0.2;
}
StyleManager.setStyleDeclaration("CustomComponent", cssStyle, true);
}
return true;
}
}
Я где-то прочитал это в документах; Метод ClassContruct вызывается автоматически.
Кристиан прав насчет применения CSS, но если вы планируете использовать компонент в библиотеке между проектами вы захотите написать файл css по умолчанию для этой библиотеки. Вот как вы это делаете:
Вот как команда Adobe устанавливает все свои стили по умолчанию, теперь вы тоже можете это сделать. Только что понял это - огромный
Чтобы создать стиль по умолчанию, вы также можете иметь свойство в своем классе и переопределить функцию styleChanged () в UIComponent, например, чтобы рисовать цвет фона только на половине ширины компонента:
// this metadata helps flex builder to give you auto complete when writing
// css for your CustomComponent
[Style(name="customBackgroundColor", type="uint", format="color", inherit="no")]
public class CustomComponent extends UIComponent {
private static const DEFAULT_CUSTOM_COLOR:uint = 0x00FF00;
private var customBackgroundColor:uint = DEFAULT_CUSTOM_COLOR;
override public function styleChanged(styleProp:String):void
{
super.styleChanged(styleProp);
var allStyles:Boolean = (!styleProp || styleProp == "styleName");
if(allStyles || styleProp == "customBackgroundColor")
{
if(getStyle("customBackgroundColor") is uint);
{
customBackgroundColor = getStyle("customBackgroundColor");
}
else
{
customBackgroundColor = DEFAULT_CUSTOM_COLOR;
}
invalidateDisplayList();
}
// carry on setting any other properties you might like
// check out UIComponent.styleChanged() for more examples
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
graphics.clear();
graphics.beginFill(customBackgroundColor);
graphics.drawRect(0,0,unscaledWidth/2,unscaledHeight);
}
}
Вы также можете создать сеттер для customBackgroundColor, который вызывал invalidateDisplayList (), поэтому вы также можете установить свойство customBackgroundColor программно, а также через css.