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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.01.2008, 14:40
Werewolfe вне форума Посмотреть профиль Отправить личное сообщение для Werewolfe Найти все сообщения от Werewolfe
  № 11  
Ответить с цитированием
Werewolfe
 
Аватар для Werewolfe

Регистрация: Jan 2007
Адрес: Сочи<->Сургут
Сообщений: 160
Отправить сообщение для Werewolfe с помощью ICQ
Да, именно так, каждое слово по отдельности

Старый 28.01.2008, 14:51
Fernando Costa вне форума Посмотреть профиль Отправить личное сообщение для Fernando Costa Найти все сообщения от Fernando Costa
  № 12  
Ответить с цитированием
Fernando Costa
 
Аватар для Fernando Costa

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
вот я вам набросал тут принцип, думаю дальше сам додумаете
Код:
var s:String = "say hello baby";
var arr:Array = s.split(" ");
trace(arr)
var obj = {};
for(var i = 0; i<arr.length;i++){
obj[arr[i]] = arr[i]
trace('in obj' + obj[arr[i]])
}
__________________
: M F N W :

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

Регистрация: Apr 2007
Сообщений: 1,369
Скорее всего:
1) Грузим Хмель-словарик;
2) Юзер ввел слова;
3) Нажал на кнопку "Перевести";
4) Считываем строку, делим на слова, т.е. через пробел каждое слово в массив;
5) Ищем слова, как вариант Фиксита метод, до тех пор пока дляна массива не будет нулевой.
Позже пример напишу.
**********************
Код:
var x1:XML = new XML("<eng><w>Hi!</w><w>Hello</w><w>You</w></eng>");
var x2:XML = new XML("<rus><w>Прива</w><w>Здрасте</w><w>Ты</w></>rus");
var len =x1.childNodes[0].childNodes.length;
var arr:Array = new Array();
tt.text='You must. Hi!';
mc.onPress=take;
function take(){
arr = tt.text.split(' ');
translate();
}
function translate(){
var j=0;
 while (j<len){
	 if(arr[0]==x1.firstChild.childNodes[j].childNodes[0].nodeValue){
		trace(x2.firstChild.childNodes[j].childNodes[0].nodeValue) ;
	 }
	 j++
}; 
if(arr.length!=0) {arr.shift(); translate();} 
}
Правда не учитывает мусор всякий.
__________________
john


Последний раз редактировалось Molecula; 28.01.2008 в 16:43.
Старый 29.01.2008, 10:00
Werewolfe вне форума Посмотреть профиль Отправить личное сообщение для Werewolfe Найти все сообщения от Werewolfe
  № 14  
Ответить с цитированием
Werewolfe
 
Аватар для Werewolfe

Регистрация: Jan 2007
Адрес: Сочи<->Сургут
Сообщений: 160
Отправить сообщение для Werewolfe с помощью ICQ
Что-то у меня не получается, несколько слов заменить,
И кнопка только один раз срабатывает
А trace нормально показывает т.е. все слова если есть в XML
И сразу вопрос, а можно сделать чтобы это из одного XML на сервере читалось, чтобы добавлять и изменять слова можно было не трогая мувик. А также чтобы он если в XML не нашел соответствуещего слова, то в динамик выводил то что в инпуте
Вложения
Тип файла: zip flasher.zip (4.9 Кб, 60 просмотров)


Последний раз редактировалось Werewolfe; 29.01.2008 в 11:13.
Старый 29.01.2008, 11:52
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 15  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
Molecula
плохо, и убого смотрится

Старый 29.01.2008, 13:38
Fernando Costa вне форума Посмотреть профиль Отправить личное сообщение для Fernando Costa Найти все сообщения от Fernando Costa
  № 16  
Ответить с цитированием
Fernando Costa
 
Аватар для Fernando Costa

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
ну почему бы парсинге не создавать объект такого рода:

Код:
obj[Hi!] = Прива
obj[Hello] = Здрасте
obj[You] = Ты
а потом разбивать строку на слова и делать подмену, если это поле в объекте не undefined? Ну вот как-то так
__________________
: M F N W :

Старый 29.01.2008, 16:00
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var sorce_str:String = '<PinkFloyd><if><line>If I were a swan</line>';
sorce_str += '<line>I\'d be gone</line>';
sorce_str += '<line>If I were a train</line>';
sorce_str += '<line>I\'d be late</line>';
sorce_str += '<line>And if I were a good man</line>';
sorce_str += '<line>I\'d talk with you more often than I do</line></if></PinkFloyd>';

var translations_str:String = '<PinkFloyd><if><line>Если бы я был лебедем</line>';
translations_str += '<line>Я бы ушел</line>';
translations_str += '<line>Если бы я был поездом</line>';
translations_str += '<line>Я бы опоздал</line>';
translations_str += '<line>И если бы я был хорошим человеком</line>';
translations_str += '<line>Я бы говорил с тобой чаще</line></if></PinkFloyd>';

var sorce_xml:XML = new XML(sorce_str);
var dictionary_arr:Array = [];
var translations_xml:XML = new XML(translations_str);
var dictionary:Object = {};

var in_txt:TextField = this.createTextField('in_txt',this.getNextHighestDepth(),0,0,200,20);
in_txt.type = 'input';
in_txt.restrict = 'A-Z a-z 0-9';
in_txt.border = true;
var out_txt:TextField = this.createTextField('out_txt',this.getNextHighestDepth(),210,0,200,200);
out_txt.border = true;

function Token(s:String, trans:XMLNode, link:XMLNode){
	this._links = [];
	this._translations = [];
	this._s = s;
	this._links.push(link);
	this._translations.push(trans);
	this.addLink = function(lnk:XMLNode, trns:XMLNode):Void {
		for(var i:Number=0; i<this._links.length; i++){
			if(this._links[i]==lnk){
				return;
			}
		}
		this._translations.push(trns);
		this._links.push(lnk);
	}
	this.outputTranslations = function():String {
		return this._translations.join('\r');
	}
	this.outputLinks = function():String {
		return this._links.join('\r');
	}
}
function TokenDictionary(){
	this.hasToken = function(s:String):Boolean {
		if(this[s] != undefined) {
			return true;
		} else {
			return false;
		}
	}
	this.getToken = function(s:String) {
		return this[s];
	}
	this.registerToken = function(i:Number, s:String, xmln:XMLNode, txmln:XMLNode):Number {
		var t_name:String = '';
		var last_i:Number = Math.min(s.indexOf(' ',i) >- 1 ? s.indexOf(' ',i) : Number.POSITIVE_INFINITY, s.indexOf('\t',i) >- 1 ? s.indexOf('\t',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf('\r',i) >- 1 ? s.indexOf('\r',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf('\n',i) >- 1 ? s.indexOf('\n',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf('.',i) >- 1 ? s.indexOf('.',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf(',',i) >- 1 ? s.indexOf(',',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf('!',i) >- 1 ? s.indexOf('!',i) : Number.POSITIVE_INFINITY);
		last_i = Math.min(last_i, s.indexOf('?',i) >- 1 ? s.indexOf('?',i) : Number.POSITIVE_INFINITY);
		if(last_i != Number.POSITIVE_INFINITY){
			t_name = s.substr(i,last_i-i);
			if(!this.hasToken(t_name)){
				trace('Token created: '+t_name);
				this[t_name] = new Token(t_name, txmln, xmln);
			} else {
				this[t_name].addLink(xmln, txmln);
			}
		}
		return last_i-i;
	}
}
function createTokens(xml:XML, txml:XML) {
	dictionary = new TokenDictionary();
	findToken(xml,txml,dictionary);
}
function findToken(xmln:XMLNode, txmln:XMLNode, d:Object) {
	if(xmln.nodeType==3){
		var s:String = xmln.nodeValue;
		var i:Number = 0;
		while(i<s.length){
			switch(s.charAt(i)){
				case '\t':
				case '\r':
				case '\n':
				case ' ':
				case '.':
				case ',':
				case '-':
				case '!':
				case '?':
					i++;
					break;
				default:
					i+=d.registerToken(i,s,xmln,txmln);
					break;
			}
		}
	} else if(xmln.hasChildNodes()){
		trace('Node is a parent');
		for(var i:Number=0; i<xmln.childNodes.length; i++){
			trace('Processing node: '+i);
			findToken(xmln.childNodes[i],txmln.childNodes[i],d);
		}
	}
}
createTokens(sorce_xml, translations_xml);
this.onKeyDown = function(){
	if(Key.getCode() == Key.ENTER){
		if(dictionary.hasToken(in_txt.text)){
			out_txt.text = dictionary.getToken(in_txt.text).outputTranslations();
		} else {
			out_txt.text = 'nice try!';
		}
	}
}
Key.addListener(this);
Немного извращенно, но это еще на самом деле очень простенький вариант :P

Единственное... понятное дело, ХМЛи должны быть идентичной структуры =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 29.01.2008 в 16:06.
Старый 29.01.2008, 16:00
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 18  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
Fernando Costa
напиши программу

wvxvw
жесть)) когда освобожусь, попробую написать свое.

Старый 29.01.2008, 16:03
Fernando Costa вне форума Посмотреть профиль Отправить личное сообщение для Fernando Costa Найти все сообщения от Fernando Costa
  № 19  
Ответить с цитированием
Fernando Costa
 
Аватар для Fernando Costa

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
Mr. Fixit
Будет время - напишу
__________________
: M F N W :

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

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

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


 


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


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