![]() |
Создание кнопок програмно
Появилась задача сгенерировать список кадров ролика с возможностью переходить к выбранному. Список создаётся на основе многомерного массива в котором указан номер кадра, название и другие данные относящиеся к содержимому кадра. Т.к. до этого подобным не занимался то решил разобраться на простом примере из сборника рецептов ActionScript 3.0, но пример хоть ошибок не выдаёт кнопку тоже не показывает. Если кто в этом разбирается скажите в чём ошибка и как она исправляется. :away:
Код вписан в верхний слой первого кадра: Код:
import flash.display.*; |
Это всего лишь отрезок кода, пример реализации описанного в книге, а не полный рабочий код вашего документа.
Там даже класс не описан! Он не может не выдавать ошибок, т.к. если его вставить в [anyname].as, и указать anyname как Docuemnt class (надеюсь вы понимаете о чем я), вы удидвитесь количеству ошибок. Учите флэш с самого начала, а не с рецептов. |
Судя по коду ваша функция SimpleButtonDemo() - это конструктор класса SimpleButtonDemo, который наследует MovieClip или Sprite.
Создайте его, засуньте туда весь код, приведенный выше, назначте этот класс главным классом документа и оно будет работать. Примерно так: Код:
package main { |
Это ж код в первом кадре
его надо дописать Код:
SimpleButtonDemo(); |
Цитата:
Цитата:
Firexel Спасибо, но примерно из такой конструкции я его и достал. :rolleyes: |
Почитал про то как правильно писать на AS3.
Решил реализовать один пример кода по созданию кнопок программно и с надписями. В папке main разместил файлы RectangleButton.as и SimpleButtonDemo.as, во fla файле прописал класс документа "main.RectangleButton". Но при тестировании выводиться ошибки: Цитата:
Код:
package main {Код:
package {При поиске что за ошибка 5000 и как с ней бороться нашёл на форуме советы: Цитата:
Вот интересно как сделать чтобы всё работало. :rolleyes: RectangleButton.as Код:
package main {Код:
package main { |
Уважаемый, вы не знаете азов. Отложите эти 100 рецептов и прочтите нормальную книгу по as3. Очень советую, Essential ActionScript 3.0 | O'Reilly Media. Тогда вам всё станет ясно, и не будут возникать такие глупые вопросы.
Document class, являясь графическим объектом по натуре обязан напрямую наследоваться (если мне не изменяет память) либо от MovieClip, либо от Sprite, либо от Shape. То есть у вас должен быть третий класс, характеризующий Document class, который создаст вашу кнопку как-нибудь так: Код:
var r: RectangleButton = new RectangleButton(); |
Цитата:
Вобщем если его прописать во fla файле то ошибки 5000 не возникает, но по прежнему что то про метод addFrameScript пишут. Цитата:
|
Ещё раз:
Цитата:
|
гм, а на других языках мне книжка не поможет.
|
Xpb7, спасибо. Оно заработало :)
|
Жаль. В общем, если вы хотите действительно научиться - начните с грамотной литературы и практики.
Не за что. P.S. Мультипостинг тут запрещен, пользуйтесь кнопкой "изменить", а то модеры наругают. =) |
Цитата:
А насчёт грамотной литературы... использую то что есть :) И практикуюсь :away: |
Ещё вопрос по теме.
Эти кнопки создаются просто поверх всего ролика. В момент его загрузки. Я хочу чтобы они привязывались к определённой панели и прокручивались как список в ней. Т.к. их много и все сразу они не видны. :confused: |
Собственно, делать addChild в клип внутри панели, и на этот клип положить маску, чтобы лишних не было видно
P. S. Essential AS3.0 вышла на русском, рекомендую приобрести, очень полезная книга. (название на русском: Колин Мук «ActionScript 3.0 для Flash. Подробное руководство»). |
Цитата:
Т.е. по сути должен быть прокручивающийся список с кнопками :) P.S. Здорово :) В ноябре уже в Озоне будет. |
Код:
addChildAt(displayObject,0) |
Что-то я не понимаю покачто как тут может помочь маска.
И ещё, при подстановке класса SimpleButtonDemo в качестве класса документа, функция SimpleButtonDemo начинает выполняться при загрузке флешки, без вызова. Как это можно прекратить? Планируется что функция будет принимать параметры и в соответствии с ними создавать кнопки.(данные будут браться из массива, а параметры определять как сортировать, по каким критериям выбирать из массива и начиная с какого номера выводить) =================================== И насчёт передачи параметров. Хотя это наверное немного не в тему. Если я определяю SimpleButtonDemo: 1. Код:
public function SimpleButtonDemo( ... r)Код:
public function SimpleButtonDemo(r1:String, r2:String, r3:String)Код:
SimpleButtonDemo("А", "олёс", "Электро");Код:
1137: Incorrect number of arguments. Expected no more than 1.Код:
SimpleButtonDemo("А");Код:
#1034: Type Coercion failed: cannot convert "А" to main.SimpleButtonDemo. at main::SimpleButtonDemo/main::frame1()3. Код:
public function SimpleButtonDemo(r1:String)Код:
Error #1063: Argument count mismatch on main::SimpleButtonDemo$iinit(). Expected 1, got 0. |
Особо хитрый пользователь Орец, получает второе предупреждение за ап темы и недельный бан.
|
| Часовой пояс GMT +4, время: 14:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.