Использование класса Actionscript (MovieClip) в flex

#apache-flex #movieclip

#apache-flex #movieclip

Вопрос:

У меня есть фрагмент кода Actionscript, который реализует MovieClip. Кажется, я не могу заставить его отображаться в моем приложении.

Что я пробовал:
1) Использование класса непосредственно в моем коде через UIObject и Sprite. Я могу создать UIObject, добавить Sprite, а затем добавить экземпляр класса. В моем приложении ничего не отображается.

2) Помещение класса в качестве библиотеки flex (swc). Компилятор не позволяет мне импортировать его или использовать в качестве отображаемого объекта.

3) Ввод класса в виде гибкого проекта (swf). Файл отлично работает автономно, но выдает мне тот же значок «неработающий», когда я пытаюсь использовать его в своем приложении.

Здесь я упускаю из виду какой-то ключевой фактор. Предложения?

РЕДАКТИРОВАТЬ: Получил класс надстройки для отображения через библиотеку. Он компилируется в SWC-файл. К сожалению, в качестве размеров «сцены» используется полноэкранный режим. Проблема, с которой я сталкивался раньше, когда он не был виден, на самом деле (или я так думаю) заключалась в том, что он находился с правой стороны окна отображения. Я установил точки останова в процедурах рисования и мог видеть, что он обновляется. Итак, теперь я пытаюсь заставить его принимать некоторые измерения.

Комментарии:

1. 1 за то, что рассказали нам, что вы пробовали.

2. Я надеюсь реализовать некоторую форму «кучевого облака тегов». Он был написан как надстройка WP, но с открытым исходным кодом, поэтому, возможно, я смогу его адаптировать.

3. Все работает так, как должно. Это неправильный ваш код. Попробуйте это в простом тесте и работайте оттуда. Публикуйте любой код, на который наткнетесь.

Ответ №1:

Вы можете создать UIComponent вместо UIObject и добавить movieclip в UIComponent. Я всегда использовал UIComponent вместо UIObject, и мой спрайт всегда отображается корректно 🙂 mxml и код ниже:

 <mx:UIComponent>
    <mx:Yoursprite></mx:Yoursprite>
</mx:UIComponent>
  

или закодированный в actionscript:

 private function createSpriteInFlex():void
{
    var _uiComponent:UIComponent = new UIComponent();
    addElement(_uiComponent);

    var _sprite:YourSprite = new YourSprite();
    _uiComponent.addChild(_sprite);
}
  

Редактировать

Вы можете просто добавить строку mxml, подобную этой.

 <com:myUIComponent width="100%" height="100%"></com:myUIComponent>
  

Таким образом, myUIComponent на самом деле является классом, который вы можете закодировать самостоятельно. Ниже я продемонстрирую, как вы можете добавить спрайт или видеоролик:

 package com.myUIComponent
{
    public class myUIComponent extends UIComponent
    {
        public function myUIComponent()
        {
            super();

            addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            //ADD YOUR SPRITE HERE
            var mySprite:YourSprite = new YourSprite();
            addChild(mySprite);
        }
    }
}
  

Комментарии:

1. Пробовал это как часть локального использования класса. Добавил UIComponent на мою страницу, затем добавил Sprite и, наконец, MovieClip. Казалось, что все в порядке, но ничего не отображалось.

2. Я предположил — возможно, неправильно, что его ссылка на UIObject была опечаткой для UIComponent; основываясь на быстром поиске, UIObject был частью Flex 1.5; но ссылки не отображаются для Flex 2 или более поздней версии.

3. Обычно это должно работать. Вы пробовали кодированный подход или mxml-подход? Я обновлю свой пост другим (закодированным) примером.

Ответ №2:

1) Использование класса непосредственно в моем коде через UIObject и Sprite. Я могу создать UIObject, добавить Sprite, а затем добавить экземпляр класса. В моем приложении ничего не отображается.

Вы указали клип для перемещения и его размер? (Ширина и высота) и положение (x и y)? Размер обычно более важен, потому что x и y часто устанавливаются равными 0, 0.

 2) Putting the class in as a flex library (swc). The compiler won't let me import it or use it as a display object.
  

вы добавили SWC в свой путь к библиотеке? Вы уверены, что ваш новый видеоролик включен в SWC?

 3) Putting the class in as a flex project (swf). The file runs fine stand alone but gives me the same "broken" icon when I try to use it in my app.
  

Похоже, у вас проблема с путем при встраивании сюда; но вам пришлось бы показать свой код.

Комментарии:

1. MovieClip имеет размер и положение. При добавлении из внешнего файла (будь то SWF или SWC) Я вижу, что он расположен, но он не будет отображаться.

2. @ethrbunny Пожалуйста, покажите свой код для «добавления этого». Вы его внедряете? Или используя SWF-загрузчик? Или что-то еще?