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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.11.2012, 01:46
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Работа с классом объектов созданных в режиме дизайна

Не знаю с чего начать.
На главной временной шкале в одном слое сделал: мувик, текстовое поле, кнопку, проименовал их(my_mc, my_txt и my_btn), затем выделил их, нажал F8, создал из них один мувиклип mc и и одновременно с созданием mc создал для него класс MyClass. Открыл этот класс и заступорился. Подскажите плиз хотя бы на одном примере как можно в этом классе (если конечно можно) обращаться к вложенными в mc объектам my_mc, my_txt и my_btn. У меня есть опыт написания классов "с чистого листа" но с такой ситуацией столкнулся впервые, объекты созданы не программно а в режиме дизайна, пробую, но что-то никак пока не получается.
Если писать долго то плиз, скиньте ссылочку.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
getChildByName()?
__________________
Reality.getBounds(this);

Старый 15.11.2012, 03:30
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 3  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Цитата:
Сообщение от Chum Посмотреть сообщение
сделал: мувик, текстовое поле, кнопку, проименовал их(my_mc, my_txt и my_btn), затем выделил их, нажал F8, создал из них один мувиклип mc и и одновременно с созданием mc создал для него класс MyClass
Ну вот, откройте ваш мувик и пропишите объектам внутри него instance_name'ы. После, внутри класса вашего мувика сможете управлять этими объектами по этим именам.

Старый 15.11.2012, 10:16
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 4  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Instance_name'ы были прописаны при создании и именно их я имел ввиду когда говорил о них. Тут закавыка в том что этот подход для меня новый и я не могу пока за что-то ухватиться, я не знаю что стоит за - getChildByName(). Ну хоть какой-то пример в коде или ссылочку на материал по этому вопросу.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У Вас нет справки в редакторе? Безобразие. Воспользуйтесь онлайн-справкой.
http://help.adobe.com/ru_RU/FlashPla...ldByName%28%29

Добавлено через 4 минуты
Попробуйте написать в конструкторе своего класса
Код AS3:
var txt:TextField = this.getChildByName("my_txt") as TextField;
txt.text = "Я нашлась";
Добавлено через 8 минут
Но вообще, если у Вас уже есть опыт работы с классами, лучше бы развивать его, а не дизайнерский подход "навалить, а там разберемся". Укажите классы вашим символам в библиотеке и добавляйте их в свой мувиклип (а лучше спрайт) кодом, а не ручками.
__________________
Reality.getBounds(this);

Старый 15.11.2012, 12:09
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 6  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Полностью соглашусь с тем что лучше кодом чем руками но фишка в том что вложенными объектами могут оказаться компоненты а это пока для меня достаточно новое направление. Пока разбираюсь со вставленными вручную, потом буду пробовать программно, так для меня более понятно.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Если мне память не изменяет, можно создать публичные переменные с тем же именем, что и instance name. При создании экземпляра класса эти переменные будут инициализированы.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 15.11.2012, 13:44
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 8  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Цитата:
Сообщение от alatar Посмотреть сообщение
Если мне память не изменяет, можно создать публичные переменные с тем же именем, что и instance name. При создании экземпляра класса эти переменные будут инициализированы.
Именно.

Достаточно присвоить класс одному "клипу-контейнеру", а к детям обращаться по инстансам.

Код AS3:
package {
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.display.SimpleButton;
	import flash.events.MouseEvent;
 
	public class MyClass extends MovieClip{
		public var my_mc:MovieClip;
		public var my_btn:SimpleButton;
		public var my_txt:TextField;
 
		public function MyClass() {
			my_mc.addEventListener(MouseEvent.CLICK, myMCHandler);
		}
		private function myMCHandler(e:MouseEvent):void {
			trace("меня нажали");
		}
	}
}
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.events.Event;
 
	public class Main extends Sprite {
		private var _myClass:MyClass;
 
		public function Main():void {
			if (stage) {
				this.init();
			} else {
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		private function init(event:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			_myClass = new MyClass();
			addChild(_myClass);
			_myClass.my_btn.addEventListener(MouseEvent.CLICK, myButtonHandler);
		}
		private function myButtonHandler(e:MouseEvent):void {
			trace("и меня нажали");
		}
	}
 
}

Старый 15.11.2012, 14:36
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
и одновременно с созданием mc создал для него класс MyClass
Просто пропишите для своего мувика класс MyClassGraphic. Он создастся автоматически. Все ваши инстансы будуд доступны через getChildByName() или []. Скомпильте swc. Далее уже создайте класс MyClass, в котором инстанциируйте MyClassGraphic из swc, и т.д.

Старый 25.11.2012, 02:52
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 10  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Здравствуйте!

Наткнулся на этот топик и думал решилась моя проблема по созданию стиля (формы) приложения, но не разобрался с пояснениями форумчан (опыта маловато). В общем, допер я как создать форму с помощью Adobe Flash Pro CS5.5 и создавать для нее события с помощью FB 4.6.

Пишу все это с целью окончательного допонимания, может сделал что-то не правильно, направите, да и для некоторых новичков тема окажется актуальна (например для тех кто привык в делфинарии с компонентами работать)

Мои действия по созданию формы:
1. В Flash Pro CS5 создал "проект ActionScript 3.0".
2. Создал новый символ (ctrl+F8). Назвал Form_1.
3. Создал квадрат в кадре символа. На него набросал стандартные компоненты из меню компонентов (кнопки, текстовые поля и т.п.)(вызов -> ctrl+F7).
4. Важно указать "Instance Name" каждому компоненту в свойствах компонента (там же другие свойства редактируются), через это имя происходит обращение к компоненту.
5. Вышел с редактора символов на главную сцену.
6. Перетащил всю группу символов на сцену (в кадр). Указал "Instance Name" - _Form_Par
7. Конвертанул их в так скажем общий символ (правой кнопкой по вытащеному символу - Convert to Symbol), Назвал его MyForm с галочкой экспорта в ActionScript 3.
8. Сохранил. Важно в свойствах публикации поставить галочку "SWC". Опубликовал (alt+shift+F12).
9.В FB 4.6 создал "проект ActionScript 3.0".
10. В свойствах проекта, во вкладке "Путь сборки.." добавил сохраненный SWC из Flash Pro CS5.
11. Написал следующий код:

Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Test_interface extends Sprite
	{
		public var _Form:MyForm;
		public function Test_interface()
		{
				_Form = new MyForm();
				addChild(_Form);
				_Form._Form_Par.btn_1.addEventListener(MouseEvent.CLICK, onMc);
		}
		private function onMc(e:MouseEvent):void {
			_Form._Form_Par.btn_1.removeEventListener(MouseEvent.CLICK, onMc);
			_Form._Form_Par.lbl_1.text = "Hello Word!!";
		}
	}
}
У кого есть какие замечания, приму во внимание, но пока что так разобрался.

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

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

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


 


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


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