如何从MXML调用btn.as中的函数,是否可以在不创建btn实例的情况下调用函数?
main.mxml包含一个Spark按钮:
<s:Button text="Add Image"/>
btn.as是一个包:
package {
public class btn extends Sprite {
public function btn() {
}
public function addImage():void {
var im:Image = new Image("background.png");
addChild(im);
}
}
}
答案 0 :(得分:0)
你所追求的确实有点令人困惑,但我会试一试。
如何从MXML
调用btn.as中的函数
我将假设您想要在单击按钮时在btn组件的实例上调用addImage函数。你可以这样:
<s:Button text="Add Image" click="{btnInstance.addImage()}"/>
如果你想要别的东西,你必须详细说明。
是否可以在不创建btn实例的情况下调用函数?
是的,将其设为静态方法。像这样:
package {
public class btn extends Sprite {
public function btn() {
}
public static function addImage():void {
var im:Image = new Image("background.png");
addChild(im);
}
}
}
然后你可以像这样调用静态方法:
<s:Button text="Add Image" click="{btn.addImage()}"/>
需要注意的是,我不希望“addChild”在静态方法中做任何有用的事情。如果没有组件实例,则它不在显示列表中;并且永远不会显示您的新“孩子”。事实上,没有办法引用这个新孩子。我想你可以将一个容器传递给addImage函数并在那里添加孩子。从概念上讲是这样的:
public static function addImage(container:UIComponent):void {
var im:Image = new Image("background.png");
container.addChild(im);
}
我对这种方法有初步的保留意见,所以如果不完全理解用例,就不会推荐它。