Wychwycenie tekstu.

Technologia Flash, czyli animacja na potrzeby stron WWW to świat daleko odbiegły od zwykłego programowania i kodu. Zapytaj o pomoc i podziel się z nami Twoimi problemami z zakresu Flasha.
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Wychwycenie tekstu.

Post 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.
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

wyszukiwanie ceny

Post 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ć.
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Re: Wychwycenie tekstu.

Post 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ę???
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: Wychwycenie tekstu.

Post 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?.
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Re: Wychwycenie tekstu.

Post 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:

Kod: Zaznacz cały

var searchString:String = moj_txt.text;
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
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Re: Wychwycenie tekstu.

Post 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
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: Wychwycenie tekstu.

Post 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);
}
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Re: Wychwycenie tekstu.

Post 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ą?
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: Wychwycenie tekstu.

Post 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ą.
SlowMotion
Nowy
Nowy
Posty: 48
Rejestracja: sob lut 09, 2008 7:10 pm

Re: Wychwycenie tekstu.

Post 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ś???
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: Wychwycenie tekstu.

Post 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;
}
ODPOWIEDZ