BitMap Eventlistener не работает

Я пытаюсь добавить прослушиватель событий в свой BitMap. Tile расширяет gameProps, который расширяет BitMap. Я пытаюсь использовать addEventListener. Это не работает. но в документах Adobe говорится, что у Bitmap есть объект addEventListener.

 package {
            import flash.display.BitmapData;
            import flash.events.*;
            import flash.events.MouseEvent;
            import flash.geom.Rectangle;
            import flash.geom.Point;

            public class Tile extends gameProps {

                public var tileNum:Number = 0;


                public function Tile(tileNumber:Number):void
                {
                    tileNum = tileNumber;           
                    addEventListener(MouseEvent.MOUSE_OVER, respond);
                }


                public function respond(e:MouseEvent):void
                {   trace("HELLO");             
                }

            }   
        }

person numerical25    schedule 01.01.2010    source источник


Ответы (1)


Класс Bitmap расширяет DisplayObject, а не InteractiveObject, и поэтому не может получать события мыши. Попробуйте обернуть растровый объект в подклассе Sprite. Что-то вроде этого (псевдокод):

public class Image extends Sprite
{
     var bitmap:Bitmap;

     public function Image()
     {
         bitmap = new Bitmap();
         addChild( bitmap );
     }
}

Документы InteractiveObject: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/InteractiveObject.html

person JeremyFromEarth    schedule 01.01.2010
comment
О, я просматривал документы, и там сказано, что он унаследовал EventDispatcher, так что плюс он показал, что одним из его методов является addEventlistner. Не уверен, почему. Но я стараюсь быть максимально легким. Я выкладываю плитку и использую спрайты, что замедляет прокрутку. Есть ли лучшее решение ? - person numerical25; 01.01.2010
comment
@numerical25: Продолжайте читать документацию, и вы увидите, что то, что что-то является EventDispatcher, не означает, что оно реагирует на события мыши. Все экранные объекты являются диспетчерами событий, чтобы иметь возможность отправлять такие события, как ADDED_TO_STAGE и REMOVED_FROM STAGE. - person richardolsson; 01.01.2010
comment
да, но он также показал addeventlistner как метод livedocs.adobe.com /flash/9.0/ActionScriptLangRefV3/flash/ . не говоря, что вы, ребята, не правы. Я полностью согласен. но меня это немного сбило с толку. но спасибо за вашу помощь. Я очень ценю это. - person numerical25; 03.01.2010
comment
То, что у чего-то есть метод addEventListener(), не означает, что вы можете добавить к нему прослушиватели мыши. Подумайте об объекте SoundChannel, который воспроизводит звук. Невозможно напрямую щелкнуть звук, хотя вы можете добавить к нему прослушиватели событий. Существует три типа событий, которые вы можете прослушивать в объекте SoundChannel: ACTIVATE, DEACTIVATE и SOUND_COMPLETE. Вы можете добавить прослушиватели для этих трех типов событий, потому что их отправляет объект SoundChannel. Класс Bitmap не отправляет никаких событий мыши. Он отправляет другие события, унаследованные от его суперкласса. полезный? - person JeremyFromEarth; 03.01.2010