Форум 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=158096)

Dragon rideR 15.06.2011 11:47

Как избавиться от прозрачного фона картинки?
 
Вложений: 1
Подскажите пожалуйста, загружаю swf в нем только png картинка с прозрачным фоном, несколько таких флэшек загружаю в один контейнер.
Затем нужно обработать MOUSE_DOWN для каждого из клипов, но есть проблема обработчик назначается на весь квадрат клипа, а не только на часть с графикой. И получается что клип который ниже по уровню даже если и находится за прозрачной частью более высокого клипа не получает события down.
Как это можно побороть?
Вложение 26699
Код AS3:

var _picture:Loader = new Loader();
_picture.contentLoaderInfo.addEventListener(Event.INIT, onLoadMebel);
addChild(_picture);
_picture.load(new URLRequest(Params.server_url + "graf/mebel/" + _pic));
//затем
public function onLoadMebel(e:Event)
{
_picture.addEventListener(MouseEvent.MOUSE_DOWN, onDown, false, 0, true);
e.target.content.removeEventListener(Event.INIT, onLoadMebel);
}


dimarik 15.06.2011 12:11

InteractivePNG

etc 15.06.2011 12:14

http://blog.mosessupposes.com/?p=40

_sestra_ 15.06.2011 12:54

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

Код AS3:

cont.addEventListener(MouseEvent.MOUSE_MOVE, check);
function check (event:MouseEvent):void
{
        if (bmp.bitmapData.getPixel32(bmp.mouseX, bmp.mouseY))
                trace('MOUSE_OVER');
        else
                trace('MOUSE_OUT');
}
// где
// cont = DisplayObject
// bmp = Bitmap лежащий в cont


derhab 15.06.2011 21:47

Цитата:

Сообщение от _sestra_ (Сообщение 1003854)
// где
// cont = DisplayObject
// bmp = Bitmap лежащий в cont

в таком случае забыли добавить, что в библиотеке картинке нужно прописать класс расширяющий BitmapData, иначе флэш интерпретирует ее как шейп

toFL 15.06.2011 22:47

Цитата:

Сообщение от derhab (Сообщение 1003981)
в таком случае забыли добавить, что в библиотеке картинке нужно прописать класс расширяющий BitmapData, иначе флэш интерпретирует ее как шейп

В данном случае, написано "Bitmap" это не может означать, что я подразумевал "Shape". К слову, там много подобных нюансов.

//от _sestra_

dimarik 15.06.2011 23:22

X-No-Archive: yes

Речь шла о BitmapData, а не о том как его интерпретирует Flash IDE.

/*
ot brat [x]
*/

derhab 16.06.2011 01:23

я исходил из конкретной ситуации
у нас загружается свфка с пнг картинкой на сцене, надо работать с этим объектом
если ее просто доставать через getChildAt, то в трейсе будет [object Shape]
но если прописать этой пнг картинке в библиотеке класс, то будет уже [object Bitmap] и тогда можно будет работать с битмапдатой

dimarik 16.06.2011 09:55

derhab, безусловно, да. Один вопрос. Одна тема.

Dragon rideR 16.06.2011 10:26

Спасибо большое всем, разобрался!
Вот как я сделал:
1. расширил мой класс от InteractivePNG
2. в область видимости добавляю не весь Loader, а только картинку из подгружаемого клипа
Код AS3:

public function onLoadMebel(e:Event)
                {
                        addChild(e.target.content.getChildAt(0));
                }

и все заработало как нужно )


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

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