![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 168
|
Здравствуйте.
Мне хотелось бы сделать осуществить следующее: Чтобы в при вводе некоего текста в текстовое поле на сцене (начиная с первой буквы) под ним (полем) появлялись-бы слова, содержащие в начале те буквы, что введены в текстовое поле. Мои скромные знания возможностей AS, и еще более скромное знание самого кода, позволили мне осуществить задуманное след. образом: 1. Должен быть массив со всеми используемыми во флешке словами (к примеру kwArray:Array()); 2. должен быть некий код, сортирующий данный массив по алфавиту (наверное цикл); 3. Внизу, под гл. текстовым полем должно быть текстовых полей столько-же, сколько и слов в Массиве (все поля должны бать невидимыми), мне промто нужно, чтоб на каждое слово под гл. полем, можно было нажать, и попасть в соответствующую категорию 4. Ну и должен быть код, позволяющий показывать эти самые невидимые поля в опред. порядке. Но вся проблема в том, что ни с массивами ни с циклами я работать толком не умею. . И вот в чем состоит моя просьба:Если ктото знает как это сделать попроще, и если это вообще осуществимо (наверно всетаки осуществимо) Не моглибы Вы создать самый примитивный исходничек, который способен выполнить подобное. Или хотябы посоветуйте, ЧТО МНЕ ДЕЛАТЬ? Заранее ОЧЕНЬ БЛАГОДАРЕН за любую оказанную помощь |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Цитата:
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 168
|
Цитата:
|
|
|||||
|
loading 50%
|
AlliAS, познакомьтесь с методами класса String.
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
|
|||||
|
listener
|
var autoCombo = this.createClassObject(mx.controls.ComboBox, "autoCombo", 0, {_x:50, _y:50, _width:120, editable:true});
var words:Array = [];// массив слов
var wData:Array = [];
this.keyUp = function(eo:Object) {
var obj = eo.target;
var cbtext = obj.text;
obj.close();
wData.splice(0);
var i = 0;
while (words[i]) {
var w = words[i];
if (w.indexOf(cbtext, 0) == 0) {
wData.push({label:w});
}
i++;
}
wData.sortOn("label");
obj.dataProvider = wData;
obj.open();
obj.text = cbtext;
};
autoCombo.addEventListener("keyUp", this);
|
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 168
|
незнаю, чтото я непонял как работает код, который дал alexcon314
.Люди, а нельзя чуть попроще? а то мне наверно такую простую вещь нужно сделать, а я даже не понимаю как. все что у меня есть: это 2 текстовых поля на сцене (input и dynamic); первое зовут in_txt, а второе dyn_txt. и есть такой код: var key:Array = new Array("картошечка", "веревка", "картошка", "карусель", "карина", "карта", "картинка", "шахматы");
in_txt.onChanged = function(){
//ну что тут надо добавить, подскажите =)
}
![]() |
|
|||||
|
listener
|
this.createTextField("in_txt", 5, 50, 50, 150, 20);
in_txt.type = "input";
in_txt.border = true;
in_txt.multiline = false;
this.createTextField("dyn_txt", 10, 50, 80, 150, 200);
dyn_txt.type = "dynamic";
dyn_txt.border = true;
dyn_txt.multiline = true;
// если текстовые поля уже есть строки выше не нужны. в них поля создаются динамически
var key:Array = new Array("картошечка", "веревка", "картошка", "карусель", "карина", "карта", "картинка", "шахматы");
var wData:Array = new Array();
in_txt.onChanged = function() {
var intext = in_txt.text;
wData.splice(0);
var i = 0;
while (key[i]) {
var w = key[i];
if (w.indexOf(intext, 0) == 0) {
wData.push({label:w});
}
i++;
}
wData.sortOn("label");
var match = "";
var i = 0;
while (wData[i].label) {
match += wData[i].label + newline;
i++;
}
dyn_txt.text = (match) ? (match) : ("-");
};
Последний раз редактировалось alexcon314; 09.11.2007 в 13:20. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
var key_array = new Array("картошечка", "веревка", "картошка", "карусель", "карина", "карта", "картинка", "шахматы");
var in_txt = this.createTextField("input_txt", this.getNextHighestDepth(), 10, 10, 200, 100);
in_txt.type = "input";
in_txt.border = true;
var out_txt = this.createTextField("dinamic_txt", this.getNextHighestDepth(), 10, 120, 200, 200);
out_txt.border = true;
out_txt.multiline = true;
out_txt.wordWrap = true;
out_txt.html = true;
in_txt.onChanged = function()
{
if (this.length > 0) {
var str = "";
for (var i = 0; i < key_array.length; i++) {
if (this.text == key_array[i].substr(0, this.length)) {
str += "<a href='' target='_blank'>" + key_array[i] + " </a>";
}
}
out_txt.htmlText = str;
}
};
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|