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

Wolsh 17.02.2012 00:55

Возможно, курсор так реализован, что из предоставленных битмап берется битмапдата, а на нее то альфа конечно не влияет) Тогда либо перерисовывать сами картинки в редакторе, либо обрабатывать битмапдату, уменьшая непрозрачность пикселов.

Добавлено через 4 минуты
Но вообще, если метод HardCodera не сработал, то действительно странно.

HardCoder 17.02.2012 01:24

alex001, да, а почему нельзя создать картинки изначально полупрозрачными?

alex001 17.02.2012 18:34

дело в том что alpha зависит от растояния курсора от одого объекта, и наверное легче все-таки сделать программно, чем делать 101 изображение (включая полную прозрачность), хотя если другого не придумаь, придется так. не знаете с помощью какой программы можно сделать это? вручную с фотошопом долговато получится. :)

Zebestov 17.02.2012 19:15

Подготовить серию BitmapData с разной прозрачностью можно и непосредственно в коде.
А что до фотошопа, то вроде бы Action и Batch на месте.

Wolsh 17.02.2012 19:30

Код AS3:

var bitmapDatas:Vector.<BitmapData>  = new Vector.<BitmapData> (1,true);
var bitmap:Bitmap = new NewCursor();
var bmd:BitmapData = bitmap.bitmapData;
var bmd2:BitmapData = new BitmapData(bmd.width, bmd.height, true, 0x00000000);
var alphaBMD:BitmapData = new BitmapData(bmd.width, bmd.height, true, 0x88000000);
bmd2.copyPixels(bmd, bmd.rect, new Point(), alphaBMD, new Point(), true);
bitmapDatas[0] = bmd2;
 
var cursorData:MouseCursorData = new MouseCursorData();
cursorData.hotSpot = new Point(3,3);
cursorData.data = bitmapDatas;
Mouse.registerCursor("New", cursorData);
Mouse.cursor = "New";


Zebestov 17.02.2012 19:39

Так речь о статичном курсоре вообще? Тогда, конечно же, "на лету"!

alex001 17.02.2012 20:45

да, речь о статичном. код Wolsh работает прекрасно, за что огромное спасибо. количество первых двух нулей после x это значение альфы, FF - 100%. теперь, наверное, последний вопрос. альфа должна быть равна переменной, но как это перевести в 0x**000000? попробовал через
Код AS3:

var alphaStr:String = "0x" + varX + "000000";

а потом перевести из string в нужный формат, но какой? как-то примитивно, но единственное что пришло в голову.

Zebestov 17.02.2012 20:58

Код AS3:

varX <<= 24

При условии, что varX целое и 0 <= varX <= 255.

Wolsh 17.02.2012 21:44

другой вариант – через контейнер.
Код AS3:

var bitmapDatas:Vector.<BitmapData>  = new Vector.<BitmapData> (1,true);
var bitmap:Bitmap = new NewCursor();
var s:Sprite = new Sprite();
s.addChild(bitmap);
 
var bmd:BitmapData = new BitmapData(s.width, s.height, true, 0x00000000);
bitmap.alpha = 0.5;
bmd.draw(s);
bitmapDatas[0] = bmd;


alex001 17.02.2012 23:00

Wolsh, огромное спасибо, теперь все работает! Zebestov, HardCoder, тоже благодарю!


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

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