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

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

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

Регистрация: Nov 2006
Сообщений: 113
По умолчанию По поводу маски

Я хочу из прямоугольника вырезать центр, чтобы получилась рамка. Мне интересно, как это можно сделать? Логично было бы предположить, что можно в прямоугольник вписать еще один прямоугольник, поменьше, назначить его маской и.. как бы инвертировать, чтоли, если это возможно. Мне думается, что возможно, только я не знаю как...

Старый 14.11.2006, 18:09
BJV вне форума Посмотреть профиль Отправить личное сообщение для BJV Найти все сообщения от BJV
  № 2  
Ответить с цитированием
BJV
[+4 12.03.07]
 
Аватар для BJV

Регистрация: Jul 2006
Сообщений: 32
очень просто. если правильно написан ответ.?
никакой маски делать не надо!
выделяете одним кликом само боди прямоугольника (если изначально фома была создана с рамкой) выделенную область удаляете кнопкой delete/ и все., а рамка остается (главное не выделять!)
если же изначально было без рамки, то сверху на том же слое наклыдываете другой прямоугольник, меньшей формы, пока новый ещё!выделенный формы отцентрируйте. после - выделение убираете, формы сливаете (главное чтоб эти формы были разных цветов) потом выделяете внутрений и просто удаляете. все рамка готова, а потом делайте с ней что хотите.

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

Регистрация: Nov 2006
Сообщений: 113
Мне программно все это сделать надо. Прямоугольник нарисовать ручками проблемы не вызывает

Старый 14.11.2006, 19:00
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 4  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Проще программно нарисовать рамку
__________________
4am is time to rock

Старый 14.11.2006, 19:03
Guelder вне форума Посмотреть профиль Отправить личное сообщение для Guelder Найти все сообщения от Guelder
  № 5  
Ответить с цитированием
Guelder
 
Аватар для Guelder

Регистрация: Nov 2006
Сообщений: 113
Удивительно, как до 8-й версии не реализовали такую простую вещь, как инвертирование маски - она везде есть. Чтобы заданная область не показывалась, а скрывалась. По-моему это очевидно нужная возможность

Старый 14.11.2006, 23:29
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну уж если ты в восьмерке делаешь, так и используй blend'ы.
А ругать гениальных разработчиков всяк горазд, кто хоть десять строк кода написал в своей жизни Просто инструменты гораздо более общее применение имеют, а на каждую конкретную задачу свой метод создавать - шибко жирно компиллятор будет весить
Код:
// создаем контейнер
_root.createEmptyMovieClip("obadva_mc",1);
obadva_mc.createEmptyMovieClip("ramka_mc",1);
// рисуем внешний прямоугольник
with(obadva_mc.ramka_mc){
beginFill(0xFF0000); moveTo(10, 10);
lineTo(400, 10); lineTo(400, 300);
lineTo(10, 300); lineTo(10, 10);
endFill();
}
obadva_mc.createEmptyMovieClip("mask_mc",5);
// рисуем внутренний прямоугольник
with(obadva_mc.mask_mc){
beginFill(0xFFFF00); moveTo(30, 30);
lineTo(380, 30); lineTo(380, 280);
lineTo(30, 280); lineTo(30, 30);
endFill();
}
// назначаем режим наложения
obadva_mc.blendMode = 2    
obadva_mc.mask_mc.blendMode = 11
// регулируем прозрачность дырки
obadva_mc.mask_mc._alpha = 50
Одна проблема - альфа дырки не может быть 0, должна быть хотябы 1%.
Но это незаметно.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 14.11.2006 в 23:31.
Старый 14.11.2006, 23:55
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 7  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Код:
function drawRect(mc:MovieClip, a:Number, b:Number):Void {
	mc.moveTo(a, a);
	mc.lineTo(b, a);
	mc.lineTo(b, b);
	mc.lineTo(a, b);
	mc.lineTo(a, a);
}
function drawBorder(mc:MovieClip):Void {
	mc.beginFill(0);
	mc.lineStyle(1, 0);
	drawRect(mc, 0, 100);
	drawRect(mc, 10, 90);
	mc.endFill();
}
_root.createEmptyMovieClip("brd", 1);
brd._x = 100;
brd._y = 100;
drawBorder(brd);
__________________
4am is time to rock

Старый 14.11.2006, 23:59
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 8  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Или вообще так

Код:
function drawRect(mc:MovieClip, a:Number, b:Number):Void {
        //Изменение последнего параметра lineStyle 
        //позволит срезать или скруглить углы рамки
	mc.lineStyle(10, 0, 100, false, "normal", "square", "miter");
	mc.moveTo(a, a);
	mc.lineTo(b, a);
	mc.lineTo(b, b);
	mc.lineTo(a, b);
	mc.lineTo(a, a);
}
_root.createEmptyMovieClip("a", 1);
drawRect(a, 0, 100);
__________________
4am is time to rock


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

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

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


 


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


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