Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.09.2012, 00:12
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 1  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
По умолчанию в каком классе хранится код написанный в кадре AF?

Здравствуйте, флешеры. Путаница в голове... Объясните мне логику поведения adobe flash cs5 при компиляции. Во Flash Develop например, первым создаётся объект класса Main. Он по сути является точкой входа.
1 вопрос) где точка входа в проекте, созданном во A.F.?
Дальше. Никак не пойму. Допустим я переношу на сцену символ 'Symbol1' класса MovieClip . Задаю имя экземпляра "name1". Это значит, что я создал объект 'name1' класса Symbol унаследованного от класса MovieClip ?
Если это так, или что-то вроде того, можно ли где-то узреть код. сформированный AdobeFlash, где будет что-то типа:
Код AS3:
class Symbol1 extends MovieClip  {....}
и
Код AS3:
var name1:Symbol1=new Symbol1();
addChild(name1);
name1.x=100;
name1.y=100;
Дальше такой вопрос: каким образом обратиться к переменной или объекту объявленному где-то во фрейме(код написан прямо в кадр) из класса в отдельном файле .as И Где вообще храниться код добавленный в кадр?


Последний раз редактировалось udaaff; 26.09.2012 в 00:45. Причина: мы не слепые
Старый 26.09.2012, 00:57
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 2  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Цитата:
где точка входа в проекте, созданном во A.F.?
Её можно назначить вручную, написав в панели "Properties" в поле "Class" название главного класса(Main).

Цитата:
Это значит, что я создал объект 'name1' класса Symbol унаследованного от класса MovieClip ?
Вы создали экземпляр класса Symbol1 и присвоили свойству "name" значение "name1".

Цитата:
можно ли где-то узреть код. сформированный AdobeFlash, где будет что-то типа:
Нельзя. Этот код генерируется во время компиляции.

Цитата:
Где вообще храниться код добавленный в кадр?
В отдельном .as файле, который создается во время компиляции. Вы его увидеть не сможете.

Старый 26.09.2012, 01:09
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 3  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
спасибо большое, стало гораздо яснее.
Цитата:
Вы создали экземпляр класса Symbol1 и присвоили свойству "name" значение "name1".
а как обратиться к этому экземпляру?
Код AS3:
name1.метод();
так?

Старый 26.09.2012, 02:11
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 4  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
Спасибо. Стало понятней. Ёщё один вопрос: я создал мувиклип. накидал в него кнопок и других контролов. Связал его с классом. Если открыть этот класс для редактирование. то в нём можно увидеть только его объявление и пустой конструктор. Почему он пустой? Почему в конструкторе например нет инициализации контролов? Как обратиться к ним из Main.as?

Старый 26.09.2012, 07:23
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Вы создали экземпляр класса Symbol1 и присвоили свойству "name" значение "name1".
Ну, вообще-то в таком случае нужно было бы использовать getChildByName() чтобы обратиться к этому объекту. А обращаться к нему можно будет через ссылку с таким именем. Так что Unkeep прав, будет создан объект 'name1' класса Symbol1

Цитата:
В отдельном .as файле, который создается во время компиляции. Вы его увидеть не сможете.
Даже декомпиляция не покажет этого кода. Там будет разная хрень с методами addFrameScript()
Вообще, на сколько мне известно, адоби флеш генерирует xml код для описания объектов в символах, а не as3
Короче говоря в явном виде никакой сгенерированный код не хранится

Unkeep, судя по вопросу в программировании вы не новичок. Так зачем переходить на такую плохую практику написания кода в кадрах? Лучше этого не делать. Намного правильнее будет писать код в классах

Старый 26.09.2012, 13:47
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 6  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Ну, вообще-то в таком случае нужно было бы использовать getChildByName() чтобы обратиться к этому объекту. А обращаться к нему можно будет через ссылку с таким именем. Так что Unkeep прав, будет создан объект 'name1' класса Symbol1
getChildByName возвращает экземпляр экранного объекта с заданным именем. То есть обращается к свойству .name у объекта. А если не использовать этот метод и просто ввести trace(mc.name), то выведется имя.

Старый 26.09.2012, 16:12
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 7  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
Цитата:
Unkeep, судя по вопросу в программировании вы не новичок. Так зачем переходить на такую плохую практику написания кода в кадрах? Лучше этого не делать. Намного правильнее будет писать код в классах
Почти весь коду пишу в классах. За исключением анимации. Пока трудно программно двигать мувики, так, чтоб это было красиво..
Если код писать только в классах, не открывая AdobeFlash, то всё вроде бы понятно. Если работать только с временной шкалой, то тоже всё понятно. А я где-то посредине. Хочу использовать возможности и графического интерфейса A.F. cs5 и все вкусности написания кода в классах во Flash Develop. В связи с этим и возникает много вопросов. Как например
Цитата:
я создал мувиклип. накидал в него кнопок и других контролов. Связал его с классом. Если открыть этот класс для редактирования, то в нём можно увидеть только его объявление и пустой конструктор. Почему он пустой? Почему в конструкторе например нет инициализации контролов? Как обратиться к ним из Main.as?
ответ на который, я так и не нашёл

Старый 26.09.2012, 16:56
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 8  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Потому, что как сказал caseyryan: "адоби флеш генерирует xml код для описания объектов в символах". Если хотите обратится к контролу из класса мувиклипа, напишите имя этого контрола. Если хотите обратится к контролам из класса Main, создайте экземпляр класса с контролами и потом обращайтесь к ним.

Пример:
В классе Main пишете
Код AS3:
package 
{
	import flash.display.MovieClip;
 
	public class Main extends MovieClip
	{
		public function Main()
		{
			var mc:RectWithTF = new RectWithTF(); // Создание экземпляра класса RectWithTF
			mc.my_tf.text = "Hello"; // Обращение к текстовому полю экземпляра класса RectWithTF
			mc.x = 100, mc.y = 100;
			addChild(mc);
		}
	}
}
P.S. Советую всю графику подготавливать в Adobe Flash Professional, а затем компилировать её в SWC файл, который подключать в FlashDevelop проекту.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2012-09-26 в 16.02.47.png
Просмотров: 34
Размер:	65.2 Кб
ID:	28510  
Изображения
 


Последний раз редактировалось TWETTI; 26.09.2012 в 17:07.
Старый 26.09.2012, 19:54
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Почему в конструкторе например нет инициализации контролов? Как обратиться к ним из Main.as?
Это можно сделать, но для этого надо каждому вложенному объекту присвоить имя экземпляра (instance name).
Когда я только начинал разбираться с флешем, я часто так делал. Потом понял, что код получается слишком зависимым. Достаточно добавить какой-то еще один контейнер-обертку и все сломается.
Если и делать что-либо в адоби флеш, то все нужные объектны надо экспортировать для actionscript и потом создавать их экземпляры через оператор new в нужных местах

Старый 27.09.2012, 20:09
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 10  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
Только вроде начал думать что врубился во всё, как появилась непонятная проблема.
на словах, я создал во флеше символ Panel(тип мувик), связал его с классом Panel, где прописал все контролы. Потом создал ещё один мувик MovePanel, вложил туда Panel. Связал с классом, экспортировал в SWC.
из в main создаю объект MovePanel, добавляю его на сцену.
Компилирую во флеше: всё норм, панель движется, на панели все контролы
Компилирую в Flash Develop: Панель создаётся, движется, но контролов нет.
добавил в main
Код AS3:
trace(panel.getChildAt(0)); // panel - объект класса MovePanel
, а в конструктор класса Panel
Код AS3:
trace("have been used");
во флеше выводит "have been used" и "[object Panel]"
в FD : " [object MovieClip]"
то есть класс Panel, наследник мувиклипа, не использовался. Почему?????

Добавлено через 5 минут
ещё ради интереса распаковал SWC. там лежат SWF в том числе и моя панель СО ВСЕМИ КОНТРОЛАМИ

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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