【问题标题】:Integrating Actionscript classes into Flex将 Actionscript 类集成到 Flex
【发布时间】:2011-09-16 20:28:58
【问题描述】:

我正在尝试学习 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
    }
}

【问题讨论】:

  • 你在 mxml 中的 creationComplete 上调用 init() 吗? creationComplete="init()"
  • 是的,在 WindowedApplication 标签中:

标签: apache-flex actionscript-3


【解决方案1】:

我正在尝试了解动作脚本之间的关系 和 mxml。

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

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

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

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

myNamespace:xmlns="*"

那么你应该可以使用它了,像这样:

<myNamespace:QuizApp id="quizAppInstance" />

如果您使用的是 Flex 4 Spark 容器,则需要实现 IVisualElement 的东西;雪碧没有。但是,您可以将自己的类封装在 SpriteVisualElement 类中,而无需付出太多努力。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多