我如何在所有mxml组件中使用此类

时间:2013-04-17 12:50:01

标签: actionscript-3 flex mxml

请问我是Flex和Actionscript 3的新手,但我知道它是一种OOP语言,我来自Java背景。我有一个类可以帮助我检查我的AIR应用程序的用户是否具有互联网连接,它直接包含在我的mxml类中时效果很好。想知道是否可以将它插入到actionscript类中,并在我希望的任何mxml组件类中重用它。

修改

package components
{
    import air.net.URLMonitor;

    import flash.events.StatusEvent;
    import flash.net.*;

    public class NetworkChecker
    {
        private var monitor:URLMonitor;
        private var myURL = new URLRequest("http://www.adobe.com");

        public function NetworkChecker()
        {
            myURL.method = "HEAD";
            monitor = new URLMonitor(myURL);
            monitor.start();
            monitor.addEventListener(StatusEvent.STATUS, on_Connection);
        }
        public function on_Connection(event:StatusEvent):void
        {
            if(event.target.available == true)
            {
                trace("Internet Connection is available");
            }
            else
            {
                trace("No internet Connection");
            }
        }
    }
}

请问如何从mxml组件调用此代码?当我将它直接包含在fx:Script标记中时,它运行良好。我需要知道我的mxml组件中的event.target.available是否为false ...

2 个答案:

答案 0 :(得分:0)

将您的功能更改为:

    public function on_Connection(event:StatusEvent):boolean
    {
        if(event.target.available == true)
        {
            trace("Internet Connection is available");
            return true;
        }
        else
        {
            trace("No internet Connection");
            return false;
        }
    }

或更好:

    public function on_Connection(event:StatusEvent):boolean
    {
        return event.target.available;
    }

注意:这假定event.target.available已定义...

答案 1 :(得分:0)

将公共属性添加到Network Checker类

[Bindable]
public var available:Boolean = false;

然后

public function on_Connection(event:StatusEvent):void
        {           
           this.available = event.target.available;
        }

MXML

<fx:Declarations>
    <components:NetworkChecker id="checker"/>
</fx:Declarations>

<s:Button label="Button" enabled="{checker.available}"/>

以及更多:
您应该在构造函数

中的monitor start之前添加eventListener