-1

请我是 Flex 和 Actionscript 3 的新手,但我知道它是一种 OOP 语言,我来自 Java 背景。我有一个类可以帮助我检查我的 AIR 应用程序的用户是否具有 Internet 连接,当直接包含在我的 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 是否为真...

4

2 回答 2

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已定义...

于 2013-04-17T13:34:39.943 回答
0

将公共属性添加到 NetworkChecker 类

[Bindable]
public var available:Boolean = false;

然后

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

xml

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

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

以及更多:
您应该在构造函数中的监视器启动之前添加 eventListener

于 2013-04-19T23:19:36.853 回答