需要一个对象成为 'unclickable' 落后于某些对象。 As3 闪光 Cs4
Need an object to become 'unclickable' behind certain objects. As3 Flash Cs4
如何在另一个对象后面制作可点击的动画片段 'hide'。例如.. 我有一个兔子电影片段 - 他是可点击的 - 当他走在一棵树后面时(MC)他需要躲在那棵树后面。
目前,如果我点击树 - 鼠标点击似乎完全忽略了树,我仍然可以点击看不见的兔子。
var HitCount:Number = 10;
var RabbitG1X:Number = 0;
var RabbitG1Y:Number = 0;
var RabbitG2X:Number = 0;
var RabbitG2Y:Number = 0;
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE, follow);
function follow(evt:MouseEvent)
{
Cursor_mc.x =mouseX;
Cursor_mc.y=mouseY;
}
stage.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void
{
if (Cursor_mc.hitTestObject(RabbitG1_mc))
{
trace ("you fed rabbit1 ");
RabbitG1_mc.x = RabbitG1X + 5000;
RabbitG1H_mc.x = RabbitG1X + 1271.85;
RabbitG1H_mc.y = RabbitG1Y + 184.05;
HitCount = HitCount -1;
Dec_txt.text = "" + HitCount + "";
}
if (Cursor_mc.hitTestObject(RabbitG2_mc))
{
trace ("you fed rabbit2 ");
RabbitG2_mc.x = RabbitG2X + 5000;
RabbitG2H_mc.x = RabbitG2X + 1271.85;
RabbitG2H_mc.y = RabbitG2Y + 184.05;
HitCount = HitCount -1;
Dec_txt.text = "" + HitCount + "";
}
if (HitCount ==0)
{
trace("You fed all the rabbits");
}
}
我尝试将其添加到树 mc 中,以查看是否可以在鼠标移过树时将其杀死。
Tree2MC.addEventListener(MouseEvent.CLICK, solid);
function solid(e:MouseEvent):void{
Tree2MC.mouseEnabled = false;
}
然而,这并不理想。如果它位于舞台上另一个对象的后面,我真的需要一个可点击的对象来隐藏它。所以如果他是半隐藏的并且我点击 MC 仍然显示的部分,它会点击..而且它没有用。
首先,不需要使用 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;
或者,您可以直接为兔子添加鼠标事件监听器,而不是在舞台上添加一个监听器来捕获所有内容。这样,如果一个对象(树)在它们前面(并且启用了鼠标),则单击事件将在树而不是兔子上调度,并且 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;
}
}
如何在另一个对象后面制作可点击的动画片段 'hide'。例如.. 我有一个兔子电影片段 - 他是可点击的 - 当他走在一棵树后面时(MC)他需要躲在那棵树后面。
目前,如果我点击树 - 鼠标点击似乎完全忽略了树,我仍然可以点击看不见的兔子。
var HitCount:Number = 10;
var RabbitG1X:Number = 0;
var RabbitG1Y:Number = 0;
var RabbitG2X:Number = 0;
var RabbitG2Y:Number = 0;
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE, follow);
function follow(evt:MouseEvent)
{
Cursor_mc.x =mouseX;
Cursor_mc.y=mouseY;
}
stage.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void
{
if (Cursor_mc.hitTestObject(RabbitG1_mc))
{
trace ("you fed rabbit1 ");
RabbitG1_mc.x = RabbitG1X + 5000;
RabbitG1H_mc.x = RabbitG1X + 1271.85;
RabbitG1H_mc.y = RabbitG1Y + 184.05;
HitCount = HitCount -1;
Dec_txt.text = "" + HitCount + "";
}
if (Cursor_mc.hitTestObject(RabbitG2_mc))
{
trace ("you fed rabbit2 ");
RabbitG2_mc.x = RabbitG2X + 5000;
RabbitG2H_mc.x = RabbitG2X + 1271.85;
RabbitG2H_mc.y = RabbitG2Y + 184.05;
HitCount = HitCount -1;
Dec_txt.text = "" + HitCount + "";
}
if (HitCount ==0)
{
trace("You fed all the rabbits");
}
}
我尝试将其添加到树 mc 中,以查看是否可以在鼠标移过树时将其杀死。
Tree2MC.addEventListener(MouseEvent.CLICK, solid);
function solid(e:MouseEvent):void{
Tree2MC.mouseEnabled = false;
}
然而,这并不理想。如果它位于舞台上另一个对象的后面,我真的需要一个可点击的对象来隐藏它。所以如果他是半隐藏的并且我点击 MC 仍然显示的部分,它会点击..而且它没有用。
首先,不需要使用 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;
或者,您可以直接为兔子添加鼠标事件监听器,而不是在舞台上添加一个监听器来捕获所有内容。这样,如果一个对象(树)在它们前面(并且启用了鼠标),则单击事件将在树而不是兔子上调度,并且 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;
}
}