在Action Script 3.0中调用按钮

时间:2010-06-17 23:29:57

标签: actionscript-3 button

我正在尝试制作按钮面板。每个按钮都有两个类型btn_home和btn_home_white我试图触及那些按钮。如果我为每个按钮编写自己的方法,那就好了。

btn_home.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_home_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);

   function overEffect(e:MouseEvent)
{
var myTweenHight:Tween = new Tween( btn_home,"height",Bounce.easeOut,25,0,3,true);

var myTweenHight2:Tween = new        Tween(btn_home_white,"height",Bounce.easeOut,0,25,3,true);
var myTweenAlpha:Tween = new Tween(btn_home_white,"alpha",Strong.easeOut,0,1,2,true);

}

function outEffect(e:MouseEvent)
{
var myTweenHight:Tween = new Tween btn_home,"height",Bounce.easeOut,0,25,3,true);

var myTweenHight2:Tween = new Tween(btn_home_white,"height",Bounce.easeOut,25,0,3,true);
var myTweenAlpha:Tween = new Tween(btn_home_white,"alpha",Strong.easeOut,1,0,2,true);

}

但我有10个按钮作为btn_buttonname和btn_buttonname_white。我尝试在舞台上为所有人创建事件监听器。它适用于第一类按钮btn_buttonname但是如何获得第二类按钮?我尝试e.target["_white"]但它不起作用。

stage.addEventListener(MouseEvent.MOUSE_OVER , overEffect);
stage.addEventListener(MouseEvent.MOUSE_OUT , outEffect);

function overEffect(e:MouseEvent)
{
var myTweenHight:Tween = new Tween(e.target,"height",Bounce.easeOut,25,0,3,true);
trace("height");
var myTweenHight2:Tween = new        Tween(e.target["_white"],"height",Bounce.easeOut,0,25,3,true);
var myTweenAlpha:Tween = new Tween(e.target["_white"],"alpha",Strong.easeOut,0,1,2,true);

}

function outEffect(e:MouseEvent)
{
var myTweenHight:Tween = new Tween(e.target,"height",Bounce.easeOut,0,25,3,true);

var myTweenHight2:Tween = new Tween(e.target["_white"],"height",Bounce.easeOut,25,0,3,true);
var myTweenAlpha:Tween = new Tween(e.target["_white"],"alpha",Strong.easeOut,1,0,2,true);

}

修改 我让Daniel Carvalho为每个按钮事件监听器添加了悲伤的功能。现在它可以正常工作,但如果我将按钮上的鼠标移到其他按钮上,则前一个按钮不会变成原始形式。

btn_home.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_home_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);
btn_contact.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_contact_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);
btn_menu.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_menu_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);
btn_restaurant.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_restaurant_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);
btn_rezervation.addEventListener(MouseEvent.MOUSE_OVER,overEffect);
btn_rezervation_white.addEventListener(MouseEvent.MOUSE_OUT,outEffect);
function overEffect(e:MouseEvent)
{
switch (e.target)
{
    case ( btn_home) :
        {
            var HomeTweenHight:Tween = new Tween(btn_home,"height",Bounce.easeOut,25,0,0.5,true);

            var HomeTweenHight2:Tween = new Tween(btn_home_white,"height",Bounce.easeOut,0,25,0.5,true);
            var HomeTweenAlpha:Tween = new Tween(btn_home_white,"alpha",Strong.easeOut,0,1,2,true);
            break;

        };
    case ( btn_contact) :
        {
            var ContactTweenHight:Tween = new Tween(btn_contact,"height",Bounce.easeOut,25,0,0.5,true);
            var ContactTweenHight2:Tween = new Tween(btn_contact_white,"height",Bounce.easeOut,0,25,0.5,true);
            var ContactTweenAlpha:Tween = new Tween(btn_contact_white,"alpha",Strong.easeOut,0,1,2,true);
            break;

        };
    case ( btn_menu) :
        {
            var MenuTweenHight:Tween = new Tween(btn_menu,"height",Bounce.easeOut,25,0,0.5,true);
            var MenuTweenHight2:Tween = new Tween(btn_menu_white,"height",Bounce.easeOut,0,25,0.5,true);
            var MenuTweenAlpha:Tween = new Tween(btn_menu_white,"alpha",Strong.easeOut,0,1,2,true);
            break;

        };
    case ( btn_restaurant) :
        {
            var RestourantTweenHight:Tween = new Tween(btn_restaurant,"height",Bounce.easeOut,25,0,0.5,true);
            var RestourantTweenHight2:Tween = new Tween(btn_restaurant_white,"height",Bounce.easeOut,0,25,0.5,true);
            var RestourantTweenAlpha:Tween = new Tween(btn_restaurant_white,"alpha",Strong.easeOut,0,1,2,true);
            break;

        };
    case (btn_rezervation) :
        {
            var RezervationTweenHight:Tween = new Tween(btn_rezervation,"height",Bounce.easeOut,25,0,0.5,true);
            var RezervationTweenHight2:Tween = new Tween(btn_rezervation_white,"height",Bounce.easeOut,0,25,0.5,true);
            var RezervationTweenAlpha:Tween = new Tween(btn_rezervation_white,"alpha",Strong.easeOut,0,1,2,true);
            break;

    }
}
};

function outEffect(e:MouseEvent)
{
switch (e.target)
{

    case (btn_home_white) :
        {
            var HomeTweenHight:Tween = new Tween(btn_home,"height",Bounce.easeOut,0,25,0.5,true);
            var HomeTweenHight2:Tween = new Tween(btn_home_white,"height",Bounce.easeOut,25,0,0.5,true);
            var HomeTweenAlpha:Tween = new Tween(btn_home_white,"alpha",Strong.easeOut,1,0,2,true);
            break;


        };
    case (btn_contact_white) :
        {
            var ContactTweenHight:Tween = new Tween(btn_contact,"height",Bounce.easeOut,0,25,0.5,true);
            var ContactTweenHight2:Tween = new Tween(btn_contact_white,"height",Bounce.easeOut,25,0,0.5,true);
            var ContactTweenAlpha:Tween = new Tween(btn_contact_white,"alpha",Strong.easeOut,1,0,2,true);
            break;


    }
    case (btn_menu_white) :
        {
            var MenuTweenHight:Tween = new Tween(btn_menu,"height",Bounce.easeOut,0,25,0.5,true);
            var MenuTweenHight2:Tween = new Tween(btn_menu_white,"height",Bounce.easeOut,25,0,0.5,true);
            var MenuTweenAlpha:Tween = new Tween(btn_menu_white,"alpha",Strong.easeOut,1,0,2,true);
            break;


    };
    case (btn_restaurant_white) :
        {
            var RestourantTweenHight:Tween = new Tween(btn_restaurant,"height",Bounce.easeOut,0,25,0.5,true);
            var RestourantTweenHight2:Tween = new Tween(btn_restaurant_white,"height",Bounce.easeOut,25,0,0.5,true);
            var RestourantTweenAlpha:Tween = new Tween(btn_restaurant_white,"alpha",Strong.easeOut,1,0,2,true);
            break;


    };
    case (btn_rezervation_white) :
        {
            var RezervationTweenHight:Tween = new Tween(btn_rezervation,"height",Bounce.easeOut,0,25,0.5,true);
            var RezervationTweenHight2:Tween = new Tween(btn_rezervation_white,"height",Bounce.easeOut,25,0,0.5,true);
            var RezervationTweenAlpha:Tween = new Tween(btn_rezervation_white,"alpha",Strong.easeOut,1,0,2,true);
            break;


    };

}
};

2 个答案:

答案 0 :(得分:1)

你的e.target应该有用,但是你没有(据我所知)在你的[_"white"]按钮的e.target之后需要_white。 e.targets不工作的原因是因为你只是在舞台上添加事件监听器,而不是单个按钮。

我看到两个选择(也许还有其他选择):手动完成为每个按钮编写事件监听器,或者将使用overEffect函数的所有按钮放入一个Array中,并将所有使用outEffect函数的按钮放入另一个Array中。

然后创建两个for循环,并通过这些Arrays将事件侦听器添加到数组的每个子节点。您的e.target代码应该在那时工作。

如果您遇到任何问题,请告诉我,希望有所帮助。

得不

答案 1 :(得分:0)

以下是一个可以帮助您的简单示例:

http://wonderfl.net/c/vhay

function createButton():MovieClip{
    var button:MovieClip=new MovieClip();
    var stateA:Shape=new Shape();
    var g:Graphics = stateA.graphics;
    g.beginFill(0xFF0000);
    g.drawRect(0, 0, 10, 10);
    g.endFill();
    button["stateA"] = stateA;
    button.addChild(stateA);
    var stateB:Shape=new Shape();
    g = stateB.graphics;
    g.beginFill(0x00FF00);
    g.drawRect(0, 0, 10, 10);
    g.endFill();
    button["stateB"] = stateB;
    button.addChild(stateB);
    stateB.visible=false;
    return button;
}
var nbButtons:int=10;
var buttons:Array=[];
var selectButton:MovieClip;
for (var i : int = 0;i < nbButtons; i++) {
    var button:MovieClip=createButton();
    addChild(button);
    button.y=10;
    button.x=i*12+10;
    addChild(button);
    buttons.push(button);
    setUpButton(button);
}
function setUpButton(button:MovieClip):void {
    button.buttonMode=true;
    button.addEventListener(MouseEvent.ROLL_OVER, buttonRollOver);
    button.addEventListener(MouseEvent.ROLL_OUT, buttonRollOut);
    button.addEventListener(MouseEvent.CLICK, buttonClick);
}
function buttonClick(e:Event):void{
    switchButtonStateToNotSelected();
    switchButtonStateToSelected(e.currentTarget as MovieClip);
}
function switchButtonStateToSelected(button:MovieClip):void{
    button.buttonMode=true;
    button.removeEventListener(MouseEvent.ROLL_OVER, buttonRollOver);
    button.removeEventListener(MouseEvent.ROLL_OUT, buttonRollOut);
    button.removeEventListener(MouseEvent.CLICK, buttonClick);
    button["stateA"]["visible"]=false;
    button["stateB"]["visible"]=true;
    selectButton=button;
}
function switchButtonStateToNotSelected():void{
    if(selectButton) {
        setUpButton(selectButton);
        selectButton["stateA"]["visible"]=true;
        selectButton["stateB"]["visible"]=false;
        selectButton=null;
    }
}
function buttonRollOver(e:Event):void{
    e.currentTarget["stateA"]["visible"]=false;
    e.currentTarget["stateB"]["visible"]=true;
}
function buttonRollOut(e:Event):void{
    e.currentTarget["stateA"]["visible"]=true;
    e.currentTarget["stateB"]["visible"]=false;
}