【问题标题】:AS3 Show and hide movieclip/image when button/mc is clickedAS3 单击按钮/mc 时显示和隐藏影片剪辑/图像
【发布时间】:2014-12-18 10:13:51
【问题描述】:

我想做这样的http://www.bakedbymelissa.com/checkout/CustomizerCreator.aspx

现在我有正方形(square1,square2,square3,square4)作为纸杯蛋糕和圆圈(circle1,circle2,circle3,circle4)作为按钮。如果我点击circle1square1 应该会出现等等。 AS 有一个单独的层,形状都在一个层中。我将正方形放在彼此的顶部,但问题是,当我单击按钮时,正方形会显示出来,但实际上看不到它,因为它位于其上方的正方形下方。你如何做到这一点,以使相应的方块出现,而前一个出现的方块消失?您知道的任何可以解决问题的替代方法都可以。

my stage looks like this

AS3:

import flash.display.MovieClip; 
import flash.events.Event;  
import flash.events.MouseEvent;  

import fl.transitions.Tween;  
import fl.transitions.TweenEvent;  
import fl.transitions.easing.*;  

var fadeIn:Tween; 

var thisCircle:MovieClip; 
var thisSquare:MovieClip; 

var circles:Array = new Array(circle1,circle2,circle3,circle4); 
var squares:Array = new Array(square1,square2,square3,square4); 

for(var i:Number = 0; i < circles.length; i++) 
{ 
 thisCircle = circles[i]; 
 thisCircle.buttonMode = true; 
 thisCircle.id = i; 
 thisCircle.addEventListener(MouseEvent.CLICK, doFadeIn); 

 thisSquare = squares[i]; 
 thisSquare.alpha = 0; 
} 

function doFadeIn(e:MouseEvent):void  
{ 
 e.currentTarget.mouseEnabled = false; 
 trace(e.currentTarget.name + " is disabled while " + squares[e.currentTarget.id].name + " tweens in."); 
 fadeIn = new Tween(squares[e.currentTarget.id],"alpha",None.easeNone,0,1,2.5,true);  
 fadeIn.addEventListener(TweenEvent.MOTION_FINISH,enableButton(e.currentTarget));  
}  

function enableButton(thisButton:Object):Function 
{ 
 return function(e:TweenEvent):void 
 { 
    thisButton.mouseEnabled = true; 
    trace(e.target.obj.name + " has finished fading in, "+ thisButton.name + " is now enabled again."); 
 }; 
}  

//感谢fruitbeard的代码。

【问题讨论】:

  • 与其拥有多个方形 MC,不如将它们全部放在一个 MC 中。在您的情况下,将每个方块放在自己的框架(1-4)上。然后,无需显示/隐藏一堆 MC,您只需告诉一个 MC gotoAndStop(x),其中 x 是您想要看到的帧。

标签: actionscript-3 flash movieclip


【解决方案1】:

我认为在您的代码中,您忘记了淡出当前方块,然后淡入新方块。

看看这段代码:

// to indicate the index of current active circle/square
var current:int = 0;
var fadeIn:Tween, fadeOut:Tween; 

var thisCircle:MovieClip; 
var thisSquare:MovieClip; 

var circles:Array = new Array(circle1, circle2, circle3, circle4); 
var squares:Array = new Array(square1, square2, square3, square4); 

for(var i:Number = 0; i < circles.length; i++) 
{ 
    thisCircle = circles[i]; 
    thisCircle.buttonMode = true; 
    thisCircle.id = i; 
    thisCircle.addEventListener(MouseEvent.CLICK, doFadeIn); 

    // keep the first square as visible
    if(i != current){
        thisSquare = squares[i]; 
        thisSquare.alpha = 0; 
    }
} 

function doFadeIn(e:MouseEvent):void  
{ 
    // if our button is the active one, exit
    if(current == e.currentTarget.id) return;

    // fade out current square
    fadeOut = new Tween(squares[current], "alpha", None.easeNone, 1, 0, 2.5, true);     

    // fade in the new active square
    fadeIn = new Tween(squares[e.currentTarget.id], "alpha", None.easeNone, 0, 1, 2.5, true);  

    current = e.currentTarget.id;
}  

你可以看到这段代码在here工作。

希望对你有帮助。

【讨论】:

  • 这确实成功了!谢谢!你现在救了我。现在我要继续我的下一个问题,保存在数据库中选择的内容,就像在订购纸杯蛋糕时一样。你能建议怎么做吗?
  • @kim 要将数据保存在数据库中,您可以使用URLLoader 发送它,例如,看看here
  • 谢谢..发布了一个新问题。也许你可以帮忙。 ^^
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多