【问题标题】:How do i re use this class in all my mxml components我如何在我的所有 mxml 组件中重新使用这个类
【发布时间】:2013-04-10 05:51:20
【问题描述】:

我是 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 是否为 true 或 false...

【问题讨论】:

  • 如何在 MXML 类中使用它?为什么相同的方法在 ActionScript 类中不起作用?
  • 只需创建该类的实例并存储对它的引用以防止垃圾收集:private var monitor:NetworkCheckerr; monitor = new NetworkCheckerr()
  • 谢谢,但在我的 mxml 中,我需要知道 event.target.available 是真还是假。我该怎么做?
  • 与您在已发布的代码中执行此操作的方式相同。
  • 一个代码 sn-p 真的很有帮助

标签: actionscript-3 apache-flex mxml


【解决方案1】:

将您的功能更改为:

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

【讨论】:

    【解决方案2】:

    将公共属性添加到 NetworkChecker 类

    [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}"/>
    

    还有更多:
    您应该在构造函数中的监视器开始之前添加 eventListener

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2010-12-08
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多