如何在 flex4/MXML/Spark 中包含来自外部文件的 actionscript 函数?
How to include an actionscript function from an external file in flex4/MXML/Spark?
事实证明,在嵌入式 <fx:Script><![CDATA[
中声明 class 是不可能的,因此我需要将动作脚本代码放入并包含在外部源文件中。错误被注释掉
<?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()
不需要在 class 中,如您所见,在 class 之外。但它需要使用自定义 class.
那么如何从 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 class,它只有一个静态函数,我们可以在不实例化的情况下调用它。
此外 - 只要我们在包外定义它,我们就可以添加更多 class 定义,这些定义对 Dummy class.
是可见的
事实证明,在嵌入式 <fx:Script><![CDATA[
中声明 class 是不可能的,因此我需要将动作脚本代码放入并包含在外部源文件中。错误被注释掉
<?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()
不需要在 class 中,如您所见,在 class 之外。但它需要使用自定义 class.
那么如何从 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 class,它只有一个静态函数,我们可以在不实例化的情况下调用它。 此外 - 只要我们在包外定义它,我们就可以添加更多 class 定义,这些定义对 Dummy class.
是可见的