Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Полупрозрачная маска (http://www.flasher.ru/forum/showthread.php?t=88003)

ToXICus 15.11.2006 15:37

Полупрозрачная маска
 
Хочу сразу извиниться, поскольку тема несколько раз обсуждалась, он никак не могу понять, почему не становиться полупрозрачаной.
Напишу план выполнения, а если неправильно, то подкоректируйте:
1. Создал файл
2. Вешаю что-то что будет под маской.
3. Создаю маску, потом ее заливку делаю через Colors->Radial а потом заливка от центра до краев делаю полупрозрачной.
4. В _root'e пишу myMC.setMask("mMask")
Но к сожалению, согласну этому маска не меняет прозрачности.
Помогие подправить, пожалуйсто.;)

iNils 15.11.2006 17:43

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

import flash.geom.*;
import flash.display.BitmapData;

//// функция маски
function setNewMaska (mcBox:MovieClip, mcMaska:MovieClip) {
        trace (this);
        var bmp:BitmapData = new BitmapData (mcBox._width, mcBox._height, true, 0xFF);
        var bmpMaska:BitmapData = new BitmapData (mcMaska._width, mcMaska._height, true, 0xFF);
        bmp.draw (mcBox);
        bmpMaska.draw (mcMaska);
        var mc:MovieClip = this.createEmptyMovieClip ("mc", this.getNextHighestDepth ());
        bmp.copyChannel (bmpMaska, new Rectangle (0, 0, bmp.width, bmp.height), new Point (0, 0), 1, 8);
        mc.attachBitmap (bmp, 0);
        mc._x = 200;
        mc._y = 200;
}

//// функция рисующая прямоугольник
function drawBox (mc:MovieClip, x:Number, y:Number, w:Number, h:Number) {
        mc._x = x;
        mc._y = y;
        mc.moveTo (0, 0);
        mc.lineTo (w, 0);
        mc.lineTo (w, h);
        mc.lineTo (0, h);
        mc.lineTo (0, 0);
}

//// создаем маску или рисуем руками на сцене градиентный клип (полностью непрозрачный)
this.createEmptyMovieClip ("mcMaska", 0);
this.mcMaska.lineStyle (0, 0, 0);
var matrix:Matrix = new Matrix ();
matrix.createGradientBox (100, 100, 0, 0, 0);
this.mcMaska.beginGradientFill ("radial", [0xFFFFFF, 0x000000], [100, 100], [0x00, 0xFF], matrix);
drawBox (this.mcMaska, 100, 100, 100, 100);
this.mcMaska.endFill ();

//// создаем маскируемый клип
this.createEmptyMovieClip ("mcBox", 1);
this.mcBox.lineStyle (0, 0, 0);
this.mcBox.beginFill (0xFF0000);
drawBox (this.mcBox, 300, 100, 100, 100);
this.mcBox.endFill ();
this.mcBox.onRelease = function () {
        setNewMaska (this, mcMaska);
};


ToXICus 16.11.2006 23:14

Большое спасибо!!!
Я понял основную свою ошибку.
По ходу, дело состояло в
import flash.geom.*;
import flash.display.BitmapData;
этом:-)

Randomm 16.11.2006 23:21

А у меня этот код ругается на 7ю строчку =(
Мож потому что у меня Flash MX 7.02?

BigDan 16.11.2006 23:30

Цитата:

Сообщение от Randomm
А у меня этот код ругается на 7ю строчку =(
Мож потому что у меня Flash MX 7.02?

В семерке вроде BitmapData не поддерживается.

Randomm 16.11.2006 23:45

Ок, пошёл ставить 8ой

iNils 17.11.2006 00:27

Цитата:

Сообщение от BigDan
В семерке вроде BitmapData не поддерживается.

Не вроде, а точно.

ToXICus 22.11.2006 00:05

Хмммм странно: я-то сообразил с маской, но вот у меня 8-ка но тоже на скриптец ругаеться.
З.Ы. вопрос чуток не в тему: 9 вышел или это тольку слухи?

etc 22.11.2006 00:25

ToXICus, альфа версия с AS3 компилятором только.


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

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