Поскольку вы пытаетесь добавить это к гибкому компоненту, вам, вероятно, нужно обернуть Book в экземпляр UIComponent:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:Script>
<![CDATA[
import com.books.Book;
import flash.display.*;
var n:UIComponent = new UIComponent;
n.addChild(new Book);
addChild(n);
]]>
</mx:Script>
</mx:Application>
Другим способом сделать это было бы сделать так, чтобы Book наследовал UIComponent, вот так:
package com.books
{
import flash.display.*;
public class Book extends UIComponent
{
public var var1:String = "Test Var";
public var var2:Number = 1000;
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
graphics.beginFill(0xff0000, 1);
graphics.drawRect(0, 0, 500, 200);
graphics.endfill();
}
}
}
Затем вы можете добавить Book прямо в ваше приложение, например:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:books="com.books.*"
layout="absolute">
<books:Book />
</mx:Application>
Кроме того, я предлагаю вам ознакомиться с архитектурой компонентов Flex. Существует довольно хорошая документация от Adobe по этому вопросу, но вы должны знать, что эта информация относится к Flex 3 (я заметил, что вы используете Flex 3, поэтому ссылка). Даже при том, что большая часть информации все еще может быть применима к Flex 4 (например, жизненный цикл компонента), существуют различия, особенно в отношении скинов.