Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.04.2010, 18:03
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 1  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
По умолчанию Обрезка по маске

Привет всем!
Подскажите, пожалуйста, как обрезать картинку по маске.
Не только чтоб была видна просто зона где была наложена маска, но и края обрезались
скажем, картинка шириной в 600пкс, маска - 200. и обрезать по маске так чтоб картинка стала тоже 200.
Может как-то отслеживать цвета? Прозрачную область обрезать?
Подкиньте идею
__________________
http://zenpro.blogspot.com/

Старый 22.04.2010, 18:24
coreras вне форума Посмотреть профиль Отправить личное сообщение для coreras Найти все сообщения от coreras
  № 2  
Ответить с цитированием
coreras

Регистрация: Apr 2010
Сообщений: 7
a.setMask(b),
где a - клип, который надо увидеть, b - маска, через которую ты его увидишь.
попробуй, может тебе и отслеживать ничего не понадобится :о)

Старый 22.04.2010, 18:32
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 3  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
ну это понятно, понимаете, я потом делаю ресайз этого клипа, и маркеры увеличения и уменьшения становятся по ширине исходной картинки, а мне надо чтоб уже было приближенно к маскируемой части(видимой). получается что есть 100х100 видимая область и маркеры от нее на 300 пикселов дальше из-за того что картинка не обрезалась
__________________
http://zenpro.blogspot.com/

Старый 22.04.2010, 19:10
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В BitmapData#copyPixels(), есть опциональные параметры:
Код:
..., [alphaBitmap:BitmapData], [alphaPoint:Point], [mergeAlpha:Boolean])
Копируйте кусок исходного изображение по прямоугольной области маски в обрезанное изображение, и в опциональных параметрах указывайте битмапдату своей маски в качестве alphaBitmap.
Также copyChannel() можно альфа-канал скопировать.


Последний раз редактировалось udaaff; 22.04.2010 в 19:14.
Старый 27.04.2010, 17:58
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 5  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
не совсем понятно как это применить..
__________________
http://zenpro.blogspot.com/

Старый 27.04.2010, 18:30
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.*
 
// На сцене лежат два мувика mask и image.
mask._visible = false;
image._visible = false;
 
var imageBitmap:BitmapData = new BitmapData(image._width, image._height, true, 0x00000000)
imageBitmap.draw(image);
 
var maskBitmap:BitmapData = new BitmapData(mask._width, mask._height, true, 0x00000000);
maskBitmap.draw(mask);
 
var maskedBitmap:BitmapData = new BitmapData(mask._width, mask._height, true, 0x00000000);
 
maskedBitmap.copyPixels(imageBitmap, 
        new Rectangle(mask._x, mask._y, mask._width, mask._height), 
        new Point(0, 0), maskBitmap, new Point(0, 0));
 
// Выводим результат
var result:MovieClip = createEmptyMovieClip("result", 0);
result.attachBitmap(maskedBitmap, 0);

Старый 28.04.2010, 21:16
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 7  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
Такой вариант работает, спасибо, но у меня там постоянно меняются координаты а из-за этого несоответствие получается.

как скопировать альфаканал?
можно ли имея прозрачное изображение с зеленым кругом посредине, скопировать именно область где зеленый круг, обрезая прозрачные края?
__________________
http://zenpro.blogspot.com/

Старый 28.04.2010, 21:36
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
у меня там постоянно меняются координаты а из-за этого несоответствие получается.
Второй параметр в copyPixels() задает область, которая должна быть скопирована, т.е. её координаты, ширину и высоту.

Цитата:
как скопировать альфаканал?
Те же яйца, только сбоку. Если вас вариант с copePixels не устроил, то и этот тоже не устроит. Ну а скопировать — copyChannel()

Старый 28.04.2010, 21:38
greenhill вне форума Посмотреть профиль Отправить личное сообщение для greenhill Посетить домашнюю страницу greenhill Найти все сообщения от greenhill
  № 9  
Ответить с цитированием
greenhill
 
Аватар для greenhill

Регистрация: Mar 2009
Сообщений: 281
Отправить сообщение для greenhill с помощью ICQ
А можно как-то узнать где на изображении появляется цвет.
Ну например, фон весь белый и узнать на координату точки где начинается другой цвет?
__________________
http://zenpro.blogspot.com/

Старый 28.04.2010, 21:55
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
getColorBoundsRect() — область цвета

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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