按钮创建的sprite类想要将Event.trigger添加到另一个屏幕类中的那个按钮

时间:2014-07-02 09:27:45

标签: actionscript-3 flash-builder starling-framework

public class MyQuad extends Sprite
{
    public var quad:Quad;
    private var lbl:Label;
    public function MyQuad(lbl1:String,quadx:int,quady:int,lblx:int,lbly:int,btnx,btny)
    {
        super();
        quad=new Quad(100,100,Color.WHITE);
        this.addChild(quad);
        quad.width=100;
        quad.height=75;
        quad.x=quadx;
        quad.y=quady;

        lbl=new Label();
        lbl.text=lbl1;
        lbl.x=lblx;
        lbl.y=lbly;         
        this.addChild(lbl);

        var btn:Button=new Button(Assets.getTexture("Add"));
        btn.width=30;
        btn.height=30;
        btn.x=btnx;
        btn.y=btny;
        this.addChild(btn);         
    }
}

我有一个类sprite,它包含许多显示对象(四边形,标签,按钮)。我将这个类称为另一个扩展screen的类。在扩展屏幕的类中,我想在sprite类的按钮中添加一个触发器事件。如何调用该按钮或该按钮的触发事件?

1 个答案:

答案 0 :(得分:0)

您应该公开访问该按钮。有几种方法可以做到这一点,但最直接的方法是按照你已经完成变量quad的方式来做。

例如:

public class MyQuad extends Sprite
{
    // ... other class variable definitions
    public var btn:Button;

    public function MyQuad(lbl1:String,quadx:int,quady:int,lblx:int,lbly:int,btnx,btny)
    {
        super();
        // Set up your other items
        btn = new Button(Assets.getTexture("Add"));
        // Set the properties on your Button as usual
    }
}

由于您现在已将btn定义为班级中的public var,现在可以通过引用此类的实例来公开访问。

例如:

var myQuad:MyQuad = new MyQuad(...);
myQuad.btn.addEventListener(Event.TRIGGERED, onButtonTriggered);

function onButtonTriggered(e:Event):void {
    // Handle button triggered event
}