簡體   English   中英

如何在flex4 / MXML / Spark中從外部文件包含動作腳本功能?

[英]How to include an actionscript function from an external file in flex4/MXML/Spark?

事實證明,不可能在嵌入式<fx:Script><![CDATA[聲明類,因此我需要將actionscript代碼放入並包含在外部Sourcefile中。 錯誤已被注釋掉

<?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 
}

因此問題很簡單,但我找不到任何答案。 至少沒有用於帶有Spark的mxml。
send()不必在類中,並且您可以看到它在類之外。 但是它需要使用一個自定義類。

那么如何從URLRequest.as調用send()呢?

我也不太確定您要做什么,但這是一種可能的方法:

在與.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>

現在,我終於了解了您想做什么,我有了另一個想法-稍微復雜一點。

創建一個名為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)"/>

這里的竅門是,我們導入的Dummy類只有一個靜態函數,我們可以在不實例化的情況下調用它。 此外-只要在包之外定義它,就可以添加更多的類定義,這些定義對於Dummy類是可見的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM