PDA

Просмотр полной версии : проблемма: макса для custom-курсора


Denis Davidov
17.05.2008, 02:50
Всем здраствуйте.

Не могу обойти следующие грабли:
нарисовал курсор в фотошопе (ч/б, даже еще хуже - 1 бит).
из него сделал маску - инвертировал, чуток подправил и хочу использовать во флеше.
Когда курсор и маску распологаю в слоях (в качестве image), делаю mask, ничего не происходит.
Маска точно состоит только из белого и черного...

Нашел во флеше (в разделе с описанием как сделать маску):
Place a filled shape, text, or an instance of a symbol on the mask layer. Flash ignores bitmaps, gradients, transparency, colors, and line styles in a mask layer. Any filled area is completely transparent in the mask; any nonfilled area is opaque.

Неужели игнорирует битмапы????

Подскажите плиз как это подружить, наверно есть простая AS-функция маскирующая один имадж другим по яркости (тривиальная задача ведь)...

Спасибо.

Vertax
17.05.2008, 03:25
Не, во флеше маски определяются формой объекта. В данном случае для картинки (прозрачность не важна) форма - квадрат. Варианта по большому счету три:
1. Нарисовать маску во флеше.
2. (вариация первого) Трасировать картинку.
3. (Хардкорный) BitmapData и иже с ним.
Проще и лучше воспользоваться 1ым вариантом.

P.S. Какое отношение эта тема имеет к AS???

Denis Davidov
17.05.2008, 03:41
Спасибо.

А можно пожалуйста наброски AS для второго варианта?
Т.е. если я буду пробегаться по картинке, как к ней обращаться как к массиву пикселей? должно быть что-то типа mybitmap.GetColor(x,y)? и Size(mybitmap)?
И продолжении - как это рисовать? Опять же что-то типа movieclip.DrawPixel(x,y,color)?

Спасибо за помощь...

з.ы. Я думал есть какая-нибудь функция и т.д. чтобы это решить... видимо что-то типо плясок с Bitmap Data

Vertax
17.05.2008, 04:11
2ой вариант без AS. Это Modify->Bitmap->Trace Bitmap.
Ну еже ли уж хочешь по трудному пути, то лови пример:
import flash.display.BitmapData;

B1 = new BitmapData(MASK._width, MASK._height, true, 0x00FFFFFF);
MASK.attachBitmap(B1, 0);
B1.draw(MASK);

B2 = new BitmapData(MASKING._width, MASKING._height, true, 0x00FFFFFF);
MASKING.attachBitmap(B2, 0);
B2.draw(MASKING);

MASKING._visible = false;

for (var i = 0; i < MASK._width; i++)
{
for (var j = 0; j < MASK._height; j++)
{
if (B1.getPixel32(i, j) != 0) B1.setPixel32(i, j, B2.getPixel32(i + MASKING._x, j + MASKING._y));
}
}

Denis Davidov
17.05.2008, 11:21
Спасибо за код, понял что Modify->Bitmap->Trace Bitmap намного проще :)))
только почему-то не могу его применить к объектам в библиотеке, хм...
Если не разберусь, то будет программировать AS....

p-s- разобрался, работает, все ок :)