Poslao: 27 Maj 2009 12:07
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
Koristim AS2 i u aplikaciji mi je potrebno da se iz lokalnog direktorijuma iscitaju svi npr. jpg fajlovi. Pod iscitavanjem mislim na to da se njihova imena smjeste u neki niz ili u HTML koji mi je poslije lako da isparsiram.
Dakle, problem mi je dio koji ce da izvadi imena.
U zabuni sam na koji nacin da ovo uradim. Sta sve mogu da "prikacim" na flash, sta je najjednostavnije?
Da li sprezanje ide fscommand -om ili ipak nesto drugo?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 29 Maj 2009 10:16
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
To se radi sa XMLom.
Recimo ovako nekako:
//^^xml^^//
var galerija:XML=new XML;
var totalImages; //ukupan broj slika
var opisi:Array;
var urlSlike:Array;
galerija.ignoreWhite=true;
galerija.onLoad=function(success){
if(success){
totalImages =galerija.firstChild.childNodes[0].childNodes.length;
for (var i = 0; i<totalImages; i++) { //prolazimo kroz svaku sliku iz XMLa sa chvorom i.
var opisSlike = galerija.firstChild.childNodes[0].childNodes[i].attributes.imeSlike;//opis slike (ime...) iz XML noda
var urlImg = galerija.firstChild.childNodes[0].childNodes[i].attributes.urlSlike; // url slike iz XMLa
opisi.push(opisSlike);
urlSlike.push(urlImage);
//e, sad imas ucitane sve slike u dva array-a.
//odavde bi trebalo da ih "zakacis" za scenu uz pomoc attachMovie. Recimo ovako:
//nosac.attachMovie("mBox_mc", "item"+i+"_mc", i, {_x:menu_xPos, _y:menu_yPos}); //gde je nosac movieClip na sceni.
//napravi po jedan nosac za svaku sliku.
}
}
galerija.load("galerija.xml");
XML treba da izgleda otprilike ovako:
<?xml version="1.0" encoding="UTF-8"?>
<galerija>
<images>
<image urlSlike="01th.jpg" imeSlike="Lepa" </image>
<image urlSlike="02th.jpg" imeSlike="Gadna" </image>
//...
</images>
</galerija>
E, sad, to je nacin da Flash sazna sta sve lezi od slika u direktorijumu sa servera. Ali nisam sigurna da si to htela
Da li si mozda mislila da se browsuje lokalni, korisnikov, direktorijum?
To moze od flash player 10-te verzije. Znaci moras preci na AS3.0.
Vidi ovamo, odlican blog o tome:
http://www.mikechambers.com/blog/2008/08/20/readin.....player-10/
I sve to u akciji:
http://www.gotoandlearn.com/play?id=76
|
|
|
|
Poslao: 29 Maj 2009 16:39
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
Zapravo da, treba da browsujem lokalni dir (ili neki od dir-ova na lokalnom HD-u), a pri tome moram da koristim AS2.
No nekako sam se snasla sa projektorima i fscommandom, tako da potjeram aplikaciju koja iscita sva imena fajlova i stavi ih u jedan txt (ili xml) a ja onda to lako isparsiram iz flesha.
U svakom slucaju hvala na linkovima. Obzirom da sam se tek nedavno uhvatila u kostac sa flesh aplikacijama svaki hint i pomoc zlata vrijedi.
Jel neko pokusavao da tjera flesh projektor sa fscommand-om na Linux-u?
|
|
|
|
Poslao: 03 Jun 2009 08:52
|
offline
- Ken_Parker
- Novi MyCity građanin
- Pridružio: 18 Sep 2007
- Poruke: 22
|
Napisano: 01 Jun 2009 9:46
Da se nadovežem na temu, jer mislim da je besmisleno otvarati novu.
AS2 - na žalost...
Imam dve aplikacije koje obradjuju podatke. Rezultate jedne treba prebaciti drugoj i obratno, više puta.
Učitavanje u aplikaciju nije problem jer mi je unapred poznato ime fajla, u ovom slučaju XML. Medjutim, kako da primljene i obradjene podatke "izvučem" iz Flash-a? Kako da obrdjene podatke, spakovane u XML, "spustim" na HD? Znam da postoji varijanta sa serverom, kome bih slao fajl, pa ga opet spustao dole, ali bih to izbegao, jer se radi o desktop aplikacijama.
Pretpostavljam da mi je potreban JS, ali u kojoj meri i kako da to rešim bez muke i odmah (sve mi je jasno, ali mora tako... )
Molim vas za odgovor, jer mi je vrlo bitno.
Hvala!
P.S. Ili "neka" klasa koja bi to radila...
Dopuna: 03 Jun 2009 8:52
Željno iščekujem odgovor, a u medjuvremenu, zoranez možeš li mi, molim te, obijasniti kako si izlistala folder? Bilo bi mi od velike pomoći. Hvala.
|
|
|
|
Poslao: 03 Jun 2009 11:23
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
1. Najprije napises jedan npr C fajl koji ce u tekucem direktorijumu izlistati sva imena fajlova (u mom slucaju imena svih *.jpg - a) i zapisati ih u jedan txt fajl (nazvan imageFiles.txt). Izmedju imena dva fajla se stavlja separator & (da bi ga action script znao isparsirati).
2. Od datog c fajla napravis .exe fajl. Ovaj fajl se MORA nalaziti u direktorijumu fscommand koji ces napraviti tamo gdje ti se nalazi i swf odn. fla file.
3. U fla fajlu ce se kreirani .exe pozivati komandom
fscommand("exec", "list.exe"); (gdje je list.exe ime exe-a koji si kreirao)
4. U kodu fla file-a ces imati dio koji sluzi za parsiranje i koji ce imena trazenih fajlova staviti u niz ImageList[].
var list:LoadVars = new LoadVars();
list.onLoad = function()
{
var count:Number = 0;
for(i in list)
{
ImageList[count] = i;
trace(ImageList[count]);
count++;
}
/*Last one is junk */
ImageList.pop();
}
list.load('imageFiles.txt');
C kod za listanje fajlova
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <string.h>
struct _finddata_t jpg_file;
long hFile;
char tempString1[50];
FILE* dat;
int main(void)
{
/* Current directory */
_chdir("../");
memset(tempString1, 0, 100);
/* Open file */
if((dat=fopen("imageFiles.txt", "w"))==NULL)
{
printf("\n Cannot open file");
return -1;
}
/* If no *.jpg or *.mp3 or ... files */
if ( (hFile = _findfirst("*.jpg", &jpg_file)) == -1L )
printf("No *.jpg files in current directory");
else
{
do
{
strcpy(tempString1, jpg_file.name);
/* Adding & so flash var parser can separate names ... */
strcat(tempString1, "&");
fwrite(tempString1, sizeof(char), strlen(tempString1),dat);
// fwrite( jpg_file.name, sizeof(char), strlen( jpg_file.name),dat);
printf("%s\n", jpg_file.name);
}
while ( _findnext(hFile, &jpg_file) == 0 );
_findclose(hFile);
}
fclose(dat);
}
Ovo je rezultat koda zapisan u imageFiles.txt:
image1.jpg&image2.jpg&image3.jpg&image4.jpg&image7.jpg&image8.jpg&image9.jpg&
Da bi sve ovo radilo, moras raditi sa projektorom, a ne swf fajlom, sto znaci da ces prije pokretanja morati da uradis sledece: File->Publish Settings -> i otkaci Windows Projector (.exe).
Nakon ovoga ces dobiti .exe fajl koji predstavlja tvoju flesh aplikaciju i cijim pokretanjem ce se izvrsiti i aplikacija i fscommand.
Ako ne napravis ovaj projektor vec pokusavas da pokrenes swf, fscommand se NECE izvrsiti.
PS. Ovo je onako na brzinu i za slucaj Actionscript-a 2. Umjesto txt. fajlova, mogu se (i to je najcesci slucaj) parsirati XML fajlovi, imas tonu primjera na netu, ali je meni bilo komplikovano da ih generisem. Istovremeno napominjem da jako kratko radim sa Flash-om pa nisam sigurna da ne postoji jednostavniji nacin. Ja ga nisam nasla.
|
|
|
|
Poslao: 03 Jun 2009 13:36
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
@ken
Pa kad vec mora AS2.0, onda sta da se radi nego da vidimo sta mozemo izvuci...
JS bi trebalo da radi posao, samo sto ja bas nisam nesto vicna JSu.
U Flashu treba da stoji otprilike ovako (najjednostavniji moguci primer, uzimam tekst iz polja gde korisnik upisuje nesto. Polje se zove userText_txt, dugme na koje se klikne da bi se tekst eksterno sacuvao je click_btn a WriteToFile je funkcija iz JS. Za XML je malo komplikovanije, ali hajde da nam prvo ovo proradi, pa cemo razraditi proceduru i dalje) :
click_btn.onRelease= function(){
if(userText_txt.text != "")
{
myText = userText_txt.text;
getURL("javascript:WriteToFile('"+myText+"')")
}
}
A sad JS deo...
Ono sto nama u vezi sa ovim treba se zove Programming the FileSystemObject . Moze da se nagugla mnogo toga, ali evo, pogledaj ovde:
http://www.vbscriptonline.com/FileSystemObjects/Pr.....Object.asp
Ja stvarno nisam mnogo vesta u JSu ali uspeh da skrpim ovo (a da odgovara nasem Flashu koji poziva tu neku WriteToFile naredbu), no nisam izmundjala jos da mi i radi
Ako neko sa malo boljim uvidom u JS hoce da preuzme dalje...
function WriteToFile(nasText)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var FileObject = fso.OpenTextFile("C:\\test.txt", 8, true,0);
FileObject.write(nasText);
FileObject.close();
delete FileObject;
delete fso;
}
Edit: zaboravih reci da sam probala sa fscommand fscommand("save","file.txt") i preko projektora, ali kod mene ne radi.
|
|
|
|
Poslao: 03 Jun 2009 18:26
|
offline
- Ken_Parker
- Novi MyCity građanin
- Pridružio: 18 Sep 2007
- Poruke: 22
|
Dame, hvala vam.
Da rezimiramo:
1. Projektor možemo naterati da "nešto" radi, ali je potreban dodatni folder sa funkcijama.
2. Bez projektora, JS može to uraditi, ali uz dodatno "angažovanje", i neće biti exe, koji bi meni odgovarao. Tu su i neka ograničenja, do duše ne prevelika, poput onog da uz getURL može ići samo 508 (?! - ajd da je 512...) karaktera.
U medjuvremenu, na drugom forumu (ne znam da li smem da pominjem) sam dobio treći odgovor: MDM.Zinc.3.0.
Uradio je baš ono što mi treba, ali na "kvarno" i osećam se malo postidjenim.
Da bi spasli čast Flash8 i umirućeg AS2, a problem najelegantnije rešili, predlažem najlogičnije rešenje (samome sebi, okolo-naokolo) i to sa dve .exe aplikacije "negde na netu", i jednom adresom na koju bi spustili "nešto". UP iz lokala i DOWN sa servera nisu problem, ali šta treba da stoji na serveru da bi prihvatio fajlove koje šalju aplikacije?
Hvala dame, lepo je flešovati sa vama...
|
|
|
|
Poslao: 04 Jun 2009 13:29
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
Napisano: 04 Jun 2009 9:38
Ken Parker ::
predlažem najlogičnije rešenje (samome sebi, okolo-naokolo) i to sa dve .exe aplikacije "negde na netu", i jednom adresom na koju bi spustili "nešto". UP iz lokala i DOWN sa servera nisu problem, ali šta treba da stoji na serveru da bi prihvatio fajlove koje šalju aplikacije?
Ovo je nesto najgor... najoriginalnije sto sam cula u poslednje vreme. Sjajno
Ozbiljno, stvarno volim ovakva neverovatne predloge, vredi eksperimentisati, sta fali. Treba ti neki PHP koji ce da prihvati to sto ti aplikacija salje i prosledi dalje.
Nesto mi je palo na pamet, ali nije ni izbliza tako kreativno : Ono sto tebi radi posao je Adobe AIR. AIR je napravljen specijalno za desktop aplikacije.
A da, na primer, napravis nekoliko redova AS3.0 u AIRu, i uvezes vec postojeci AS2.0 fajl?
var ldr:Loader = new Loader();
addChild(ldr);
ldr.load(new URLRequest("kenparker.swf"));
AIR radi kao sat sa nekim lokalnim bazama podataka, kao sto je SQLite, grehota to ne iskoristiti.
Ken Parker ::
U medjuvremenu, na drugom forumu (ne znam da li smem da pominjem) sam dobio treći odgovor: MDM.Zinc.3.0.
Ta otkud da bude problem. Svaki predlog je dobrodosao! Idem da pogledam o cemu se radi.
Dopuna: 04 Jun 2009 13:29
Ahaa:
http://www.jevinkones.com/zinc-vs-air/
|
|
|
|
Poslao: 04 Jun 2009 16:25
|
offline
- Ken_Parker
- Novi MyCity građanin
- Pridružio: 18 Sep 2007
- Poruke: 22
|
Savet dobio na:
dizajnzona.com/forums/index.php?showtopic=63604
Sad se već i stari babo češka po glavi...
Neznanje je sloboda, izgleda, a znanje balast. Moje neznanje je uzrok mome predlogu, koji je meni savršeno logičan i jednostavan. Ali, avaj! Ne razumem dovoljno problematiku i ne vidim zašto je to komplikovano, ali izgleda da se ja sa time neću igrati. Bogami ne!
Ovo sa AIR i par redova ti je dobro. Ako imam ulaz i izlay xml, u okviru moga AS2 swf fajla, kako da ih vidim iz AS3? Globalne promenljive u AS3 i/ili AS2, i prosto pozivanje?
|
|
|
|
Poslao: 04 Jun 2009 20:38
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
Ma, odlican ti je bio predlog... primecujem da vec razmisljam u kliseima pa mi tako nesto ne bi ni palo na pamet. Garant je vredno da se proba.
AS3.0 ne mora da vidi promenljive. On je tu samo kao pakovanje. Ucitavanje iz XMLa ne bi takodje trebalo da predstavlja problem.
Iako AS3.0 radi samo kao omot oko AS2.0, neke prepravke se sigurno moraju odraditi u AS2.0: recimo, ukloniti sve _root -ove (_root postaje omotacev _root) i umesto toga koristiti _parent.
|
|
|
|