Adobe Flash Builder (flex4): addChild () недоступна в этом классе. - PullRequest
9 голосов
/ 08 января 2010

Я хочу загрузить SWF в приложение Flex 4, чтобы использовать его классы.

var ldr:Loader=new Loader();
ldr.load(new URLRequest("file://path/to/fileswf"));
ldr.contentLoaderInfo.addEventListener(Event.INIT, loaded);
function loaded(evt:Event):void { addChild(ldr); }

Я получаю сообщение об ошибке:

Ошибка: addChild () недоступна в этом классе. Вместо этого используйте addElement () или измените скин, если он у вас есть.
at spark.components.supportClasses :: SkinnableComponent / addChild () [E: \ dev \ gumbo_beta2 \ frameworks \ projects \ spark \ src \ spark \ components \ supportClasses \ SkinnableComponent.as: 966]
at main / private: init /loaded () [C: \ Documents and Settings \ ufk \ Adobe Flash Builder Beta 2 \ xpogames-toolkit-test \ src \ main.mxml: 22]

Если я изменю addChild() на addElement(), я получу следующую ошибку компиляции:

1067: неявное приведение значения типа flash.display: загрузчик к несвязанному типу mx.core: IVisualElement. main.mxml path / dir line 22 Гибкая задача

Есть идеи, как решить эту проблему?

Ответы [ 4 ]

24 голосов
/ 08 июня 2010

Создайте другой контейнер для размещения объекта displayObject в:

// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );

// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );
2 голосов
/ 31 мая 2010

хорошо в полной версии Flash Builder 4, this.rawChildren не существует.

Лучший способ решить эту проблему - преобразовать каждый необходимый класс в компонент Flex и использовать его в приложении Flex:

  1. скачать и установить комплект компонентов flex http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

  2. создание фрагмента ролика

  3. преобразовать в гибкий компонент

  4. добавить соответствующие функции в этот класс

скелет для класса, который прикреплен к мувиклипу, который собирается преобразовать в компонент flex:

package {
import mx.flash.UIMovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
public dynamic class challenge_screen extends UIMovieClip {

    public function challenge_screen() {
        super();
    }
}
} 
1 голос
/ 07 декабря 2010
private var _loader:SWFLoader = new SWFLoader();
private var _uicomponent:UIComponent = new UIComponent();
private function swfLoaded(event:Event):void 
{
Alert.show("inside swf Loaded");
var content:DisplayObject =_loader.content;
_uicomponent.addChild(content);
} 
public function loadSWF () : void 
{   

_loader.addEventListener(Event.INIT, swfLoaded);
_loader.load("http://intelliveysoft.com:5080/myelearn/Admin.swf"); 
addElement(_uicomponent);
}

Попробуйте это.Это будет работать

0 голосов
/ 26 января 2010

this.rawChildren.addChild (ldr) должно работать

...