Вопрос

Я хочу загрузить 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() или измените скин, если он у вас есть.
в spark.comComponents.supportClasses::SkinnableComponent/addChild()[E:\dev\gumbo_beta2\frameworks\projects\spark\src\spark\comComponents\supportClasses\SkinnableComponent.as:966]
в 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:Loader к несвязанному типу mx.core:IVisualElement.main.mxml путь/каталог, строка 22. Проблема с гибкостью

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

Это было полезно?

Решение 2

ну, в полной версии flash builder 4 нет файла this.rawChildren.

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

  1. загрузите и установите комплект гибких компонентовhttp://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

  2. создать видеоролик

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

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

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

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();
    }
}
} 

Другие советы

Создайте еще один контейнер для размещения displayObject:

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

// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );
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);
}

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

this.rawchildren.addchild (LDR) должен работать

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top