PDA

Просмотр полной версии : Прокликивается клип, а не должен


s3dworld
24.04.2012, 14:15
Всем доброго дня!

У меня есть клип Screen, а в него, через addChild(), включены ещё два клипа: ScreenMap и ScreenGUI. ScreenMap представляет из себя карту, которую можно двигать, если зажать кнопку мышки на карте. ScreenGUI включает в себя несколько спрайтов:


public var layerBottom:Sprite=new Sprite();
public var layerArrows:Sprite=new Sprite();
public var layerDrops:Sprite=new Sprite();
public var layerDialogs:Sprite=new Sprite();
public var layerTop:Sprite=new Sprite();


Все эти спрайты добавлены в контейнер ScreenGUI. В слой layerBottom я запихиваю интерфейс, который всё время показывается на экране. А вот в layerArrows я запихал стрелочку, которая лежит по центру экрана и всегда указывает направление к определённому объекту (к главному герою). Так вот, когда я тыкаю в центре экрана мышкой (получается что тыкаю на эту стрелочку) и вожу мышкой (то есть рассчитываю что буду перемещать карту), то карта не перемещается. Однако для объекта стрелки я для всех её символов задал свойство mouseEnable равное false.


package d.game.screen.screenGUI
{
import d.game.screen.ScreenObject;
import flash.display.Bitmap;
import flash.display.MovieClip;

public class GUIArrow extends ScreenWindow
{
private var angle:Number=0;

public var arrow:MovieClip=null;

public function GUIArrow(_name:String,_parent:ScreenObject)
{
super(_name,_parent,false,false,null);
swType=SW_TYPE_ARROW;
mouseEnabled=false;
arrow.mouseEnabled=false;

graphics.beginFill(0xFF0000);
graphics.drawRect(0,0,50,50);
graphics.endFill();

if(arrow.numChildren==1 && arrow.getChildAt(0) is Bitmap)
{
(arrow.getChildAt(0) as Bitmap).smoothing=true;
}
}

public function setAngle(_angle:Number):void
{
angle=_angle;
rotation=angle;
}

public function getAngle():Number
{
return angle;
}

}

}


Тогда почему я не могу через стрелку докричаться до карты?

bublic_bicubic
24.04.2012, 14:37
Все дело в том, что событие схватывает ScreenGUI и layerArrows
ScreenGUI.mouseEnabled = false;
layerArrows.mouseEnabled = false;
// Если все объекты в layerArrows не должны "прокликиваться", то просто:
layerArrows.mouseChildren = false;
// иначе для GUIArrow
guiArrow.mouseEnabled = false;
guiArrow.mouseChildren = false;

s3dworld
24.04.2012, 14:50
bublic_bicubic
Спасибо! Всё работает.