![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 2
|
Всем привет.
Возникла необходимость создать динамически компонент в 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);
}
}
}
При запуске выдает сообщения (ругается на 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. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Надо положить компонент комбобокса в библиотеку.
|
|
|||||
|
Регистрация: Jan 2007
Сообщений: 2
|
Спасибо, понятно.
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 194
|
использую ComboBox
запускаю swf через FlashCS3 все работает нормально если запустить swf через плеер то нифига не работает ругается на ошибку в строчке вот текст ошибки 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]
__________________
нормально делай - нормально будет |
|
|||||
|
Banned
[+1 21.02.08]
[+4 21.02.08] [+5 13.03.08] [+4 13.03.08] Регистрация: Feb 2008
Сообщений: 63
|
может так...тее ж надо загнать в переменную типа comboBox и с ней уже работать.
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 194
|
не понял, вы о чем?
__________________
нормально делай - нормально будет |
|
|||||
|
Изнутри конструктора вызывается addEventListener(type,function)? Так может type в каком-то из случаев null ? Скорее всего проблема там
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 194
|
удалил из кода все ссылки на объект comboBox создаю его в методе Init все равно выдает туже ошибку ![]() мало того взял из хелпа код (точная копия из хелпа) 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 через плеер но нифига не работает подскажите плиз, в чем может быть проблема?
__________________
нормально делай - нормально будет |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Проверил. Все работает.
|
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
вы случайно открываете не через 8-ой плеер?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|