PDA

Pogčedajte punu verziju : Flash 8 & povratna vrednost javascript funkcije


tokajac
21. 05. 2007., 03:05
U Macromedia Flash 8 pozivam funkciju koja je napisana u javascript-u:

getURL("javascript:WriteToFile('"+myText+"')");

Code:

function WriteToFile(sText)
{
//alert(sText)
var fso = new ActiveXObject("Scripting.FileSystemObject");
var FileObject = fso.OpenTextFile("C:\\LogFile.txt", 8, true,0); // 8=append, true=create if not exist, 0 = ASCII
FileObject.write(sText);
FileObject.close();
delete FileObject;
delete fso;
}


sve prolazi OK, jer fja nema povratnu vrednost.


Problem nastaje kada hocu da izvrsim ReadFromFile(). Fja ima return value;


1.) Kako da procitam POVRATNU VREDNOST fje?
2.) Da li mozete da mi preporucite jos neki nacin za komunikaciju sa file-ovima?

MrSteel
21. 05. 2007., 09:24
dakle, prvo samo da skontam zasto javascript

ako koristis javascript samo snimas fajlove na klijentu a ne i na server
sto je ok ako radis aplikaciju za desktop
ogranicenje activeX-a ti je sto ce ti samo raditi u Internet Explorer-u

ako pak ipak hoces da snimas i citas sa servera onda je PHP dobro resenje
jednostavno je takodje, i slanje podataka izmedju Flash-a i PHP je podrzano gomilom primera

za komunikaciju izmedju Flash-a i Javascripta mozes iskoristiti vec gotovo resenje popularni Javascript Integration Kit za Flash
http://weblogs.macromedia.com/flashjavascript/


evo i tutorijala ako ti ovo prvo ne odgovara a i vidim nesto da im stranice na OS-u ne rade
http://www.communitymx.com/content/article.cfm?cid=0922A

tokajac
21. 05. 2007., 16:47
Promenio sam pristup.

Pokusavam da upotrebim XMLConnector komponentu.
Iscitavanje sam nastelovao, ali upis josh ne radi.

Jer neko ima iskustva sa ovim?

MrSteel
21. 05. 2007., 19:41
bilo bi super da objasnis sta zapravo zelis da uradis

xmlconnector sluzi za slanje ili primanje xml podataka
to ne znaci da xmlconnector moze da zapisuje fajlove ali neki server side script (php recimo) bi mogao to na osnovu podataka poslatih od strane flash-a

ali onda definitivno ne bi koristio xmlconnector vec amfphp

http://amfphp.sourceforge.net/

tokajac
21. 05. 2007., 19:53
Hvala na odgovorima, MrSteel.


Zelim da napravim jednostavnu flash igru u kojoj je cilj razbijati zidove.

U fajlu chuvam podatke o 10 najboljih rezultata.

Prilikom zavrsetka svake partije uchitavam 10 najboljih rezultata, poredim ih sa upravo postignutim rezultatom i, ukoliko je potrebno, azuriram sadrzaj file-a.


php jos nisam koristio: tu mi treba detaljno objasnjenje za izvrsenje koda.

Ukoliko je potrebno josh detalja, let me know!

MrSteel
21. 05. 2007., 20:17
pogledaj AMFPHP primere veoma jednostavno

da li imas postavljen test server na svom racunaru
ako nemas prvo to prouci kako bi mogao da izvrsavas PHP i testiras kod kuce, preporucujem XAMPP

danas nemam vremena da uradim primer a i mislim da to nema smisla
pogledaj funkciju sendAndLoad i primere za php i flash preko google
naci ces zanimljive primere za slanje i primanje
http://www.flash-db.com/GuestBookTut/
guestbookovi su dobar primer za to posto i saljes i primas podatke

aj sretno ako nista napravicu ja sitan primer

ReLaX
21. 05. 2007., 20:47
Takodje pogledaj na kirupa.com ima odlicne tutorijale na temu server-side - flash! Evo i tacnog linka (http://www.kirupa.com/developer/flash/index.htm#Server_Side_&_Flash)

tokajac
25. 05. 2007., 02:27
Nakon prvobitnog izbegavanja php-a, podesio sam XAMPP i zadovoljan sam!

Novo pitanje:
Kako da gasim .swf aplikaciju? (direktno pokrenutu i iz browsera)
Preciznije -sta da stavim u dugmetov on (release){...}

Probao sam fscommand i getURL bezuspesno. Saljite isprobane naredbe.

Pozdrav!

nixa
25. 05. 2007., 03:14
Sta tacno hoćeš da ugasiš ?

Browser ili ?

ReLaX
25. 05. 2007., 03:18
Ne radi fscommand (quit)? Meni uopste u novijim verzijama flash-a fscommand cesto bug-uje!

nixa
25. 05. 2007., 03:20
fscommand je standalone only ? neznam samo kada je radila ?

MrSteel
25. 05. 2007., 08:28
ako bi da uklonis swf onda mozes da zamenis sadrzaj div-a gde ti je flash pomocu javascript-a


Use FSCommand with the browser.
SYMPTOMS

FScommand doesn't work when the movie plays in a browser. FScommand works only with Macromedia standalone projector.

This tutorial describes how to create a "quit button" and use fscommand to communicate with the browser

i dalje primer kako da radi
http://www.flashdesignerzone.com/tutorials/t1041.php

medjutim izgleda da firefox ne slusa uopste tu naredbu, dok u IE i Operi sljaka

Dušan Dželebdžić
25. 05. 2007., 09:20
Tutorijal na koji si linkovao ne menja sadržaj DIV-a, već zatvara prozor. Drugi deo skripta je u VBScriptu, koji FF ne razume.

Za uklanjanje DIVa nije potrebno da se njegov sadržaj menja, dovoljno je samo da mu se promeni CSS atribut.

MrSteel
25. 05. 2007., 10:46
da da, tutorijal ne menja div i prevideo sam da je vbscript

anyway pokusao sam par fora sa neta za firefox medjutim nista,
u ostalim document.close() radi

ovi tvrde da radi na sledecu prevaru
ali meni ne radi
http://www.interwebby.com/blog/2006/02/04/3/

ReLaX
25. 05. 2007., 13:12
fscommand je standalone only ? neznam samo kada je radila ?

Pa na to sam i mislio! Ne radi mi ni u standalone projector-u!

MrSteel
25. 05. 2007., 13:33
heh, super

ako je tako evo ti primer koji meni radi
komanda je
fscommand("Quit", "");

download pa sam pretvori u projector jer je oko 2mb bezveze da se ne patimo
http://www.hagane-studio.com/as/quit/quit.zip

ReLaX
25. 05. 2007., 14:07
Ma i ja koristim istu komandu... Nego je neko bacio kletvu na mene, tako da mi uvek najprostije stvari ne rade!

MrSteel
25. 05. 2007., 14:19
ne verujem ja u to, pogledaj primer ovo ono, pa vidi
mozda nisi stavio da nema paremetara ili ...

tokajac
25. 05. 2007., 17:05
Aplikaciju cu pokretati preko browsera, pa hocu da klikom na button unutar .swf-a zatvorim browser.
Drugi slucaj je kada nezavisno od browsera pokrenem .swf; isto mi treba zavrsavanje rada te aplikacije klikom na dugme.

Dosada isprobane stvari prikupljene sa net-a ne daju rezultat.
Mozda i to da uradim preko .php-a?

P.S.
u C++ je exit(1);

MrSteel
25. 05. 2007., 17:10
ne mozes da zatvoris ceo browser vec samo prozor a i to ne radi dobro u firefox-u jer nisu omogucili (ali ne fscommand quit nego ono sto sam napisao )

za standalone radi korektno fscommand quit

php je server side jezik i ne moze da kontrolise browser u tom smislu

tokajac
28. 05. 2007., 14:01
1.) Kako da pokrenem .swf file pomocu PLAYER-a kao nezavisnu aplikaciju? Dakle, imam web stranicu na kojoj stoji link ka mojoj igrici i kada kliknem na link ona treba da se otvori u playeru.

2.) swf saradjuje sa php-om samo ukoliko je pokrenut u browseru sa: http://localhost/sklapanje/dugme.swf
Prilikom integracije swf u html, skript ne vrsi dobar ispis. Ne radi dobro ni kada pokrenem E:\xampp\htdocs\sklapanje\dugme.swf

Zasto? Kako resiti?

Pozdrav!

MrSteel
28. 05. 2007., 14:17
1) nikako ne mozes naterati swf da se otvori u standalone playeru
mozes ili da force-ujes download ili da napravis apollo aplikaciju koja ce raditi sa desktopa, mada bilo bi dobro da navedes razlog sto bi moralo u standalone

2) ako radi direktno swf a html nece onda verovatno nisi dobro ubacio swf u stranicu mada, nije sigurno
okaci zip pa da vidimo

mora biti pokrenut server da bi radilo zato ti i ne radi e:/...

Dušan Dželebdžić
28. 05. 2007., 14:31
2) Zato što je PHP serverski jezik. Ako pozoveš SWF kroz server, on će (kada pozove .php fajl) dobiti ono što je tvoj kod ispljunuo. Ako pozoveš SWF direktno sa diska, on će takođe pokušavati da dobije nešto od PHP fajla, ali pošto ne ideš kroz server nema nikoga da parsira PHP fajl i vrati ti promenljive koje želiš.

Sad tek videh tvoju poruku MrSteel, sorry zbog ponavljanja :)

tokajac
28. 05. 2007., 14:35
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/f...bs/swflash.cab#version=4,0,0,0"
ID=napises id WIDTH=800 HEIGHT=600>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<PARAM NAME=movie VALUE="dugme.swf">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="dugme" quality=high bgcolor=#FFFFFF
WIDTH=300 HEIGHT=25 TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shoc...P1_Prod_Version=ShockwaveFlash"></EMBED>


i probao sam jos:

<script language="JavaScript">

function openWindow(){
popupWin = window.open('dugme.swf', 'remote', 'toolbar=0,location=0,directories=0,menubar=0,scro llbars=0,resizeable=0,fullscreen=0')
}


</script>
.
.
.

<a href=javascript:openWindow()>Igrica</a>

tokajac
28. 05. 2007., 14:53
Radi swf + php integrisano u html.

Sorry!

tokajac
01. 06. 2007., 16:25
Cilj mi je da napravljeni swf otvorim u novom browseru tako da on bude relativno mali. To sam postigao:

index.html


<script language="JavaScript">

function openWindow(){
popupWin = window.open('dugme.swf', 'remote', 'toolbar=0,location=0,directories=0,menubar=0,scro llbars=0,resizeable=1,fullscreen=0,width=500,heigh t=500')
}


</script>

<HTML>
<HEAD>
<TITLE>fight</TITLE>
</HEAD>
<BODY bgcolor="white">


<br><br>

<a href=javascript:openWindow()>Igrica</a>
</BODY>
</HTML>


dugme.html

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>dugme</title>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<!--
<p align="left"></p>
-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="400" id="dugme" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="dugme.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="dugme.swf" quality="high" bgcolor="#ffffff" width="400" height="400" name="dugme" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>



Dakle u index.html stoji link koji otvara dugme.html, koje sadrzi dugme.swf .
Problem je u tome sto se u novom prozoru swf prikazuje u sredini, tako da iznad i ispod ostaju dve (debele) bele strafte.

Kako da se swf pojavi preko celog novog prozorcica? Probao sam da podesim parametre unutar dugme.html (width i height), ali zasada bezuspesno.
Mozda treba da odradim specijalan Publish? Kako?

Pozdrav!

MrSteel
01. 06. 2007., 17:43
pogledaj SWFObject (http://blog.deconcept.com/swfobject/) lak je za koriscenje a olaksava embedovanje flash-a na stranicu mnogo mnogo

medju njihovim primerima imas i primer za 100% width i 100% height

tokajac
17. 06. 2007., 18:22
DUZE vreme se pokusavam da resim sledecu nejasnocu: php mi postavi vrednost promenjive _root.red.text . To radi korektno.

Tu promenjivu koristim dalje:



koord=parseInt(_root.red.text);

if(koord!=-1)
{
_global.sub=true;
}
else
{
_global.sub=false;
}

ipsilon=180;

if(koord<=9 && koord>=0)
{

switch (koord)
{
case 0:
ipsilon=166;
break;
case 1:
ipsilon=151;
break;
case 2:
ipsilon=136;
break;
case 3:
ipsilon=120;
break;
case 4:
ipsilon=106;
break;
case 5:
ipsilon=90;
break;
case 6:
ipsilon=75;
break;
case 7:
ipsilon=60;
break;
case 8:
ipsilon=45;
break;
case 9:
ipsilon=32;
break;
}//kraj swtich-a

_root.createTextField('zaFor',1,215,ipsilon,250,60 ); //4. parametar je y

_root.zaFor.type='input';
_root.zaFor.border=0;
_root.zaFor.multiline=0;
_root.zaFor.wordWrap=0;
_root.zaFor.autoSize=false;
_root.zaFor.font = "Arial";
_root.zaFor.size = 10;
_root.zaFor.text="ENTER YOUR NAME";

_root.zaFor.maxChars=25;

Selection.setFocus(this.zaFor);
}





trivijalan kod, MEDJUTIM prilikom testiranja scenario je sledeci:

-najcesce je sve ok, i textField se pojavljuje na jednom od 10 pozicija koje odredjuje koord (oko 90% slucajeva)

-nekada se textField pojavi u samom dnu ekrana. (oko 5%)

-nekada se textField UOPSTE NE POJAVI (?!) (oko 5%)


Pokusavao sam da radim switch direktno sa stringom, ali ista prica.

Gde je greska?
Da li je neko imao ovakva (vrlo neobicna) iskustva: isti swf nekada da radi 'vako nekad 'nako??

P.S.
nazalost nemam nadleznost da okacim ceo .fla

MrSteel
17. 06. 2007., 23:38
uradi trace tamo gde mislis da je greska
koristi flash tracer plug in za firefox ako moras iz browsera da ga teras
postavi trejsove tamo gde mislis da treba, ima par zanimljivih mesta

ili ti koord nije dobra vrednost
ili ti flash film sjebava rad na tom frejmu, sto nije nemoguce ako je prvi frejm ili drugi
ili se polje ne kreira dobro

trace pa javi

mozes da probas da koristis tekstualno polje koje se vec nalazi u flash filmu pa da na njega primenjujes ideju bez kreiranja polja pa da vidis sta se desava

a mozes i da objasnis sta zelis ;0

tokajac
24. 06. 2007., 01:36
Flash tracer plug in josh nisam poterao (instalirao sam ga, ali ne radi).

Dosao sam do sledecih zakljucaka:
-php skript vraca dobru vrednost, dakle koord je OK (kao sto sam i ranije naveo)

-sta moze da se uradi ukoliko se swf sjebava?? to mi najvishe smrdi... posto swf sadrzi svega 2 frejma (1. i 2. !)

-polje kreiram sa naredbom _root.createTextField('zaFor',1,215,ipsilon,250,60 ); To mi deluje chisto.

Pokusacu da podesim Flash tracer kako treba, pa se javljam

MrSteel
24. 06. 2007., 10:34
flash tracer ti ne radi zbog foldera u kom mu je setovan text file gde flash pise vrednosti ili zato sto nemas Flash Player debug

sad cu novu temu pokrenuti

tokajac
24. 06. 2007., 14:12
u 1. frejmu aktuelne scene izvrsavam komandu:

loadVariablesNum ("Load.php", 0, "POST");

poslednja naredba u Load.php je:

print ("&poz=".$tempvar);

a u flashu sam u Properties-u Dynamic Text-a za ime promenjive stavio red, a za Var: poz


Load.php upisuje u text polje (_root.red.text) povratnu vrednost (u mom slucaju -1 ili jedan od brojeva od 0 do 9), koju posle koristim kako sam ranije naveo.

Izgleda da se u nekim slucajevima ne izvrsio ceo Load.php (na vreme) i zato _root.red.text ima vrednost NaN u trenutku koord=parseInt(_root.red.text)
Do ovog zakljucka sam dosao Flash Tacerom.


Da li je moguce da ima problema u sinhronizaciji izmedju php i action scripta?

Napominjem da je loadVariablesNum ("Load.php", 0, "POST"); na 1. frejmu scene, a koord=parseInt(_root.red.text) na 2. frejmu iste scene.

Kako resiti? Mozda na neki drugi nacin ocitati povratnu vrednosti Load.php?

MrSteel
24. 06. 2007., 16:54
sve u svemu
najbolje da premestis sve u drugi ili lepo u 3 frejm
u prvom sacekas da se ceo flash ucita

drugi frejm je najbolje koristiti za export movieclipova koji ti trebaju za flash
dakle u drugi frejm fizicki stavis movieclipove, a movieclip na desni klik opcija linkage ne stavis export in first frame vec samo export for Actionscript (to su ti oni movieclipovi koje ces koristiti za attachMovie iz library-ja)

tada u prvom frejmu nakon sto se sve ucita

onEnterFrame = function() {
if (_root.getBytesTotal() == _root.getBytesLoaded()) {
delete onEnterFrame;
gotoAndStop(3); //ides na treci frejm
}
}
stop();

ovo ti je neka safe koncepcija sajta
prvi frejm nije ni za kakve akcije jer provereno pravi problema zbog loadinga