Просмотр полной версии : Массив и комбобокс
Возник вопрос как загнать массив значений в комбобокс?
есть 2 массива nameArr и dataArr, число элементов одинаковое... по 248 можно ли как нибудь их загнать все в разные айтемы комбобокса?
Вставляю так, но все в 1 строчку вылезает
import mx.controls.*;
var cb:ComboBox;
cb = createClassObject(ComboBox, "cb", 0);
cb.setSize(300,cb.height);
cb.editable = true;
cb.text = "Выберите страну";
cb.setStyle(font,"Tahoma");
cb.setStyle(fontsize,"12");
cb.dataProvider = [{label:nameArr, data:dataArr}];
cb.move(500,20);
for(var i=0,arr=[];i<nameArr.length;i++) arr.push({label:nameArr[i], data:dataArr[i]});
cb.dataProvider = arr;
for(var i=0;i<nameArr.length;i++) cb.addItem({label:nameArr[i], data:dataArr[i]});
что-то нигде не могу найти что отвечает за нажатие на пункт комбобокса... подскажет кто?
как такового события нажатия нет
есть ComboBox.change
cb.addEventListener("change",onChange);
function onChange(){
trace(cb.selectedItem.label);
}
спасибо, буду копать дальше...
вроде разобрался, но тут вылезла еще проблема, у меня комбобокс editible = true, укопал уже поиск и мука но не нашел функции отвечающей за ввод значения и при нажатии энтера вывода нужной data... единственное что есть идея: использовать:
cb.addEventListener("enter", onEnter);
function onEnter () {
elem = cb.selectedItem.data;
trace(elem);
}
но во время того как ввожу что либо трейсится undifiened, а жму Enter ничего не происходит...
Есть другая идея, что просто при вводе список комбобокса раскрывается и перемещается к нужному лейблу... но тож не могу понять как это реализовать...
Вы вообще мануал читали по боксу?
http://livedocs.macromedia.com/flash/8/main/00003179.html
Там даже пример явный про листенер, а не про функцию
CorC, скажите плиз это реально вообще реализовать?
Реально, заменить функцию обьектом с методом enter как в примере
2CorC: объект в данном случае не причем: функция вполне может быть листенером, отличие от объекта с одноименным событию методом только в том куда указывает this в ней..
2Snut: непонятно что ты смотришь.., глянь так:
cb.addEventListener("enter", onEnter);
function onEnter () {
var dp=cb.dataProvider;
for( var i in dp){
if(dp[i].label==cb.text){
trace(dp[i].data);
return;
}
}
trace("мимо");
}
вариант с раскрытием списка
cb.addEventListener("enter", onEnter);
function onEnter () {
var dp=cb.dataProvider;
for( var i in dp){
if(dp[i].label==cb.text){
//trace(dp[i].data);
cb.selectedIndex=int(i);
cb.doLater(cb,"open");
return;
}
}
}
silin, спасибо огромное! *пошел писать Tween для перемещение к нужной области по выбору из комбобокса*
что-то я не понял разве класс Tween можно использовать только в АС3?
не, можно где угодно..
только в 9-ом плеере для AS3 он стал родным,
а до этого (AS2) был пользовательским, см. mx.transitions.Tween или mx.effects.Tween в 7/8-чных пакетах классов
а пасиб, ща импортну :)
кстати, можно о нем что-нить на русском почитать?
и еще вопрос возник, механика резиновой флешки?
Сначала скейлим всю флешку до размера окна а потом уменьшаем объекты, так?
про твин не встречал на русском
про резину: http://noregret.org/tutor/elastic/
silin, ээээ, как это родным стал?
a-a, пардон, деза: померещилось..
такой же он как и прежде (fl.transitions.Tween)
Родилась мысль, а точнее с нею и вопрос, вот вставляю я флешку в HTML через SWFobject див по умолчанию невидим при нажатии на ссылку становится видимым, а теперь внимание вопрос, грузиться флешка когда будет? и можно ли сделать так чтобы она грузилась только при появлении дива?
имхо будет грузится когда SWFObject запишет контент в див, т.е. когда надо тогда и будет, в чем проблема?
зы: спроси лучше в отдельной теме..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.