Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Какое значение для программирования у кадров? (http://www.flasher.ru/forum/showthread.php?t=143272)

TommyLee 12.08.2010 10:22

Какое значение для программирования у кадров?
 
В с++ builder, delphi, visual studio создание программы из нескольких форм выглядит так: создаем нужное количество форм и вывод на экран каждой привязываем к соответствующей кнопке либо событию. Если писать программу, например, игру во флеше, то аналог форм здесь -- кадры? Например, в первом кадре делаем кнопки "Играть", "Настройки", "О программе". И каждой кнопке прописываем по нажатию переходить на нужный кадр: "Играть" - кадр2, "Настройки" - кадр 3 и т.д?

e_gamer 12.08.2010 10:29

а ООП не эффективней будет?
без кода на таймлайне.

Tails 12.08.2010 10:36

TommyLee
Да во флеши так, хотя есть ещё несколько способов - можно юзать сцены, или создовать каждую отдельную форму в отдельном .swf файле, а затем их грузить, ну а если воспользоваться допалнительными расширениями типо MDM Zinc - сможете создавать настоящие формы, как в делфи.

TommyLee 12.08.2010 10:58

Цитата:

Сообщение от e_gamer (Сообщение 928407)
а ООП не эффективней будет?
без кода на таймлайне.

Я ООП и имел ввиду: весь код находится в классах символов кнопока. Таймлайн даже не рассматриваю.

Цитата:

Сообщение от Tails (Сообщение 928408)
TommyLee
Да во флеши так, хотя есть ещё несколько способов - можно юзать сцены, или создовать каждую отдельную форму в отдельном .swf файле, а затем их грузить, ну а если воспользоваться допалнительными расширениями типо MDM Zinc - сможете создавать настоящие формы, как в делфи.

Даже так можно? Например,возможность с формами в отдельных swf. Т.е. форма - это, получается, один кадр. Если, например, на форме должна быть анимация (ролик), то на нее можно поместить мувиклип, куда эту анимацию убрать. Тогда файл с формой, опять же, будет состоять из одного кадра. Тогда в настройках публикации нужно указывать, из скольки кадров будет состоять swf или флеш сам определяет, в зависимости от того, сколько кадров использовано под анимацию, код и т.п?

wvxvw 12.08.2010 11:01

Кадрами тяжело манипулировать програмно. Лучше использовать какие-нибудь другие дисплей объекты и добавлять / убирать их в списке отображения.

Tails 12.08.2010 11:03

TommyLee
Абсолютно верно мыслите, флэш скомпилирует все используемые кадры.

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

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

TommyLee 12.08.2010 11:32

Цитата:

Сообщение от Tails (Сообщение 928420)
флэш скомпилирует все используемые кадры.

понял, спасибо.

Цитата:

Сообщение от wvxvw (Сообщение 928415)
Кадрами тяжело манипулировать програмно. Лучше использовать какие-нибудь другие дисплей объекты и добавлять / убирать их в списке отображения.

Список отображения есть у контейнеров. Окно флеш-плеера контейнер... У контейнеров есть таймлайн? Если есть, то это получается тоже самое - располагать символы с кодом на кадрах. Если нет - то это уже похоже на программирование в обычной, "не анимационной" среде: делфи, билдер и тд.

Zik. 12.08.2010 11:38

Цитата:

Сообщение от TommyLee (Сообщение 928437)
У контейнеров есть таймлайн? Если есть, то это получается тоже самое - располагать символы с кодом на кадрах. Если нет - то это уже похоже на программирование в обычной, "не анимационной" среде: делфи, билдер и тд.

Смотря каких контейнеров. У клипов есть, у спрайтов нет.
Все-таки лучше через addChild, чем через кадры.

wvxvw 12.08.2010 12:31

Таймлайн это по-сути автоматизированый процесс добавления/удаления в дисплей лист. Проблема в том, что у вас не особо есть инстумены повлиять на то, как именно это происходит. Т.е. перешли на второй кадр, потом обратно на первый - а первый кадр взял, и создался весь по новой, кучу памяти угрохал, да еще и никакие даные в нем не сохранились. Для анимации - нормально, чтобы не заморачиваться, а для сколь-нибудь существенного программирования - нет.

Bgg 12.08.2010 12:43

Буквально на днях редактировал проект у которого в главном таймлайне штук 10 кадров пустых. Это ппц... на главную сцену раскиданы ссылки по всем классам и чуть что вдруг "nextFrame()" или "gotoAndStop(7)" и сиди думай что в этом кадре там случится.

derhab 12.08.2010 13:43

2TommyLee
забудьте о кадрах, для того что вы хотите они не нужны...
кадры уместны в 99% исключительно для реализации анимации

TommyLee 14.08.2010 10:46

Цитата:

Сообщение от wvxvw (Сообщение 928454)
Таймлайн это по-сути автоматизированый процесс добавления/удаления в дисплей лист... Т.е. перешли на второй кадр, потом обратно на первый...

Т.е. это одно и тоже? Мы добавляем символы с кодом на кадры: на этот кадр добавим такой символ, на этот - другие символы и т.п. А на самом деле это программно организуется как добавление в список отображения с помощью addChild()?

Цитата:

Сообщение от derhab (Сообщение 928481)
2TommyLee
забудьте о кадрах, для того что вы хотите они не нужны...
кадры уместны в 99% исключительно для реализации анимации

То, что кадры используются для анимации я понимаю, анимация таким образом и создается. Но я не понимаю смешения с программированием. Например, muvieclip, button. Содержат код, но при этом еще и обладают таймлайном - набором "кадров", которые непонятно как воспринимать с чисто программистской точки зрения.

wvxvw 14.08.2010 12:41

Кадры - это исторически часть SWF формата, кроме анимации они позволяют загружать клипы порциями. Так опять же исторически сложилось, что код записывается "в кадр", т.е. потенциально в SWF может быть столько же или больше блоков кода, сколько и кадров. Кадр может быть без кода, а код должен быть в каком-то кадре.
С другой стороны, этой структурой не всегда удобно управлять (иземнять содержимое кадра - значит изменять содержание самой программы, чего флеш не умеет). Кроме того, нет штатных инструментов для програмного создания или изменения кадров.
На счет addChild - не уверен. Т.как addedToStage например при этом не вызывается. На сколько я себе это представляю в SWF формате есть какая-то специальная запись для того чтобы символ был сразу при создании добавлен в список отображения. Но результат боллее-менее похож. Точно описать механизм работы кадров я не берусь, единственное, что точно знаю, для ключевых кадров создаются фукнции типа frame#() где # номер кадра, и эти функции вызываются когда нужно кадр отобразить.

TommyLee 14.08.2010 15:59

Цитата:

Сообщение от wvxvw (Сообщение 928869)
Кадр может быть без кода, а код должен быть в каком-то кадре.

То есть если я пишу программу, а не баннер или игрушку, мне все равно придется пользоваться кадрами? Или достаточно к fla файлу в свойствах прикрутить as-класс с main-кодом, в котором и писать addChild(), не парясь о кадрах?

wvxvw 14.08.2010 17:09

Нет, это такая структура SWF формата, точно так же, как например в HTML есть <body> или <head>, куда потом можно добавить скрипты, в SWF есть кадры, куда скрипты добавляются.

TommyLee 15.08.2010 13:29

Цитата:

Сообщение от wvxvw (Сообщение 928910)
Нет, это такая структура SWF формата

Немного понятнее. Для полного закрепления лучше на примере.
Например, кнопка. У нее таймлайн из трех кадров: не нажата, курсор не наведен -курсор наведен, не нажата - нажата. Получается, во флеше такое можно реализовать 2мя способами:
1. привычный для программиста, основан на изменении свойств объекта в ответ на определенное событие (нажата,отжата и т.д)
2. Рисование в каждом кадре соответствующего состояния. Программирования не вижу. Флеш автоматически преобразует такой анимационный подход в код as?

wvxvw 15.08.2010 14:58

Нет, не преобразует в код AS. AS это все-таки скриптовый язык, он может давать команды виртуальной машине, но виртуальная машина может иметь и дополнительный функционал. Проигрывание анимации как раз и будет дополнительным функционалом. Можно попытаться свести до минимума использование "не программных" методов - самому управлять списком отображения, а можно полагаться на "встроенные" механизмы.
Это похоже, на, например, взаимодействие PHP и Apache. Вы можете Apache настроить так, чтобы он сам отдавал определенные файлы с нужными заголовками, а можете все те же файлы отдавать с помощью PHP. И то и другое может быть удобно в конкретной ситуации.

TommyLee 15.08.2010 19:55

То есть флеш поддерживает 2 механики работы: реализацию событий кнопки можно запрограммировать кодом, а можно "анимационную"?
О чьем списке отображения вы говорите? Я знаю пока, что он есть у stage, movieclip, button. Вы о stage?


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

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