2010-04-10 6 views
3

Как установить растровое изображение в качестве кнопки, чтобы я мог применить к нему режим кнопки и материал события мыши, не добавляя растровое изображение в видеоклип?Растровое изображение как кнопка?

var bmpFull=new Bitmap(event.currentTarget.content.bitmapData); 
     bmpFull.smoothing=true; 
     bmpFull.name="photo"; 
     bmpFull.alpha=0; 

     //fullMC.buttonMode=true; 
     fullMC.addChild(bmpFull); 

ответ

7

К сожалению, объекты Bitmap не распространяются от класса InteractiveObject - то есть, они не» t (и не может легко получить) возможность получать события мыши.

Как указывалось антарой и Джереми Уайтом в предыдущем ответе, самым простым контейнером, который получает события мыши, является класс Sprite. Поэтому, если вы хотите иметь Bitmap получать события мыши, и не использование мувик, вы могли бы использовать Sprite:

var bmpFull:Bitmap = new Bitmap(event.currentTarget.content.bitmapData); 
bmpFull.smoothing = true; 
bmpFull.name = "photo"; 
bmpFull.alpha = 0; 

var bmpContainer:Sprite = new Sprite(); // can receive mouse events, for example: 
bmpContainer.addEventListener(MouseEvent.CLICK, clickHandler); 
bmpContainer.buttonMode = true; // this just makes it show the hand cursor, and is not necessary for the mouse events to work 
bmpContainer.addChild(bmpFull); 

На самом деле, я бы рекомендовал использовать Sprite, так как они более простые объекты чем MovieClips и, следовательно, не требуют столько памяти.

Теперь, если вы хотите сделать события мыши для рассылки Bitmap, не используя какой-либо контейнерный клип, вам, вероятно, потребуется написать собственное расширение класса Bitmap, у которого был собственный менеджер событий. Это было бы намного сложнее. Я настоятельно рекомендую использовать Sprite в качестве контейнера.

+0

Спасибо, у меня вопрос: И как вы получите «bmpFull.name» внутри функции «clickHandler»? 'trace (this.name)' не получает "фото" Любые идеи? Спасибо – Metafaniel

+1

Попробуйте установить 'bmpContainer.name =" photo "'. – ivanreese

3

buttonMode является собственностью Sprite

наследование видеоклипа идет как этот

MovieClip >> Sprite >> DisplayObjectContainer >> InteractiveObject >> DisplayObject >> EventDispatcher >> Object 

                  Bitmap >> DisplayObject >> EventDispatcher >> Object 
+1

Этот ответ нуждается в дополнительном пояснении: вам нужно поместить Bitmap в объект Sprite, чтобы получить доступ к событиям мыши. –

Смежные вопросы