Strona 1 z 1
Wychwycenie tekstu.
: wt kwie 08, 2008 4:38 pm
autor: SlowMotion
Witam
czy istnieje możliwość przeanalizowania i wychwycenia tekstu?
Przykładowo mamy opis produktu i jego cenę w jednym zdaniu:
Samochód audi A4 kolor: czarny . . . cena:2zł.
I teraz bym chciał żeby zwrócone zostały tylko 2 zł i tak żeby z różnych tekstów potrafił to wyłapać przy przykładowym buttonie onRelease.
wyszukiwanie ceny
: śr kwie 09, 2008 12:32 pm
autor: Marek_bf
Musisz ustalić jakieś kryteria wyszukiwania, czyli np. szukanie pomiędzy słowem cena: a zł.
Kod: Zaznacz cały
var startStr:String = "cena:";
var stopStr:String = "zł";
var searchString:String = "Samochód audi A4 kolor: czarny . . . cena: 28.97 zł.";
//
myBtn.onRelease = function() {
myTxt.text = searchPrice(startStr, stopStr, searchString) + "zł";
};
//
function searchPrice(startStr:String, stopStr:String, searchString:String):Number {
var pozStart:Number = searchString.indexOf(startStr) + startStr.length;
var pozStop:Number = searchString.indexOf(stopStr, pozStart);
searchString = searchString.substring(pozStart, pozStop).split(" ").join("");
return parseFloat(searchString);
}
Można byłoby zwrócić z funkcji stringa z ceną i słowem zł, ale lepiej jest zwracać number pozwala to ewentualnie dodawać i odejmować cenę od innej sumy, a stringa zł zawsze można dodać.
Re: Wychwycenie tekstu.
: czw kwie 17, 2008 1:12 pm
autor: SlowMotion
hmmm . .
chciałem to sprawdzić i tak wrzucam dynamic text field i btn i powinno śmigać tak???
a nie śmiga:( Coś źle robię???
Re: Wychwycenie tekstu.
: czw kwie 17, 2008 1:48 pm
autor: Marek_bf
Jeśli masz pole dynamictext i instancji myTxt i button czy movieclip o instancji myBtn to nie tylko powinno, ale musi śmigać. Co robisz źle? Kto to może wiedzieć nie widząc, co robisz?.
Re: Wychwycenie tekstu.
: pt kwie 18, 2008 9:36 am
autor: SlowMotion
Sorry za zbędne posty Śmiga jak wiosenny deszczyk:D (jakzwykle niedopatrzenie - duża litera w nazie btn)
Teraz jak chcem żeby przeszukiwało mi jakieś pole, w które dynamicznie wczytuje text to daje:
I chcem żeby wracało jako zmienna a nie w pole textowe to daje:
Kod: Zaznacz cały
myBtn.onRelease = function() {
mojaZmienna= searchPrice(startStr, stopStr, searchString) + "zł";
chyba dobrze myśle?
RESPECT
Re: Wychwycenie tekstu.
: wt kwie 22, 2008 9:49 am
autor: SlowMotion
Nie wiem jakoś mi to niechce działać wrzucam co trzeba daje:
Kod: Zaznacz cały
Price = searchPrice(startStr, stopStr, searchString);
trace(searchString);
trace(stopStr);
trace(startStr);
trace(Price);
i dostaje odpowiednio:
dobrze
dobrze
dobrze
undefined
co może być przyczyną takiego błędu???
z góry dzięki za podpowiedzi
pozdrawiam
Re: Wychwycenie tekstu.
: wt kwie 22, 2008 10:22 am
autor: Marek_bf
Kod: Zaznacz cały
var startStr:String = "cena:";
var stopStr:String = "zł";
var searchString:String = "Samochód audi A4 kolor: czarny . . . cena: 28.97 zł.";
//
Price = searchPrice(startStr, stopStr, searchString);
trace(searchString);
trace(stopStr);
trace(startStr);
trace(Price);
//
function searchPrice(startStr:String, stopStr:String, searchString:String):Number {
var pozStart:Number = searchString.indexOf(startStr) + startStr.length;
var pozStop:Number = searchString.indexOf(stopStr, pozStart);
searchString = searchString.substring(pozStart, pozStop).split(" ").join("");
return parseFloat(searchString);
}
Re: Wychwycenie tekstu.
: pt kwie 25, 2008 10:58 am
autor: SlowMotion
Mam już, nie wiem czemy wszystko się działa już dobrze, wystarczyło poprostu żeby zatwierdzenie zmiennych było poza funkcją, gdy zmienne były wewnątrz on Release to przestało działać.
Ale apropo tej ceny mam jeszcze pare pytanek pytanie, otóż mam sobie na scenie komponent dataGrid który zbiera mi informacje (jako koszyk). Mam w nim 3 kolumny: nazwa, ilość i cena. I teraz jak zrobić żeby:
1/podliczał mi ogólną cenę, dodawał wszystkie liczby w kolumnie cena:
Kod: Zaznacz cały
koszyk.onEnterFrame=function(){
for(var i=0; i<list.length;i++)podlicz+=Number(koszyk.getItemAt(i).Cena)
koszyk.total.text = "Razem: "+round2D(Podlicz)
}
Myślałem coś takiego ale niestety to niedziałczy.
1.5/Jak zrobić żeby po prostu podliczył ile jest tych pól, bez podliczania ich wartości.
2/Jak potem cały ten komponent spisać do pliku tekstowego? To znaczy nie samo zapisanie w plik tekstowy, tylko jak zrobić żeby zwrócił mi to w podobnej postaci, każda pozycja z ilością i ceną?
Re: Wychwycenie tekstu.
: pt kwie 25, 2008 2:04 pm
autor: Marek_bf
Kod: Zaznacz cały
dataGrid.addItem({label:Math.random(), Cena:10});
dataGrid.addItem({label:Math.random(), Cena:20});
dataGrid.addItem({label:Math.random(), Cena:30});
////////////////
var cena:String = "Razem: " + podlicz(dataGrid, "Cena") + "zł";
trace(cena);
////////////////
function podlicz(dataGridTarget:MovieClip, param:String):Number {
var wynik:Number = 0;
for (var i = 0; i < dataGridTarget.length; i++) {
wynik += dataGridTarget.getItemAt(i)[param];
}
return wynik;
}
Funkcję podlicz powinieneś aktualizować po zmianie zawartości koszyka, nie poprzez onEnterFrame, bo niepotrzebnie cały czas liczy aplikacja. Przecież dodanie do koszyka następuje po określonym zachowaniu usera np. klikniecie, więc wtedy wywołuj funkcje podlicząjącą.
Re: Wychwycenie tekstu.
: wt kwie 29, 2008 6:49 pm
autor: SlowMotion
Ok śmiga wszystko:D
A jak z tym drugim pytaniem, które zadałem? jakiej akcji użyć żeby zwrócił mi wszytsko z dataGrid. np w jakąś zmienną, jest coś jak getAll(target):D czy coś???
Re: Wychwycenie tekstu.
: wt kwie 29, 2008 8:57 pm
autor: Marek_bf
Podobnie jak w poprzednim poście.
Kod: Zaznacz cały
dataGrid.addItem({Marka:"Fiacik", Cena:10});
dataGrid.addItem({Marka:"Fordzik", Cena:20});
dataGrid.addItem({Marka:"Mercedesik", Cena:30});
////////////////
trace(wyswietl(dataGrid));
////////////////
function wyswietl(dataGridTarget:MovieClip):String {
var wynik:String = "";
for (var i = 0; i < dataGridTarget.length; i++) {
wynik += "Marka: " + dataGridTarget.getItemAt(i).Marka + ", Cena: " + dataGridTarget.getItemAt(i).Cena + "zł\n";
}
return wynik;
}