Flex应用程序的代码隐藏

时间:2015-04-07 20:21:09

标签: actionscript-3 flash flex

我正在研究Flex项目,并且在将代码隐藏“连接”到mxml文件时遇到了问题(它实际上在之前的另一个项目中有效)。这两个文件都在默认包中。

Hydw.mxml:

<?xml version="1.0" encoding="utf-8"?>
<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/mx" minWidth="955" minHeight="600" xmlns="*">

    <s:TextArea id="txt_log" x="34" y="171" width="225" height="217"/>
</s:Application>

Hydw.as:

package  
{
    import flash.events.*;
    import flash.external.*;
    import flash.media.*;

    import mx.controls.TextArea;
    import mx.core.*;
    import mx.events.*;

    import spark.components.*;

    public class Hydw extends spark.components.Application
    {

        public var txt_log:spark.components.TextArea;

        public function Hydw ()
        {
            super();

            addEventListener(FlexEvent.CREATION_COMPLETE, this.creationCompleteHandler);
        }

        private function creationCompleteHandler(param1:FlexEvent) : void
        {
            WriteToLog("creationCompleteHandler");
        }

       public function WriteToLog(s:String) : void 
       {
           txt_log.text += s + "\n";
       }

我运行应用程序(发布后),我在TextArea中看不到任何内容。为什么? 顺便说一句,我现在在调试方面遇到了麻烦,所以我无法确切地知道故障在哪里。

2 个答案:

答案 0 :(得分:2)

显然它不起作用。需要在ActionScript和mxml文件中进行一些更改。

首先:从ActionScript文件中删除包和类,如:

import mx.events.FlexEvent;

public function creationCompleteHandler(param1:FlexEvent) : void
{
    WriteToLog("creationCompleteHandler");
}

public function WriteToLog(s:String) : void 
{
    txt_log.text += s + "\n";
}

因为它位于默认包中,所以不需要定义包和类。

第二名:

从文件中删除public var txt_log:spark.components.TextArea;。因为它会在mxml文件中将txt_log与textArea的id冲突。

<强>第三

从文件中删除addEventListener(FlexEvent.CREATION_COMPLETE, this.creationCompleteHandler);并在mxml文件中提供创建完成事件。像:

<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/mx" minWidth="955" minHeight="600"
               creationComplete="creationCompleteHandler(event)">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script source="Hydw.as" />

        <s:TextArea id="txt_log" x="34" y="171" width="225" height="217"/>
</s:Application>

另一件事是你忘记在mxml中包含文件。像:

<fx:Script source="Hydw.as" />

希望您理解并帮助前进。

答案 1 :(得分:1)

这就是你想要的

<强> Hydw.mxml

<?xml version="1.0" encoding="utf-8"?>
<abstract:Hydw xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               xmlns:abstract="test.pack.abstract.*" 
               minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:TextArea id="txt_log" x="34" y="171" width="225" height="217"/>
</abstract:Hydw>

和你的 Hydw.as:

package test.pack.abstract
{
    import mx.events.FlexEvent;

    import spark.components.Application;
    import spark.components.TextArea;

    [Bindable]
    public class Hydw extends Application
    {

        public var txt_log:TextArea;

        public function Hydw()
        {
            super();
            addEventListener(FlexEvent.CREATION_COMPLETE, init);
        }

        public function init(evt:FlexEvent):void
        {


        }

    }
}

要在 .as 类中使用的 .mxml 代码中使用的任何可视组件 必须在 .as 类中声明为公共绑定变量,或者只需将 .as 类声明为 [Bindable]

全部