Интеграция классов Actionscript в Flex - PullRequest
0 голосов
/ 17 сентября 2011

Я пытаюсь изучить Flex и Actionscript.Я нашел пример теста Moock во Flash и хочу превратить его в приложение Flex.Я пытаюсь понять связь между actioncript и mxml.Как мне взять класс QuizApp и поместить его содержимое в контейнер в файле mxml?

MXML

<fx:Script>
<![CDATA[
    import QuizApp;
    var ms:QuizApp = new QuizApp;

    protected function init():void
    {                           
        msc.addChild(ms);
    }

]]>
</fx:Script>

<mx:VBox id="msc" />

Класс

package  {

    import flash.display.Sprite;
    import mx.controls.Button;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

    public class QuizApp extends Sprite {
        //for managing questions:
        private var quizQuestions:Array;
        private var currentQuestion:QuizQuestion;
        private var currentIndex:int = 0;

        public function QuizApp() {
            quizQuestions = new Array();
            createQuestions();
            createButtons();
            createStatusBox();
            addAllQuestions();
            hideAllQuestions();
            firstQuestion();
        }

... etc
    }
}

1 Ответ

3 голосов
/ 17 сентября 2011

Я пытаюсь понять взаимосвязь между actionScript и mxml.

MXML - это язык генерации кода ActionScript.Когда вы пишете MXML, компилятор Flex делает «магию», чтобы превратить ваш файл MXML в класс ActionScript.Вы можете сохранить этот сгенерированный код, указав аргумент keep-generate-actionscript в компиляторе Flex.Я часто сокращаю его, чтобы «сохранить», и он отлично работает.

MXML маскирует многие сложности, которые происходят за кулисами.

Надеюсь, что это поможет установить ваши рамки ожиданий.

Чтобы использовать класс FlexScript независимо от ActionScript Sprite внутри MX Flex-контейнера, вы должны иметь возможность использовать его, как и любой другойкласс, который вы создаете.Сначала импортируйте пространство имен в теге верхнего уровня вашего компонента:

myNamespace:xmlns="*"

Затем вы сможете использовать его следующим образом:

<myNamespace:QuizApp id="quizAppInstance" />

Если вы используетеFlex 4 Spark Container, вам нужно что-то, что реализует IVisualElement;который Спрайт не делает.Однако вы можете обернуть свой собственный класс внутри класса SpriteVisualElement без особых усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...