![]() |
|
||||||||||
|
|||||
|
Да, именно так, каждое слово по отдельности
|
|
|||||
|
Регистрация: 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. |
|
|||||
|
Что-то у меня не получается, несколько слов заменить,
И кнопка только один раз срабатывает А trace нормально показывает т.е. все слова если есть в XML И сразу вопрос, а можно сделать чтобы это из одного XML на сервере читалось, чтобы добавлять и изменять слова можно было не трогая мувик. А также чтобы он если в XML не нашел соответствуещего слова, то в динамик выводил то что в инпуте Последний раз редактировалось Werewolfe; 29.01.2008 в 11:13. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
Molecula
плохо, и убого смотрится ![]() |
|
|||||
|
Modus ponens
|
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);
Единственное... понятное дело, ХМЛи должны быть идентичной структуры =)
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 29.01.2008 в 16:06. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
Fernando Costa
напиши программу ![]() wvxvw жесть)) когда освобожусь, попробую написать свое. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:25. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|