简体   繁体   English

Action Script 3.0中的呼叫按钮

[英]Calling button in Action Script 3.0

I am trying to make button panel. 我正在尝试制作按钮面板。 each button have two type btn_home and btn_home_white I am trying to reach those buttons.It is work if I write for each button their own methods like 每个按钮有两种类型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);

}

But I have 10 buttons as btn_buttonname and btn_buttonname_white . 但是我有10个按钮,分别是btn_buttonname和btn_buttonname_white。 I tryed to create Event listener on stage for all.It works for firts type buttons btn_buttonname but How can I get second type buttons? 我试图在舞台上为所有人创建事件侦听器,它适用于flts类型的按钮btn_buttonname,但是如何获得第二类型的按钮呢? I tryed e.target["_white"] but it does not work . 我尝试了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);

}

EDIT: I made it work as Daniel Carvalho sad adding for each buttons event listener.Now it works but if I move out mouse on button to other button previous button does not turn original form . 编辑:我让丹尼尔·卡瓦略(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;


    };

}
};

Your e.target should work, though you don't (as far as I can see) need the [_"white"] after e.target for your _white buttons. 您的e.target应该可以工作,尽管您(据我所知)不需要在_white按钮的e.target之后使用[_"white"] The reason the e.targets aren't working is because you're just adding event listeners to the stage, and not the individual buttons. e.targets不起作用的原因是因为您只是在舞台上添加了事件侦听器,而不是单个按钮。

I see two choices (perhaps there are others): manually go through writing event listeners for each button, or put all the buttons that will use the overEffect function into one Array, and all the buttons using the outEffect function into another Array. 我看到两个选择(也许还有其他选择):手动为每个按钮编写事件侦听器,或者将将使用overEffect函数的所有按钮放入一个Array,并将所有使用outEffect函数的按钮放入另一个Array。

Then create two for loops, and go through those Arrays adding the event listeners to each child of the array. 然后创建两个for循环,遍历这些Array,将事件侦听器添加到该数组的每个子级。 Your e.target code should work at that point. 此时您的e.target代码应该可以正常工作。

Let me know if you have any trouble with that, hope it helps. 让我知道您是否对此有任何疑问,希望对您有所帮助。

debu 德布

Here is a quick example that may help you: 这是一个可以帮助您的快速示例:

http://wonderfl.net/c/vhay 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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM