如何从包括在FLEX4 / MXML /星火外部文件中的ActionScript函数?(How to

2019-10-30 04:04发布

事实证明,这是不可能的声明内嵌在类<fx:Script><![CDATA[所以它变成我需要把和包括外部的资源文件中的ActionScript代码。 该错误被注释掉

<?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="1955" minHeight="1600">
    <fx:Script source="URLRequest.as" />
    <s:layout>
        <s:BasicLayout />
    </s:layout>
    <s:Panel x="0" y="0" width="955" height="600" title="Bypass">
        <s:layout>
            <s:BasicLayout />
        </s:layout>
        <s:Label x="1" y="1" text="Please enter the ɢɪᴛ repository ʜᴛᴛᴘ ᴜʀʟ :"/>
        <s:TextInput x="224" y="1" width="726" id="txtName" text="http://ytrezq.sdfeu.org/flashredirect/?http"/>
        <s:Button x="1" y="12" label="ɢɪᴛ push !" click="send()"/> <!-- Undefined Method method error -->
    </s:Panel>
    <fx:Declarations>
    </fx:Declarations>
</s:Application>

在URLRequest.as:

final public class MyClass {
    // some stuff
}
public function send():void {
    var request:Myclass=new Myclass(txtName.text);
    // Some stuff with 
}

所以,问题很简单,但我无法找到答案的任何地方。 至少没有与星火MXML。
send()并不需要在一类,正如你所看到的是一个类外。 但它需要使用自定义的类。

所以,我怎么能调用send()从URLRequest.as?

Answer 1:

现在,我终于明白你想要做什么,我有另一个想法 - 这是一个比较复杂的。

创建一个名为Dummy.as文件以及与此填充:

package
{
    public class Dummy
    {
        public static function send(url:String):void
        {
            var request:Myclass=new Myclass(url);
        }
    }
}
class Myclass
{
    public function Myclass(inp:String)
    {
        trace(inp);
    }
}

同样,摆脱

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

并通过更换

<fx:Script>
    <![CDATA[
        import Dummy;
    ]]>
</fx:Script>

并最终取代

<s:Button x="1" y="12" label="ɢɪᴛ push !" click="send()"/>

<s:Button x="1" y="12" label="ɢɪᴛ push !" click="Dummy.send(txtName.text)"/>

这里的技巧是,我们进口,只是有一个静态的功能,我们可以在不实例调用虚拟类。 此外 - 只要我们把它定义包外,我们可以添加更多的类定义,这是在虚拟类可见。



Answer 2:

我也不太清楚你想要做什么,但这里有一个可能的方式:

创建在同一文件夹作为您的.mxml文件名为Myclass.as一个空文件,并插入这些行

package
{
    public class Myclass
    {
        public function Myclass(inp:String)
        {
            trace(inp);
        }
    }
}

现在,摆脱

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

并通过更换

<fx:Script>
    <![CDATA[
        public var request:Myclass;
    public function send():void {
        request=new Myclass(txtName.text);
    }
    ]]>
</fx:Script>


文章来源: How to include an actionscript function from an external file in flex4/MXML/Spark?