在 Actionscript3 中编写 MXML 代码

Posted

技术标签:

【中文标题】在 Actionscript3 中编写 MXML 代码【英文标题】:Write MXML Code in Actionscript3 【发布时间】:2015-12-22 03:28:27 【问题描述】:

我有以下 MXML 代码,但我需要从 Actionscript 运行它。我怎样才能在 AS 中写这个?非常感谢!!

<?xml version="1.0"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/halo"
        applicationComplete="applicationCompleteHandler()">

  <fx:Script>
    <![CDATA[

      private var bannerIntegration : BannerAd;

      public function applicationCompleteHandler():void
      
        Security.allowDomain("*");

        bannerIntegration = new BannerAd(banner);
      
    ]]>

  </fx:Script>
      <s:Image id="banner"  />
</s:Application>

【问题讨论】:

【参考方案1】:

这只是记忆,因此可能需要一些调整:

基本上你会创建一个普通的

class SpecialApplication extends Application

在您的 IDE 或 mxmlc 调用中,您选择 SpecialApplication 作为要构建的类。 在类中,您拥有现在拥有的属性:

private var bannerIntegration : BannerAd;
private var banner:Image;

对于您的示例,其他所有内容都很容易回答,但我确信这不是完整的应用程序,因此您应该阅读一些有关 Flex 生命周期的内容(请注意查看正确的内容:用于 Flex 3 的那个。 * 与 Flex 4 中的有点不同。*) 所以理想

override protected function createChildren():void

创建和添加 UI 元素:

if (image == null) 
    image = new Image();
    image.width = 300;
    image.hight = 250;
    addChild(image);
    bannerIntegration = new BannerAd(banner);

我不确定Security.allowDomain("*"); 是否需要一些特殊的时间,也许你也可以在createChildren() 内进行。 否则,您可以使用与上述脚本块中相同的方法(带有额外的event:FlexEvent 参数)来执行此调用。做吧

addEventListener(FlexEvent.CREATION_COMPLETE, applicationCompleteHandler)

在构造函数内部。

createChildren() 中的if 用于确保只创建一次 ui 元素。因为每次添加此组件时都会调用createChildren()。 (在 Application 中不是那么重要,但是使用 ActionScript 类创建组件的好习惯。

【讨论】:

以上是关于在 Actionscript3 中编写 MXML 代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flex 附加带有 ActionScript3 的 Sprite

在用 Actionscript 和 MXML 编写的 Flex 程序中调试内存泄漏的最佳方法是啥?

Actionscript 3 setStyle 不是一个函数

MXML 类初始化顺序

将actionscript 3中的xml文件中的值读取到组合框中

从 Flex - mxml(动作脚本)迁移到另一种技术