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

dimarik 06.07.2009 16:14

Не совсем. Маска - это отдельный mc.

вроде того

Код AS1/AS2:

var targetPoints:Array /* of Points */= new Array(
        new Point(00),
        new Point(10, 0),
        new Point(10, 10),
        new Point(010),
);
 
var mask:        MovieClip = this.createEmptyMovieClip('mask', this.getNextHieghestDepths());
var len:        Number = this.targetPoints.lenght;
var point:        Point = Point(this.targetPoints[0]);
 
this.mask.beginFill(0x00FF00, 50);
this.mask.moveTo(point.x, point.y);
 
for (var i:Number = 1; i < len; i++) {
        point = Point(this.targetPoints[i]);
        this.mask.moveTo(point.x, point.y);
}
point = Point(this.targetPoints[0]);
this.mask.moveTo(point.x, point.y);
this.mask.endFill();
 
 
var bitmap:        BitmapData;
var Пик2:        MovieClip;
 
Пик2.addBitmap(bitmap, 0);
Пик2.setMask(this.mask);

Работоспособность не проверял

zaidite 06.07.2009 16:46

alekslitvinenk, dimarik, спасибо. Пошёл рисовать.

Mnilionic 06.07.2009 21:44

можно и битмапами :)
Код AS1/AS2:

import flash.display.BitmapData;
 
var mc_box:MovieClip = this.createEmptyMovieClip('mc_box', 1);
 
var bmp_img:BitmapData = BitmapData.loadBitmap('image.jpg');
var mc_img:MovieClip = mc_box.createEmptyMovieClip('mc_img', 1);
mc_img.attachBitmap(bmp_img, 0);
 
var bmp_mask:BitmapData = BitmapData.loadBitmap('mask.png');
var mc_mask:MovieClip = mc_box.createEmptyMovieClip('mc_mask', 2);
mc_mask.attachBitmap(bmp_mask, 0);
 
mc_mask.blendMode = 11;
mc_box.blendMode = 2;


natazha 18.07.2009 12:01

Привет, я новичок в AS3, только начала изучать, и начала именно с 3-го. Так что прошу не бить сильно. А вопрос такой, точнее просьба направить. Мне нужен этот код, который написал Mnilionic, только перевести в AS3.
Вот что я сделала:
Код AS3:

var mc_box:MovieClip = new MovieClip();
 
var bmp_img:BitmapData = BitmapData(getChildByName("myimage")); // - myimage уже писутствует в списке отображения
var mc_img:MovieClip = new MovieClip();
mc_img.addChildAt(bmp_img, 0);
 
maskLoader = new Loader();
maskLoader.contentLoaderInfo.addEventListener(Event.INIT,  initListener);
maskLoader.load(new URLRequest("mask.png"));
 
var bmp_mask:BitmapData = Bitmap(maskLoader.content).bitmapData;
var mc_mask:MovieClip = new MovieClip();
mc_mask.addChildAt(bmp_mask, 0);
 
mc_mask.blendMode = BlendMode.ERASE;
mc_box.blendMode = BlendMode.LAYER;

Но во-первых в таком виде выдает ошибку в двух местах (там где добавляю ребенка):
Цитата:

1067: Неявное приведение значения типа flash.display:BitmapData к несоответствующему типу flash.display:DisplayObject.
Я пробовала по-разному, бывало что ошибок не выдает, но все равно никакой маски я не вижу.
Пожалуйста, помогите разобраться. Спасибо!


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

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