Помогите разобраться с кнопкой
Привет всем!
Мне нужна панель из пяти одинаково выглядящих нестандартного вида кнопок с разными текстами: "min", "2 x min", "3 x min", "pot", "all-in". Так как я сугубый нуб в флеше, я сначала решил, что надо распотрошить стандартную кнопку компонент и привести ее к нужному виду. Я вставил кнопку на сцену и дважды кликнул на нее, и она "распалась" на ряд изображений ее отдельных фаз, но мне показалось сложным править их все, и потом я не знал как их собрать обратно, и что еще надо будет допилить, поэтому я пошел другим путем - путем создания кнопки с нуля. И столкнулся с проблемами. Прошу помочь. Свою кнопку я сделал так: Создал в Flash CS4 новый символ типа Button, создал изображения для up, down, over кадров. Проверил, что кнопка нажимается. Далее т.к. мне нужна была панель из одинаково выглядящих кнопок, но с разными надписями, я создал новый символ типа MovieClip - панель кнопок и разместил на ней пять моих одинаковых кнопок. Но надписи на кнопках должны быть разными! Пробовал менять надписи на кнопках, но сделать это получилось только редактированием символа, а при этом надписи менялись синхронно на всех 5 кнопках на панели. Я обломался делать пять похожих символов и решил изменить текст экземпляров каждой кнопки-символа на панели из конструктора класса, наследующего от класса панели. Я указал имена экземпляров для кнопок, для панели кнопок, и для динамик текстов на кнопках. Тут столкнулся с проблемами. 1) поскольку кнопка в кадрах up и down имеет различное положение (утапливается), то и текст на кнопке тоже должен утапливаться. Значит надо делать несколько Dynamic Text объектов сообразно кол-ву кадров? Правильно рассуждаю или надо как-то по-другому? 2) Если да, то значить им надо давать уникальные имена (Instance name), получается как-то избыточно что-ли. 3) Несмотря на то, что переменные, которые автоматом создаются если назначишь объекту Instance name, выбирались из списка автоподстановки после нажатия "." значение переменной title (динамик текст на кнопке) оказалось null. Почему? Вот мой код в конструкторе лейаута флешки: Код AS3:
Dynamic Text с именем экземпляра title я создал для проверки идеи только на кадре up, может в этом дело? |
Вспоминаю себя во времена Flash 4. Такие же проблемы с пониманием отношений класс - экземпляр были.
|
1. если кнопки все одинаковые и отличаются только текстом - достаточно нарисовать одну кнопку.
2. Чтобы текст при нажатии сделать "утопленным" - можно на текстовое поле навесить парочку пост-эффектов типа блюров или теней. Ну и чтоб они отличались на этих 4-х кадрах кнопки. Теперь собственно что надо сделать: 1. почитать документацию:) хотя бы официальную справку адоба. 2. у тайтла в символе кнопки сделать инстанс нейм. 3. если пишете в кадрах то в коде панели нужно пробежаться по всем инстансам кнопок и поменять текст тайтлов у всех кнопок на такой как вам надо(обращаться по инстансНеймам типа: myButton1.title) (хотя если кнопок всего пять, то проще будет сделать пять разных кнопок и не парить себе моск) 4. ну и далее по тексту. Код AS3:
|
Спасибо за ответы. Не получается.
Теперь собственно что надо сделать: 1. почитать документацию хотя бы официальную справку адоба. - Пока не нашел в ней ответ, но читаю. 2. у тайтла в символе кнопки сделать инстанс нейм. - это я сделал когда писал, иначе имя title не автоподставилось бы в редакторе. 3. если пишете в кадрах то в коде панели нужно пробежаться по всем инстансам кнопок и поменять текст тайтлов у всех кнопок на такой как вам надо(обращаться по инстансНеймам типа: myButton1.title) (хотя если кнопок всего пять, то проще будет сделать пять разных кнопок и не парить себе моск) - ну вроде в коде видно что я так и делаю, а рисовать пять почти одинаковых кнопок не хочу потому что не красиво. 4. ну и далее по тексту. trace(btn_array[\i].title.text); //пробуйте так;) - я же пишу, что btn_array[i].title == null, соответственно btn_array[i].title.text прекращает выполнение по причине вызова метода у null Уточняю, у меня в редакторе, когда я после btn_array[i] ставлю точку, появляется список, в котором есть свойство title, а когда я ставлю точку после btn_array[i].title в списке есть методы и свойства title, но в процессе выполнения почему-то title == null, хотя в кнопках текст есть. Не понимаю ( Может кто-нить сампл код привести который работает, чтобы у кнопки Dynamic Text поменялся? |
В своем ответе я объяснил почему там null и исправил код.
Так тоже не работает? |
//Вылетает так как вы пытаетесь привести батон к типу_с_длинным_названием
Нет, вылетает не поэтому, он пишет: [Fault] exception, information=TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". Переделал немного, чтобы не было явного приведения типа: Код AS3:
зы А рабочий короткий пример можете выложить? |
Вложений: 1
Прикладываю StrangeButton.fla, StrangeButton.swc - в них только моя кнопка с Dynamic Text
а Main.as для примера вот: Код AS3:
|
Хз, короче:) У меня собственно тоже тайтл у кнопки поменять не получилось.
Но получилось его поменять, если делать кнопку не SimpleButton'ом а MovieClip'ом. Видимо батон не умеет с чилдами работать, мож кто более опытный подскажет. Единственное что если делать мувиклипом - то самому надо следить за событиями и менять визуальный образ. К тому же следует помнить что тайтл в кажддом кадре свой. И его надо менять во всех кадрах, если динамически ставить. С этим думаю разберетесь. Ну а я обычно вот так подобные вопросы решаю (тут курсор пальчиком не становится если на текст наводишь, не стал играться. Вообще по правильному надо поверху натянуть какую-то прозрачную плашку): Код AS3:
|
Ок, буду изучать.
Кстати, да припоминаю, вроде читал, что батон отличается от мувика тем, что не может содержать другие мувики, кажется. Если не путаю. Спасибо за помощь! |
Часовой пояс GMT +4, время: 00:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.