Полная версия этой страницы:
dynamic text в кнопке
Здраствуйте,
Сталкнулся с такой проблеммой:
надо сделать объект кнопку чтобы в ее экземплярах можно было использовать разный текст. (который собственно и есть кнопка)
цель - для оглавления/перечисления разделов на сайте-книге.
конечно можно создать каждую кнопку отделльно со статик текстом, сверстать их и все будет работать, но это не очень удобно ибо хочется
прописать еще общие эффекты, типа затемнение/изменение цвета текста при наведении курсора и т.д.
использую Адоб Флаш ЦС3 Про, структура такая:
объект кнопка, в ней сидит мувиклип, в последнем 2 слоя - маска и динамик текст. (наличие маски влияет вроде на поле дейсвтия кнопки - самый большой объект в мувиклипе).
при статике все ок, только переключаюсь на динамик - фиг! ничего не видно сразу, но кнопка сама работает...
если убрать маску получаю чтонибудь такое - _level0.fotopaint_btn.instance12.index_txt
помогите плиз советом!
Денис
Flashery
29.12.2007 - 17:24
Ну блин все ясно же как белый день включи в динамик текст шрифты и все!!! Есть там такоая кнопочка рядом на пропертис Embed/ вот там и встрой свой шрифт. если у тебя маска идет как поле для нажатия а не для чего либо полезного то убери ее нахрен и создай просто невидимый мс с альфа_=0% вот и все

удачи
спасибо, действительно заработало

только сейчас тупой нубовский вопрос - почему я не могу изменить текст через свойство text?
переменная var не объявлял, для объекта dynamic text вне кнопки это работает, для этогоже объекта в мувиклипе - тоже, а вот для мувика
включенного в кнопку - нет....
делаю так:
fotopaint_btn.index_mc.index_txt.text="Photopainti ng (St. Petersburg, 2007)";
экземпляр класса.мувик.текст.полек текст="значение"
Flashery
29.12.2007 - 21:54
Создаешь текст поле у тебя это динамик текст твой код должен быть таким : ( при этом не забудь дать переменную этому полю например HUY )

- после этого пишем код : HUY.text = " MY TEXT ";
Я точно не читал если ты все именно так делал то у тебя возможно несоответтвие переходо, слождно предполагать когда не видешь но попробуй так :
_root.fotopaint_btn.index_mc.index_txt.text="Photopainti ng (St. Petersburg, 2007)";
или
_parent.fotopaint_btn.index_mc.index_txt.text="Photopainti ng (St. Petersburg, 2007)";
здесь есть фаил с объектом меню, http://www.flasher.ru/forum/showthread.php...7183#post707183,
проблемма в том, что вышеописанный способ работает для мувика содержащего текст когда он вне кнопки, но не работает когда этот мувик находится в кнопке....
Это-то и странно....
з.ы. c root или parent попробовал - не пашет...
а если пользоваться переменной var, то тогда эта переменная будет на весь класс, и видимо меняя ее будет менятся у всех экземпляров, что мне совсем не нужно!...
nikitar
30.12.2007 - 12:42
Дело в том, что в этом проявляются ограничения типа символа: Button. Нужно сделать в виде кнопки мувиклип, то есть просто мувиклипу через actionscript назначить события, тогда всё будет работать.
интересно... не знал...
ты мог бы, пожалуйста, написать подробнее с action script ибо я последний раз разбирался со флешем год назад и подзабыл...
предпологаю что нужно прописать события .onRelease(), onRollOver onRollOut?
скорее всего надо как-то зарегестрировать новый класс (основываясь на мувиклипе), прописать у него эти события (ибо хочется что-бы например каждый эллемент меню вел себя одинаково при наведении курсора и т.д.) и потом уже у экземпляров менять только поле text и onRelease()?
помогите плиз с наметками кода, а то никакой книжки под руками вообще нет ))
Flashery
30.12.2007 - 17:25
Блин...я вообще фигею....нечего сказать...вопрос типа как работать с OnRelease и остальными это ваще даже не знаю в какой раздел. братан ты че ? за год такие простые правила не забываются :
YouMC.OnRelease = function () { YOU FUNCTION FOR EXAMPLE : gotoAndPlay(2); or var.text = "jopa" };Also its work on other, such as :
OnRollOver and so on....
Не вижу ничего сложного вообще, вообщем разбирайся
А когда нет книжки юзай INDEX SCRIPT или google

))
это то я знаю, спасибо!!!
вопрос был скорее как прописать класс по образу существующего объекта в библиотеке.
как прописать функции это я знаю )))
Просто я не хочу прописывать эти функции для каждого экземпляра класса, я хочу объявить эти функции (onRollover, onRollout) во вновь созданном классе по шаблону мувика и потом уже корректировать OnRelease у каждого экземпляра....
Вот
Flashery
30.12.2007 - 19:29
скриптеры вперед по классам это не ко мне

)) я уже в универе учусь
nikitar
31.12.2007 - 09:51
Цитата
uMC.OnRelease = function () { YOU FUNCTION FOR EXAMPLE : gotoAndPlay(2); or var.text = "jopa" };
Этот код работать не будет.
Регистр букв важен.
Flashery
31.12.2007 - 11:30
Какой еще регистр букв ? Я думаю он понял что фраза YOU FUNCTION FOR EXAMPLE это комментарий. (Так же как и onRelease);
Да и ты должен был понять

))
nikitar
31.12.2007 - 19:55
Писать mc.OnRelease новичку в высшей степени неразумно. Оно не будет работать. Работает только mc.onRelease.
ребята, вы бе мне подзказали все-же как прописать класс на основе существующего объекта в библиотеке и добавить туда эти onRelease onRollOver onRollOut и т.д.

))
nikitar
1.01.2008 - 23:42
den59, о каком классе вы постоянно говорите?
2nikitar: (цитирую вас) ограничения типа символа: Button. Нужно сделать в виде кнопки мувиклип, то есть просто мувиклипу через actionscript назначить события, тогда всё будет работать
этих кнопок-ссылок с динамиком текстом будет достаточно много, поэтому прописывать дополнительные события через actionscript каждому экземпляру класса mc не разумно!...
из ООП видимо нужно обявить класс наследник объекта библиотеки mc с включенным в него dynamic text (inheritance) и дописать классу эти события (кнопочные).
потом уже создавать экземпляры вновь-объявленного класса (перетаскивая объект из библиотеки в нужные места приложения, делать это через action scrip очень не хотелось бы!)
Вот мое понимание решения вопроса.
Можно в целом дополнить класс mc этими событиями, НО кроме этих кнопок-ссылок-оглавления существуют и другие mc, и думаю не очень хорошо/правильно прописывать события для всех экземпляров подряд у базового класса.
Flashery
2.01.2008 - 15:48
Все придется писать вручную. Тупо копируя код да и все. не вижу сложности.
наконец-то сделал чтобы все работало без тупых copy-paste для каждого экземпляра!
подробности тут: http://www.flasher.ru/forum/showthread.php...7992#post707992
Всем спасибо за помощь!