需要一个物体变得无法点击'某些物体背后。 As3 Flash Cs4

时间:2015-06-05 16:53:28

标签: actionscript-3 flash hide target

如何制作可点击的动画片段'隐藏'在另一个对象后面例如..我有一个兔子电影剪辑 - 他是可点击的 - 当他走在一棵树(MC)后面时,他需要躲在那棵树后面。

此刻,如果我点击树 - 鼠标点击似乎完全忽略了树,我仍然可以点击看不见的兔子。

-(int) getRandomValueBetween:(int)lowerBound and:(int)upperBound
{
  int rndValue = lowerBound + arc4random() % (upperBound - lowerBound);
    return rndValue;
}

我尝试将其添加到树mc中,以查看当它移动到树上时是否可以杀死鼠标。

import java.sql.*;

public class UpdateCar { 
   public static void updateCarNum (int carNo, int empNo)
     throws SQLException {

     Connection con=null;
     PreparedStatement pstmt=null;

     try {
          con = DriverManager.getConnection(
            "jdbc:default:connection");

          pstmt= con.prepareStatement("UPDATE EMPLOYEES " +
                                 "SET CAR_NUMBER = ? " +                          
                                 "WHERE EMPLOYEE_NUMBER = " + empNo);


          pstmt.setInt(2, empNo);
          pstmt.executeUpdate();
     }
    finally {
         if (pstmt != null) pstmt.close();
     }
   }
}

但是,它并不理想。如果它落在舞台上的另一个对象后面,我真的需要一个可点击的对象来隐藏它。因此,如果他被隐藏了一半,我点击仍然显示的MC的部分,它将点击..它没有工作。

1 个答案:

答案 0 :(得分:1)

首先,不需要使用hitTest代码来确定点击的内容。您可以使用鼠标事件的.target属性来解决这个问题 - 这也将解决您知道树被点击还是兔子的问题。

例如:

function clickHandler(event:MouseEvent):void {    
    if (event.target == RabbitG1_mc){
        //.....do you stuff

    if (event.target == RabbitG2_mc){

现在,有一点需要指出的是,事件的.target也可能是兔子的子对象(如果你的兔子MC里面有其他物体)。所以为了确保它是一致的,你可以在初始化兔子时做这样的事情:

RabbitG1_mc.mouseChildren = false;
RabbitG2_mc.mouseChildren = false;

或者,您可以直接向兔子添加鼠标事件侦听器,而不是在舞台上添加一个可以捕获所有内容的侦听器。这样,如果对象(树)位于它们前面(并且启用了鼠标),则click事件将在树上而不是兔子上发送,并且clickHandler不会运行。

RabbitG1_mc.addEventListener(MouseEvent.CLICK, clickHandler);
RabbitG2_mc.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent):void {
    //event.currentTarget is a reference to what you attached the listener to
    switch(event.currrentTarget){
        case RabbitG1_mc: 
           //..do your code
           break;
        case RabbitG2_mc: 
           //..do your code
           break;
    }
}