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

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

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

Регистрация: Aug 2007
Сообщений: 168
По умолчанию Сортировка массива через текстовое поле

Здравствуйте.
Мне хотелось бы сделать осуществить следующее:
Чтобы в при вводе некоего текста в текстовое поле на сцене (начиная с первой буквы) под ним (полем) появлялись-бы слова, содержащие в начале те буквы, что введены в текстовое поле.
Мои скромные знания возможностей AS, и еще более скромное знание самого кода, позволили мне осуществить задуманное след. образом:
1. Должен быть массив со всеми используемыми во флешке словами (к примеру kwArray:Array());
2. должен быть некий код, сортирующий данный массив по алфавиту (наверное цикл);
3. Внизу, под гл. текстовым полем должно быть текстовых полей столько-же, сколько и слов в Массиве (все поля должны бать невидимыми), мне промто нужно, чтоб на каждое слово под гл. полем, можно было нажать, и попасть в соответствующую категорию
4. Ну и должен быть код, позволяющий показывать эти самые невидимые поля в опред. порядке.

Но вся проблема в том, что ни с массивами ни с циклами я работать толком не умею. . И вот в чем состоит моя просьба:

Если ктото знает как это сделать попроще, и если это вообще осуществимо (наверно всетаки осуществимо) Не моглибы Вы создать самый примитивный исходничек, который способен выполнить подобное.
Или хотябы посоветуйте, ЧТО МНЕ ДЕЛАТЬ?
Заранее ОЧЕНЬ БЛАГОДАРЕН за любую оказанную помощь

Старый 08.11.2007, 22:37
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 2  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Цитата:
Чтобы в при вводе некоего текста в текстовое поле на сцене (начиная с первой буквы) под ним (полем) появлялись-бы слова, содержащие в начале те буквы, что введены в текстовое поле.
Вот это не понятно, под текстовым полем должно быть ещё одно текстовое поле, которое копирует (повторяет) текст верхнего, так что ли?

Старый 08.11.2007, 22:43
AlliAS вне форума Посмотреть профиль Отправить личное сообщение для AlliAS Найти все сообщения от AlliAS
  № 3  
Ответить с цитированием
AlliAS
 
Аватар для AlliAS

Регистрация: Aug 2007
Сообщений: 168
Цитата:
Сообщение от Molecula
Вот это не понятно, под текстовым полем должно быть ещё одно текстовое поле, которое копирует (повторяет) текст верхнего, так что ли?
Нет, не копирует, а выводит похожие слова, м вя фишка в том, что эти слова должны являться кнопками.

Старый 08.11.2007, 22:58
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 4  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
AlliAS, познакомьтесь с методами класса String.

Старый 08.11.2007, 23:02
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от aksios
AlliAS, познакомьтесь с методами класса String.
И с возможностями текстовых полей тоже.

Старый 09.11.2007, 01:15
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 6  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Код:
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);
работает, в принципе, но надо еще поработать...это для комбобокса. может пригодится... а мож. и нет.

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

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Для сортивки масиива есть метод sort и то что вам нужно называется
Код:
Array.DESCENDING
__________________
Free-lance | Twitter | Me

Старый 09.11.2007, 12:40
AlliAS вне форума Посмотреть профиль Отправить личное сообщение для AlliAS Найти все сообщения от AlliAS
  № 8  
Ответить с цитированием
AlliAS
 
Аватар для AlliAS

Регистрация: Aug 2007
Сообщений: 168
незнаю, чтото я непонял как работает код, который дал alexcon314 .
Люди, а нельзя чуть попроще? а то мне наверно такую простую вещь нужно сделать, а я даже не понимаю как.
все что у меня есть: это 2 текстовых поля на сцене (input и dynamic); первое зовут in_txt, а второе dyn_txt.
и есть такой код:
Код:
var key:Array = new Array("картошечка", "веревка", "картошка", "карусель", "карина", "карта", "картинка", "шахматы");
in_txt.onChanged = function(){
	//ну что тут надо добавить, подскажите =)
}
подскажите пожалуйста: что нужно добавить в код, чтобы при вводе в in_txt слова "кар" в поле dyn_txt отображались все слова начинающиеся с "кар" (желательно в алфавитном порядке.

Старый 09.11.2007, 13:12
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 9  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Код:
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) : ("-");
};
"-" в dyn_txt выводится, если среди слов массива key не встречается слов, начинающихся с введенных в in_txt букв. попробуйте вводить слова из массива и посмотрите. только dyn_txt надо сделать побольше размером, чтобы все найденные слова отобразились.


Последний раз редактировалось alexcon314; 09.11.2007 в 13:20.
Старый 09.11.2007, 16:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: 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, время: 05:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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