【问题标题】:Calling button in Action Script 3.0Action Script 3.0 中的调用按钮
【发布时间】:2010-06-17 23:29:57
【问题描述】:

我正在尝试制作按钮面板。每个按钮都有两种类型 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;


    };

}
};

【问题讨论】:

    标签: actionscript-3 button


    【解决方案1】:

    您的 e.target 应该可以工作,尽管您不需要(据我所知)在 e.target 之后为您的 _white 按钮添加 [_"white"]。 e.targets 不起作用的原因是因为您只是将事件侦听器添加到舞台,而不是单个按钮。

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

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

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

    debu

    【讨论】:

    • 我同意这一点,但实际上,我建议只为每个按钮添加事件侦听器。只有10个按钮,所以真的没必要让它变得更复杂。非常像您的第一个代码块 Meko、buttonname.addEventListener 等...
    • 是的,我同意,对这么多对象使用数组可能有点过头了。如果您使用的数量超过 10 个,则会变得更加简洁。
    【解决方案2】:

    这是一个可能对您有所帮助的简单示例:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多