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

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

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

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
По умолчанию Как создать ComboBox программно (FlashDevelop)

Здравствуйте. Хочу переписать своё приложение с AS2 на AS3. Но вот решил сделать это полностью во FlashDevelop. Всё вроде получается. Но столкнулся с трудностью. Каким образом можно программно создавать компонент ComboBox? Обыкновенное создание кодом к сожалению не работает.

Код AS3:
package net.azag.as3
{
	import fl.controls.ComboBox;
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author Azag-Thoth
	 */
	public class Main extends MovieClip 
	{
		public var playlist_cb : ComboBox;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			playlist_cb = new ComboBox();
			playlist_cb.addItem({label:"Item 1"});
			playlist_cb.addItem({label:"Item 2"});
			playlist_cb.addItem({label:"Item 3"});
			addChild(playlist_cb);
 
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
		}
 
	}
 
}
После компиляции такая ошибка:
Код:
TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/addChildAt()
	at fl.controls::BaseButton/drawBackground()
	at fl.controls::BaseButton/draw()
	at fl.core::UIComponent/drawNow()
	at fl.controls::ComboBox/drawLayout()
	at fl.controls::ComboBox/draw()
	at fl.core::UIComponent/callLaterDispatcher()
Я думаю что дело в том, что если бы я делал это во Flash IDE то там, на рабочий стол перетягиваем компонент, а затем с него удаляем и так после фиксации компонента в библиотеки символов можно с ним работать. Здесь же библиотеки символов как бы и нету вовсе. Подозреваю что это достаточно фундаментальный вопрос который имеет отношение к использованию не только ComboBox, но и любых других компонентов. Пожалуйста, подскажите как сделать или где почитать об этом.

Добавлено через 46 минут
Вероятно поторопился с созданием темы. Уже нагуглил.
Тут:
http://www.flasher.ru/forum/showthread.php?t=137673
http://www.murmadillo.tut.su/html/slider.html
http://flashgamedev.ru/viewtopic.php?f=6&t=1019
http://stackoverflow.com/questions/5...tionscript-3-0
http://flashgamedev.ru/viewtopic.php?f=6&t=1019
http://as3coder.blogspot.ru/2009/12/...shdevelop.html
http://www.flashdevelop.org/communit...hp?f=13&t=4344

Добавлено через 2 часа 33 минуты
Тем не менее пока ничего не выходит. Если у кого-то есть пример как такое сделать, покажите пожалуйста.

Добавлено через 3 часа 14 минут
Расскажу поподробнее как я делаю сейчас.
Во Flash IDE создаю новый .fla (тип AS3)
После этого перетаскиваю в библиотеку компонент.
В параметрах публикации выставляю галочку на swc. Публикую.
После этого во FlashDevelop нажимаю на появившемся .swc файлике второй кнопкой мыши и нажимаю "Add To Library".

Теперь код:
Код AS3:
package net.azag.as3
{
	import fl.controls.ComboBox;
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author Azag-Thoth
	 */
	public class Main extends MovieClip 
	{
		public var playlist_cb : ComboBox;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			playlist_cb = new ComboBox();
			playlist_cb.addItem({label:"Item 1"});
			playlist_cb.addItem({label:"Item 2"});
			playlist_cb.addItem({label:"Item 3"});
			addChild(playlist_cb);
 
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
		}
 
	}
Ошибки:
Код:
TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/addChildAt()
	at fl.controls::BaseButton/drawBackground()
	at fl.controls::BaseButton/draw()
	at fl.core::UIComponent/drawNow()
	at fl.controls::ComboBox/drawLayout()
	at fl.controls::ComboBox/draw()
	at fl.core::UIComponent/callLaterDispatcher()

TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/addChildAt()
	at fl.controls::BaseButton/drawBackground()
	at fl.controls::BaseButton/draw()
	at fl.core::UIComponent/callLaterDispatcher()
Добавлено через 17 часов 39 минут
Всё заработало после перезапуска FlashDevelop. Чудеса да и только.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.


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

Теги
AS3 , combobox , FlashDeveloper
Опции темы
Опции просмотра

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

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


 


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


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