Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Прокликивается клип, а не должен (http://www.flasher.ru/forum/showthread.php?t=178560)

s3dworld 24.04.2012 14:15

Прокликивается клип, а не должен
 
Всем доброго дня!

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

Код AS3:

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.

Код AS3:

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
Код AS3:

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
Спасибо! Всё работает.


Часовой пояс GMT +4, время: 00:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.