![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Здравствуйте.
задача такая - есть контейнер. в нем разные шейпы. в какой-то момент надо сделать над ним дымку - приглушить то есть. для этого нужен еще один контейнер, который по форме равен исходному, но с заливкой определенным цветом. почему-то после присвоения происходит как будто слияние спрайтов. я пытаюсь сделать видимость "дымки" меньше, а уменьшается и видимость исходного спрайта. вот код: //здесь задаем параметры public function setFogParam():void { sprFog = spr; //присваиваем спрайт "дымку" исходному addChild(sprFog); sprFog.alpha = 0; var colorInfo2:ColorTransform = sprFog.transform.colorTransform; if(_fogColor != 0){ colorInfo2.color = _fogColor; sprFog.transform.colorTransform = colorInfo2; } } //здесь вызываем саму дымку public function setFog():void { Tweener.addTween(sprFog, {alpha:.5, time:1, delay:0, transition:"easeOutExpo"}); } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
BitmapData#draw()
BitmapData#copyChannel() Добавлено через 6 минут создаете прозрачную битмапдату размером как ваш спрайт и нужного цвета. Делаете вторую битмапдату клонированием первой BitmapData#clone() Отрисовываете в нее спрайт. Копируете альфа-канал (8) битмапдаты с картинкой в альфаканал пустой битмапдаты. Получаете плашку нужной формы и нужного цвета. Визуализируете ее с помощью битмап. Меняете альфу Битмапа с помощью твинера.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Цитата:
Добавлено через 11 минут получается белый прямоугольник.... что не так, помогите еще раз, пожалуйста public function setFogParam():void { var bmd:BitmapData = new BitmapData(_widthOb, _heightOb + _heightTopOb); var bmdClone:BitmapData = bmd.clone(); var colorInfo2:ColorTransform = sprFog.transform.colorTransform; if(_fogColor != 0){ colorInfo2.color = _fogColor; } var rect:Rectangle = new Rectangle(0, 0, _widthOb, _heightOb + _heightTopOb); var pt:Point = new Point(_xOb, _yOb); bmdClone.draw(spr, null, colorInfo2); bmd.copyChannel(bmdClone, rect, pt, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); var bmp:Bitmap = new Bitmap(bmd); this.addChild(bmp); bmp.x = 600; } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Добавлено через 2 минуты
Да, и не надо тут colorTransform. Цвет дыма задаете при создании битмапдаты, только добавляете альфу 0, чтобы получился ARGB Добавлено через 7 минут И pt не надо)) просто new Point(), то есть с координатами (0, 0). Вам надо просто перекинуть альфаканал из снимка Спрайта в битмапдату, закрашенную нужным цветом. Битмапдаты одинаковые, так что точка должна быть в ноль/ноль. И rect можно получить просто взяв bmdClone.rect;
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|