将Actionscript类集成到Flex中

时间:2011-09-16 20:28:59

标签: flex actionscript-3

我正在尝试学习Flex和Actionscript。我在Flash中找到了Moock测验示例,并希望将其转换为Flex应用程序。我试图理解actionscript和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 个答案:

答案 0 :(得分:3)

  

我试图理解actionscript之间的关系   和mxml。

MXML是一种ActionScript代码生成语言。当您编写MXML时,Flex编译器会将您的MXML文件转换为ActionScript类。您可以通过为Flex编译器指定“keep-generated-actionscript”参数来保存此生成的代码。我经常将它缩短为“保持”并且工作正常。

MXML掩盖了幕后发生的许多复杂性。

我希望这有助于设定你的期望框架。

要在MX Flex容器内使用“Flex不可知”ActionScript Sprite Class,您应该能够像创建其他任何类一样使用它。首先,在组件的顶级标记处导入名称空间:

myNamespace:xmlns="*"

然后你应该可以使用它,就像这样:

<myNamespace:QuizApp id="quizAppInstance" />

如果您使用的是Flex 4 Spark容器,则需要一些实现IVisualElement的东西;精灵没有。但是,您可以在SpriteVisualElement类中包装自己的类而不需要太多努力。