созданный кнопкой класс спрайтов хочет добавить событие.триггер к этой кнопке в другом классе экрана

#actionscript-3 #flash-builder #starling-framework

#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 , который содержит много объектов отображения (quad, label, button). Я вызываю этот класс в другом, который расширяется screen . В классе, который расширяет screen, я хочу добавить событие запуска к кнопке в классе sprite. Как я могу вызвать эту кнопку или событие запуска этой кнопки?

Комментарии:

1. По крайней мере, переменные должны быть видны классам, которые будут наследоваться. Вы также можете создать методы, которые будут переопределены.

Ответ №1:

Вы должны сделать кнопку общедоступной. Есть несколько способов сделать это, но самый простой — сделать это так, как вы уже сделали с переменной 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
}