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

deep_freeze 21.11.2006 12:05

Чудеса с текстом
 
Уважаемый народ!

Я только начинающий флешер, так что не извольте бить веником...

Недавно ваял я навигационное меню на флеше, и появилась у меня необходимость при наведении на какой-то пункт меню (картинка) прорисовывать на экране подпись текстом, чтобы понятней было. Для этого я планировал использован один-единственный экземпляр с именем TipText символа MovieClip, в котором находится текст, привязанный к переменной tiptxtvar. Идея вот в чём - как только пользователь наводит мышкой на пунк меню, под ним появляется TipText, перед этим в переменную _root.tiptxtvar подставляется название раздела. Кроме всего прочего, TipText должен сначала из абсолютно прозрачного текста превращаться в непрозрачный чёрный. Для этого в мувиклипе я создал MotionTween и в ключевых кадрах поставил значения Color->Alpha = 0% и Color->Alpha = 100% соответственно. Но данная штука у меня не работает - мало того, что текст в текстовом поле не меняеться, так ещё никакой анимации нет с прозрачностью. Очень не хочется делать для всех разделов отдельные мувиклипы с текстом.

Пожалуйста, подскажите, как можно решить эту проблему. За любой совет заранее благодарен.

_sestra_ 21.11.2006 12:37

1) Кидай исходник в таких случаях и лаконично объясняй задачу
2) Если ты "начинающий флешер", то есть отлчный раздел "Для начинающих"
3) Свою тему ассоциируй с конкретной проблемой. В свою очередь "Чудеса с текстом" - ниочём не говорит
4) Успехов в изучении Флеша :)

ВАРАН 21.11.2006 15:40

-Посмотри точно ли твой мувик это мувик. Ты мог его случайно поменять на графику, а в графике не работает анимация.
-Раз ты на тексте создал Мотион то твой текст теперь в нутри этого мотион и обращатся нужно теперь не сразу к тексту а через этот мотион.
-А проще не делать альфу анимацией а написать её програмно вот так:

Код:

_alpha=0
this.onRollOver=function(){
if(_alpha<100){
_alpha+=5
}
this.onRollOut=function(){
if(_alpha>0){
_alpja-=5
}
}

положи это всё на первый и единственный кадр мувика с динамичесским текстом

pkfun 21.11.2006 20:13

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

ВАРАН 21.11.2006 21:49

Эээ счас плохому научишь малчика. Всё там с динамикой работает. И альфа и мальфа...

pkfun 21.11.2006 21:58

ВАРАН
Надеюсь работающий пример можно будет увидеть?

pkfun 21.11.2006 22:32

Цитата:

Сообщение от ВАРАН
-Посмотри точно ли твой мувик это мувик. Ты мог его случайно поменять на графику, а в графике не работает анимация.

Работает.

Цитата:

Сообщение от ВАРАН
-Раз ты на тексте создал Мотион то твой текст теперь внутри этого мотион и обращатся нужно теперь не сразу к тексту а через этот мотион.

Обращаться нужно к экземпляру мувиклипа/графического объекта на сцене, поскольку не создав такой символ вы не сможете вобще работать с анимацией, ни вручную, ни программно.

Цитата:

Сообщение от ВАРАН
Код:

_alpha=0
this.onRollOver=function(){
if(_alpha<100){
_alpha+=5
}
this.onRollOut=function(){
if(_alpha>0){
_alpja-=5
}
}


В коде две ошибки. Код перед вставкой не проверялся в редакторе.

Цитата:

Сообщение от ВАРАН
-А проще не делать альфу анимацией а написать её програмно вот так:
Код:

_alpha=0
this.onRollOver=function(){
if(_alpha<100){
_alpha+=5
}
this.onRollOut=function(){
if(_alpha>0){
_alpja-=5
}
}

положи это всё на первый и единственный кадр мувика с динамичесским текстом

Результат:
Цитата:

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Statement must appear within on/onClipEvent handler
_alpha=0

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 2: Statement must appear within on/onClipEvent handler
this.onRollOver=function(){

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 6: Statement must appear within on/onClipEvent handler
this.onRollOut=function(){

Total ActionScript Errors: 3 Reported Errors: 3

ps. Возможно я что-то неправильно понял...

pkfun 22.11.2006 02:50

Вложений: 1
deep_freeze
Вложение 15825
Посмотрите пример. Возможно это то, что вам нужно.

Kikasso 22.11.2006 04:48

Вложений: 1
Код:

_alpha=0
this.onRollOver=function(){
    if(_alpha<100){ _alpha+=5 }
}
this.onRollOut=function(){
    if(_alpha>0){ _alpja-=5 }
}

pkfun, вы не совсем правы - только одна скобка было пропущена. Надо было положить на кадр, а не на клип. вот попробуйте еще раз - ошибки нет, но нет и решения проблемы.. вот сами посмотрите - в аттаче пример ВАРАНа
---------
У вас похоже то что надо.
---------

pkfun 22.11.2006 09:26

Цитата:

_alpja-=5
Опечатка. :D Я понимаю, но всегда проверяю свои ответы в редакторе.

Kikasso
Да, последний пункт я неправильно понял. Спасибо, что указали на ошибку.

ВАРАН
Свои слова по последнему пункту беру назад. Был неправ. Извините. :)

Kikasso 22.11.2006 10:33

Вложений: 1
Цитата:

Сообщение от pkfun
Опечатка. :D Я понимаю, но всегда проверяю свои ответы в редакторе.

Ну так это не моя опечатка. Я посмотрел что у тебя вывело, там написано что код надо сажать на евент. Значит, ты не туда клал. Сунул на кадр - говорит, что скобки нет. Поставил, код корректный. Только от исправления он все равно не заработает, потому что событие срабатывает один раз, а нам нужно плавно увести. Ну вот я сделал так:
Код:

_alpha=10;
this.onRollOver=function(){
 _alpha = 100;
}
this.onRollOut=function(){
  _alpha = 10;
}

Теперь наглядно видно, что без вкючения шрифтов просто так ни альфу, ни мальфу с текста не убрать. Только битмапа, как в вашем примере. Старый добрый Color и его setColorTransform(); не помогает, я только что проверил - цвет меняет, альфу нет.
P.S. Ну правда, ВАРАН, вы таким шрифтом выступили, что любой засомневается.

ВАРАН 22.11.2006 19:02

Вложений: 1
Ну, идрить кудрить, я ж просто принцип показал. Вот вам ваша альфа с динамиком.

pkfun 22.11.2006 20:40

fla можно посмотреть то? :)

Kikasso 23.11.2006 05:14

Цитата:

Сообщение от ВАРАН
Ну, идрить кудрить, я ж просто принцип показал. Вот вам ваша альфа с динамиком.

И со включенным шрифтом, я полагаю?

Kikasso 23.11.2006 07:01

а вот и разгадка феномена.
 
Вложений: 1
вот как все решается:
Код:

mask.cacheAsBitmap = true;
clip.cacheAsBitmap = true;
clip.setMask(mask);
mask._alpha=0;
clip.onRollOver=function(){
        if( mask._alpha >94){
                mask._alpha = 100;
                mask.onEnterFrame = null;
        }else{
                this.onEnterFrame = function() {mask._alpha+=5;}
        }
}
 clip.onRollOut=function(){
                if( mask._alpha < 6 ){
                mask._alpha = 0;
                this.onEnterFrame = null;
        }else{
                this.onEnterFrame = function() {mask._alpha-=5;}
        }
}

То есть динамически сажается маска, и маска и клип casheAsBitmap, и далее альфа убирается с маски, и это работает!
Исходник в студии - Вложение 15839. Как и ранее, вверху шрифт не включен, внизу включен. Наведите мышкой.
pkfun, а откуда примерчик? Там была дискуссия?
..Это, чесслово, какие-то фокусы.

pkfun 23.11.2006 09:40

Никаких фокусов, все строго официально. Этот эффект называется "Маскировка альфа-канала" и описан в фирменном руководстве по flash8. Ведь и у меня в примере использован точно такой же прием. Только я альфу маски менял не программно.
Дискуссия? Да, как-то была. Там динамический текст не обсуждался, разговор шел просто о том, как изменять альфу маски.

ps. Прикол. Второй фаерфокс орфографию набираемого текста проверяет. :D

Kikasso 23.11.2006 09:45

Да я не читал того хелпа. столько букв! Ну теперь запомню накрепко.

ВАРАН 23.11.2006 10:58

А что вы так против включённого шрифта то все? Чего он вам не угодил?

Kikasso 23.11.2006 11:09

1) файлов много, в разных местах, шрифтов не напасешься.
2) htmlText + css, надо включать очертания для всех размеров, жирные, наклонные и пр - то есть для каждого типа букв надо свое поле подгрузить и отгрузить. А если сайт многоязыный? А с ероглифами?
3) смотрится местами лучше
4) да я в общем не против.

ВАРАН 23.11.2006 11:14

Цитата:

Сообщение от Kikasso
1) файлов много, в разных местах, шрифтов не напасешься.
2) htmlText + css, надо включать очертания для всех размеров, жирные, наклонные и пр - то есть для каждого типа букв надо свое поле подгрузить и отгрузить. А если сайт многоязыный? А с ероглифами?
3) смотрится местами лучше
4) да я в общем не против.

Ну дак не мучай пятую точку то. Делай контент на dhtml и добавляй флэш красивостей, коли уж не можешь без него.

pkfun 23.11.2006 18:34

Цитата:

Сообщение от pkfun
Ну если анимация( альфа) не работает, то это значит, что поле динамического типа. И это естественно, вы же ведь хотите динамически менять текст. Либо делайте статические мувики для каждой подсказки, либо вставляйте шрифт(embed) в мувик.

Цитата:

Сообщение от ВАРАН
А что вы так против включённого шрифта то все? Чего он вам не угодил?

Исходничек вашего примера можно всетаки поглядеть? :D

ВАРАН 23.11.2006 18:44

Вложений: 1
Да тамж просто всё как в бане.

pkfun 23.11.2006 19:06

Спасибо. :)
Хороший пример. Надо взять на заметку. Получается, что к динамическому тексту всетаки можно применить альфу, даже без битмапы.

Kikasso 24.11.2006 02:28

Вложений: 1
ЭЭ ВАРАН, зачем людей путаеш?Вложение 15851
2 pkfun: применить можно, работать не будет.

pkfun 24.11.2006 03:04

Да, елки-палки! Обхитрили! :D
Ну ладно, сам прошляпил. И главное мэтры все молчат. :)

ps. Чувствую себя полным профаном. :quiet:
Kikasso
:drinks:


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

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