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

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

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

Регистрация: Feb 2013
Сообщений: 9
Question Текстовые фильтры GlowFilter LinearGradient

Во Flex пытаюсь создавать динамически текст (по этому и AS3) в отведённом поле
Код:
<s:SpriteVisualElement id="pole" x="600" y="130" width="100" height="100"/>
с фильтром свечения
Код AS3:
var def_text:TextField = new TextField();
var glow:GlowFilter = new GlowFilter(); 
glow.color = 0xffffff; 
glow.alpha = 1; 
glow.blurX = 4; 
glow.blurY = 4;
glow.inner = true;
def_text.text = 'lalala';
def_text.filters = [glow]; //106 строка
pole.addChild(def_text);
получаю вот такую ересь

ArgumentError: Error #2005: Parameter 0 is of the incorrect type. Should be type Filter.
at flash.display:isplayObject/set filters()
at gui.lobby::Lobby/init()[D:\giperkuby\boxLobby\src\gui\lobby\Lobby.mxml:106]
at gui.lobby::Lobby/___Lobby_Group1_creationComplete()[D:\giperkuby\boxLobby\src\gui\lobby\Lobby.mxml:4]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.core::UIComponent/set initialized()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:1818]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:842]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

ЧЯДНТ?


Последний раз редактировалось m3hc; 04.03.2013 в 13:11. Причина: Вопрос немного дополнился
Старый 01.03.2013, 18:36
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 2  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
А GlowGilter у вас какой? flash.filters.GlowFilter или такой же из spark? Если TextField обычный (flash.text), то и фильтр должен быть обычный (первый). Я на подобную ошибку (неверный пакет) сам пару раз напарывался.

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

Регистрация: Feb 2013
Сообщений: 9
Спасибо помогло, чтобы не плодить темы спрошу тут.

Вот у меня есть текст с обводкой.

Код AS3:
var def_text:TextField = new TextField();
var glow:GlowFilter = new GlowFilter(); 
glow.color = 0xffffff; 
glow.alpha = 1; 
glow.blurX = 4; 
glow.blurY = 4;
glow.inner = true;
def_text.text = 'lalala';
def_text.filters = [glow]; //106 строка
pole.addChild(def_text);
Я хочу сделать его с заливкой градиента.

Код AS3:
var type:String = GradientType.RADIAL; 
var colors:Array = [0x00FF00, 0x000088]; 
var alphas:Array = [1, 1]; 
var ratios:Array = [0, 255]; 
var spreadMethod:String = SpreadMethod.PAD; 
var interp:String = InterpolationMethod.LINEAR_RGB; 
var focalPtRatio:Number = 0; 
 
var matrix:Matrix = new Matrix(); 
var boxWidth:Number = 50; 
var boxHeight:Number = 100; 
var boxRotation:Number = Math.PI/2; // 90° 
var tx:Number = 25; 
var ty:Number = 0; 
matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty); 
 
var square:Shape = new Shape; 
square.graphics.beginGradientFill(type,  
colors, 
alphas, 
ratios,  
matrix,  
spreadMethod,  
interp,  
focalPtRatio); 
square.graphics.drawRect(0, 0, 100, 100);
Код рабочий с примеров Adobe.

По логике вещей я должен "квадрату" square задать маску -> мой текст.
тобиш square.mask = def_text;, но тк mask просит тип DisplayObject, наверное надо текст засунуть хотябы в MovieClip, тоесть вот так
Код AS3:
var mc2:MovieClip = new MovieClip();
mc2.addChild(def_text);
square.mask = mc2;
pole.addChild(square);
Но не смотря на всю логику - такое решение не работает >_<
Помогите

PS дополните название темы до "Текстовые фильтры GlowFilter LinearGradient"


Последний раз редактировалось m3hc; 04.03.2013 в 13:12. Причина: дописал PS
Старый 04.03.2013, 14:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. С каких это пор текстфилд перестал быть DisplayObject?
2. Видимо надо сделать cacheAsBitmap маске и, возможно, градиенту.
3. В некоторых случаях маску рекомендуется тоже добавлять в список отображения.
4. Фильтр надо будет вешать не на текст, а на контейнер с бутербродом маска+градиент.
__________________
Reality.getBounds(this);

Старый 04.03.2013, 15:55
m3hc вне форума Посмотреть профиль Отправить личное сообщение для m3hc Найти все сообщения от m3hc
  № 5  
Ответить с цитированием
m3hc

Регистрация: Feb 2013
Сообщений: 9
3. эммм так?
Код AS3:
var mc2:MovieClip = new MovieClip();
mc2.addChild(def_text);
square.mask = mc2;
pole.addChild(mc2);
pole.addChild(square);
4. Логично.

Ага, заработало, только вопрос от чего заработало, от cacheAsBitmap или от того что маску добавил на "сцену".

PS Работает только в связке cacheAsBitmap + добавление маски на "сцену".
Спасибо, Wolsh!


Последний раз редактировалось m3hc; 04.03.2013 в 16:04. Причина: ---
Старый 04.03.2013, 16:18
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
3. В некоторых случаях маску рекомендуется тоже добавлять в список отображения.
Нет такого понятия в некоторых случаях. Тут есть опред закономерность : если сцена масштабируема, маска не статична, контент не статичен - ее надо добавлять, в других случаях не надо
__________________
Марк Tween

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

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

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


 


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


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