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

t0di 24.11.2009 21:07

Маска изображения
 
Здравствуйте!
Вопрос может и не нов, но я не могу его правильно конкретизировать, чтобы найти для себя ответ по поиску.
Задача наверное банальна, и состоит в следующем:
Есть определенная фигура (квадрат с закругленными углами), как мне загрузить в него фото или картинку, чтобы она не выступала, подрихтовывалась именно пож этот размер?

SamFR 24.11.2009 21:18

Назначаем изображению такую же фигуру в качестве маски:

Код AS3:

//предполагается, что переменной image присвоен экземпляр изображения
var background:Sprite = new ShapeClass();
var imageMask:Sprite = new ShapeClass();
image.mask = imageMask;
 
addChild(background);
addChild(image);
addChild(imageMask);


t0di 24.11.2009 21:57

Ммм... совсем не ясен ответ...

Добавлено через 4 минуты
Сначала я загружаю через Loader изображение в мой спрайт:
Код AS3:

var container:Sprite = new Sprite();
...
pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
 
function imgLoaded(event:Event){
container.addChild(pictLdr.content);//
}

Фигура, типа MovieClip по имени img находится на сцене, нужно, чтобы в эту фигуру загрузилось изображение container, растянутое или уменьшенное именно под эту фигуру.

SamFR 24.11.2009 22:52

Так вам нужно изменить размер изображения или замаскировать его (т.е. сделать углы изображения таже закруглёнными)? Или и то, и другое?

Если вам нужно замаскировать, то необходимо получить ещё один экземпляр, совпадающий с img, и назначить его маской для pictLdr. Чтобы это сделать, необходимо назначить фигуре, находящейся в библиотеке, имя класса для экспорта (в моём предыдущем примере ShapeClass). И создавать экземпляр фигуры с помощью операции new, а не брать его со сцены.

t0di 24.11.2009 23:12

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

SamFR 24.11.2009 23:26

Если просто установить изображению такой же размер, как и фону, то оно от этого закруглённым не станет =) Нужно либо задавать меньший размер (чтобы вокруг него оставалась "рамочка" из фонового изображения), либо маскировать.

Если решите не маскировать, то можно обойтись без установки класса экспорта вашей фигуры, а брать её экземпляр со сцены (что, впрочем, не очень хорошо).

t0di 25.11.2009 00:04

так я бы с удовольствием что-нибудь решил, если бы знал как =)
Нужно всё же сделать маску....

cleptoman 25.11.2009 00:34

грузите битмап..берете из него битмапДату, через графикс рисуете ею квадрат с закругленными краями )

см.
BitmapData
Graphics
beginBitmapFill

SamFR 25.11.2009 00:50

Если всё ограничивается закруглёнными краями, то отличный вариант, и быстрый к тому же.


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

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