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

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

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

Регистрация: Jan 2007
Сообщений: 2
По умолчанию Динамически создать Component типа ComboBox

Всем привет.
Возникла необходимость создать динамически компонент в AS3 и вытащить его в мувик. Создание компонента надо запихнуть в класс.
Собственно есть мувик, есть файл MyControl.as находящийся в директории control относительно мувика.

MyControl.as
Код:
package control
{
	import fl.controls.ComboBox;
	import flash.display.MovieClip;

	public class MyControl {
		public var c:ComboBox;
		
		public function MyControl (parMc:MovieClip){
			c = new ComboBox();
			parMc.addChild(c);
		}
	}
}
В первом фрейме клипа код
Код:
import control.MyControl;
var ctrl:MyControl = new MyControl(this);
При запуске выдает сообщения (ругается на MyControl.as):
1046: Type was not found or was not a compile-time constant: ComboBox.
1180: Call to a possibly undefined method ComboBox.
1172: Definition fl.controls:ComboBox could not be found.

Однако, если вытащить на сцену один компонент вручную, то он без проблем создает и мой динамически.

Подскажите пожалуйста почему он не может ComboBox импортировать из fl.controls если в мувик не вытащен компонент? Как это можно обойти?

Спасибо заранее.


Последний раз редактировалось xception; 16.09.2007 в 18:09.
Старый 16.09.2007, 18:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Надо положить компонент комбобокса в библиотеку.

Старый 16.09.2007, 18:21
xception вне форума Посмотреть профиль Отправить личное сообщение для xception Найти все сообщения от xception
  № 3  
Ответить с цитированием
xception

Регистрация: Jan 2007
Сообщений: 2
Спасибо, понятно.

Старый 22.02.2008, 13:26
STILL.05 вне форума Посмотреть профиль Отправить личное сообщение для STILL.05 Найти все сообщения от STILL.05
  № 4  
Ответить с цитированием
STILL.05

Регистрация: Sep 2005
Сообщений: 194
использую ComboBox
запускаю swf через FlashCS3 все работает нормально
если запустить swf через плеер то нифига не работает
ругается на ошибку в строчке
Код:
comboBox = new ComboBox()
вот текст ошибки
Код:
TypeError: Error #2007: Parameter type must be non-null.
	at flash.events::EventDispatcher/addEventListener()
	at fl.core::UIComponent/fl.core:UIComponent::callLater()
	at fl.core::UIComponent/invalidate()
	at fl.core::UIComponent/setSharedStyle()
	at fl.managers::StyleManager$/fl.managers:StyleManager::setSharedStyles()
	at fl.managers::StyleManager$/registerInstance()
	at fl.core::UIComponent$iinit()
	at fl.controls::ComboBox$iinit()
	at EnvironmentTest/EnvironmentTest::initSpeed()[D:\package\EnvironmentTest.as:91]
кто знает в чем проблема?
__________________
нормально делай - нормально будет

Старый 22.02.2008, 13:56
Olegg вне форума Посмотреть профиль Найти все сообщения от Olegg
  № 5  
Ответить с цитированием
Olegg
Banned
[+1 21.02.08]
[+4 21.02.08]
[+5 13.03.08]
[+4 13.03.08]

Регистрация: Feb 2008
Сообщений: 63
Код:
var comboBox:comboBox = new ComboBox();
может так...тее ж надо загнать в переменную типа comboBox и с ней уже работать.

Старый 22.02.2008, 17:19
STILL.05 вне форума Посмотреть профиль Отправить личное сообщение для STILL.05 Найти все сообщения от STILL.05
  № 6  
Ответить с цитированием
STILL.05

Регистрация: Sep 2005
Сообщений: 194
не понял, вы о чем?
__________________
нормально делай - нормально будет

Старый 25.02.2008, 03:34
FilimoniC вне форума Посмотреть профиль Отправить личное сообщение для FilimoniC Посетить домашнюю страницу FilimoniC Найти все сообщения от FilimoniC
  № 7  
Ответить с цитированием
FilimoniC

Регистрация: Jan 2007
Сообщений: 39
Отправить сообщение для FilimoniC с помощью ICQ
Изнутри конструктора вызывается addEventListener(type,function)? Так может type в каком-то из случаев null ? Скорее всего проблема там

Старый 26.02.2008, 12:20
STILL.05 вне форума Посмотреть профиль Отправить личное сообщение для STILL.05 Найти все сообщения от STILL.05
  № 8  
Ответить с цитированием
STILL.05

Регистрация: Sep 2005
Сообщений: 194

удалил из кода все ссылки на объект comboBox
создаю его в методе Init
Код:
private function Init():void {
      var comboBox:ComboBox = new ComboBox()
}
все равно выдает туже ошибку


мало того взял из хелпа код (точная копия из хелпа)
Код:
import fl.controls.*;
import fl.containers.*;
import fl.controls.listClasses.*;
import fl.controls.dataGridClasses.*;
import fl.controls.progressBarClasses.*;
import fl.core.UIComponent;
import fl.data.DataProvider;

var dp:DataProvider = new DataProvider();
dp.addItem( { label: "BaseScrollPane",    data:BaseScrollPane } );
dp.addItem( { label: "Button",             data:Button } );
dp.addItem( { label: "CellRenderer",    data:CellRenderer } );
dp.addItem( { label: "CheckBox",         data:CheckBox } );
dp.addItem( { label: "ColorPicker",     data:ColorPicker } );
dp.addItem( { label: "ComboBox",         data:ComboBox } );
dp.addItem( { label: "DataGrid",         data:DataGrid } );
dp.addItem( { label: "HeaderRenderer",    data:HeaderRenderer } );
dp.addItem( { label: "ImageCell",        data:ImageCell } );
dp.addItem( { label: "IndeterminateBar",data:IndeterminateBar } );
dp.addItem( { label: "Label",             data:Label } );
dp.addItem( { label: "List",             data:List } );
dp.addItem( { label: "NumericStepper",     data:NumericStepper } );
dp.addItem( { label: "ProgressBar",     data:ProgressBar } );
dp.addItem( { label: "RadioButton",     data:RadioButton } );
dp.addItem( { label: "ScrollPane",         data:ScrollPane } );
dp.addItem( { label: "Slider",             data:Slider } );
dp.addItem( { label: "TextArea",         data:TextArea } );
dp.addItem( { label: "TextInput",         data:TextInput } );
dp.addItem( { label: "TileList",         data:TileList } );
dp.addItem( { label: "UILoader",         data:UILoader } );
dp.addItem( { label: "UIComponent",     data:UIComponent } );

var cb:ComboBox = new ComboBox();
cb.move(10,10);
cb.setSize(300,25);
cb.prompt = "Select a component to view its styles";
cb.rowCount = 12;
cb.dataProvider = dp;
cb.addEventListener(Event.CHANGE, showStyleDefinition);
addChild(cb);

var dg:DataGrid = new DataGrid();
dg.setSize(425,300);
dg.move(10,50);
dg.columns = [ new DataGridColumn("StyleName"), new DataGridColumn("DefaultValue") ];
addChild(dg);

function showStyleDefinition(e:Event):void {
    var componentClass:Class = e.target.selectedItem.data as Class;
    var styles:Object = componentClass["getStyleDefinition"].call(this);
    trace(styles.toString());
    var styleData:DataProvider = new DataProvider();
    for(var i:* in styles) {
        trace(i + " : " + styles[i]);
        styleData.addItem( { StyleName:i, DefaultValue:styles[i] } );
    }
    styleData.sortOn("StyleName");
    dg.dataProvider = styleData;
}
если открыть уже скомпиленный swf во FlashCS3 то все работает
если открыть swf через плеер но нифига не работает
подскажите плиз, в чем может быть проблема?
__________________
нормально делай - нормально будет

Старый 26.02.2008, 13:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Проверил. Все работает.

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
вы случайно открываете не через 8-ой плеер?
__________________
Flash Developer
Папа TDP4 Team Battle

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

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

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


 


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


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