[ crniluk @ 03.07.2011. 19:27 ] @
Da li je neko radio sa swf bridge-om? Treba mi pomoc vezana za ovu temu.
[ StarCraft @ 03.07.2011. 20:45 ] @
Jel taj "bridge" neki poseban program ili samo način komunikacije između 2 SWF-a?
[ MenOfHonor @ 03.07.2011. 22:54 ] @
Šta te konkretno interesuje? Imaš detaljno objašnjenje na koji način možeš koristiti ovu komponentnu na zvaničnom sajtu: http://www.jumpeyecomponents.com/Flash-Components/Various/ActionScript-Bridge-91.
[ crniluk @ 03.07.2011. 23:44 ] @
- To je nacin komunikacije izmedju dva flasha AS2 i AS3. Nisam neki programer i salabo znam AS.
- Imam dva swf-a jedan AS2 drugi AS3. Oni su vec u bridge modu i rade neke f-je.
- I jednom i u drugom postoje postoje instance button-i koji rade.
- Meni je potrebno da nekako uradim da kada se klinke na odredjeni button u AS2 da se istovremeno izvrsi i kod koji radi kada se klikne na odredjeni button u AS3.
- Pokusavam to vec nekako da pronadjem ali ne uspevam, evo jednog korisnog linka pa cu pokusati da provalim.
- Ako je neko mozda vec radio i zna ili ima neka uputstva dobro mi dosla.
[ crniluk @ 04.07.2011. 16:49 ] @
Pokusavam neko vec duze vreme da napravim ovo da radi ali ne uspevam, nece me nesto ovih dana nista za sta god da se uhvatim :(.

Evo ovako ako je neko voljan i zna da pomogne, bio bi mi od velike pomoci:
Ovo je kod koji se nalazi u AS3 fajlu i sluzi za snimanje(prin screen) slike na server iz AS2 fajla koji se ucitava u AS3.
Code:

import com.adobe.images.JPGEncoder;
import nl.stroep.utils.*;
import com.gskinner.utils.SWFBridgeAS3;

//SETUP::::::::::::::::
loadingsign.visible=false
var scriptURL="http://www.moj_sat.com/"; //absolute path to directory containing savePNG.php on your server
var savePath="moja_slika"; // save filename excluding .png file extension (relative path from scriptURL)
var scriptName="savePNG.php"
var AS2swf="moj_AS2_fajl.swf"

///////////////////////
//LOAD THE AS2 swf:
loadingsign.visible=false
var loadit = new Loader();
loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
addChild(loadit);
loadit.load(new URLRequest(AS2swf)); //the name of your AS2 swf
//when swf has loaded:
function onLoadComplete(evt:Event):void {
    //move print button and loading sign above imported swf:
    setChildIndex(goBTN, numChildren-1);
    setChildIndex(loadingsign, numChildren-1);
    trace('AS2 LOADED')
}

///SET UP A BRIGE TO AS2:
var myBridge:SWFBridgeAS3 = new SWFBridgeAS3("connectionID", this);

/*
//WHEN THE CONNECTION IS ESTABLISHED: (optional)
myBridge.addEventListener(Event.CONNECT, handleConnect);
function handleConnect(event:Event){
    //setupSWF is an example how to call an AS2 custom function:
    myBridge.send("setupSWF","parameter1");
};
*/

//PRINT BUTTON ACTION:
goBTN.addEventListener(MouseEvent.MOUSE_UP, goBTNclick);
function goBTNclick(event:Event){
    loadingsign.visible=true
    goPrint(112,1,867,530)
}

//CREATE AND EXPORT THE JPGS TO PHP:
function goPrint(X:Number,Y:Number,W:Number,H:Number){
    var thecrop = crop( stage,W,H,X,Y);
    var imageSaver:ImageSaver = new ImageSaver( scriptURL+scriptName );
    imageSaver.save ( thecrop, savePath ); 
    imageSaver.addEventListener ( Event.COMPLETE,onSaveComplete)
    imageSaver.addEventListener ( IOErrorEvent.IO_ERROR, onSaveError );
    trace('PRINTING: '+X+', '+Y+', '+W+', '+H+" to:\n"+scriptURL+savePath+'.png');
}
function onSaveComplete(e){
    trace('SAVE COMPLETE')
    loadingsign.visible=false
}
function onSaveError(e){
    trace('ERROR WITH SAVE')
    loadingsign.visible=false
}

/////////////////////
//FUNCTIONS::::::::::
function crop( inDisplayObject:DisplayObject, inWidth:Number = 550, inHeight:Number = 400, inX:Number = 0, inY:Number = 0, inScale:Number = 1):Bitmap{
    if (!inDisplayObject) { throw new Error('CropUtil.crop > needs a something on the display list'); return null; }
    var cropArea:Rectangle = new Rectangle( 0, 0, inWidth * inScale, inHeight * inScale);
    var croppedBitmap:Bitmap = new Bitmap( new BitmapData( inWidth * inScale, inHeight * inScale), PixelSnapping.ALWAYS, true );
    croppedBitmap.bitmapData.draw( inDisplayObject, new Matrix(inScale, 0, 0, inScale, -inX, -inY), null, null, cropArea, true );
    return croppedBitmap;
}


Ovo je kod koji se nalazi u AS2:
Code:
//AS2-3 bridge:
import com.gskinner.utils.SWFBridgeAS2;
var myBridge:SWFBridgeAS2 = new SWFBridgeAS2("connectionID", this);


goBTN je button (ime instance) u AS3 na koji kada se klikne swf snimi sliku na server pod imenom moja_slika.png

Problem je taj sto treba napraviti da kada se klikne na button u AS2 treba da se izvrsi sve sto se izvrsi kada se klikne i na button u AS3.

Pokusava osam na razne nacine ali nikako da uspem. Evo jednog linka koji je najblizi resenju problema ali ja ne umem da izvedem da to radi:

Link

Molio bih za pomoc svako ko moze da pomogne.
[ crniluk @ 06.07.2011. 17:54 ] @
Moze li neko da pomogne?

Pokusavao sam na osnovu ovoga da dodam u AS2 kod u prvi frejm:

goBTN.onRelease=function(){
myBridge.send("goBTNclick","goPrint","crop");
}
Napravio sam button u AS2 koji se takodje zove goBTN isto kako je u primeru.
Ali nece ovako. U cemu je prob?

[Ovu poruku je menjao crniluk dana 06.07.2011. u 19:14 GMT+1]

[Ovu poruku je menjao crniluk dana 06.07.2011. u 19:15 GMT+1]
[ MenOfHonor @ 07.07.2011. 16:19 ] @
Više volim da koristim ugrađene klase (kad god je to moguće) pa ću ti dati primer kako se koristi LocalConnection klasa. Pretpostavimo da imaš dva swf-a koji se zovu "AS2" i "AS3" i u skladu sa tim se razlikuju po verziji AS-a koje koriste. Ti želiš da ostvariš komunikaciju između njih pa kad pritisneš taster koji se nalazi u AS2 swf-u želiš da se pozove funkcija koja se nalazi u AS3 swf-u, i obratno. Dodatno, u jedan i drugi swf će se u funkcije koje se pozivaju proslediti parametri "ime" i "prezime". Kao rezultat toga u poljima će se prikazati ime i prezime koje je uneto u onaj drugi swf. Primer možeš pogledati ovde: http://dhost.info/manofhonor/lokalna_konekcija/lokalna_konekcija.html.
Ono što je zajedničko i za AS2 i AS3 je pravljenje instance LocalConnection klase, na sledeći način:
Code:
var primalac:LocalConnection = new LocalConnection();
var posiljalac:LocalConnection = new LocalConnection();

Znači prave se dve instance, po jedna za slanje i prijem. Kada želiš da iz AS3 swf-a pozoveš funkciju koja se nalazi u AS2 swf-u tada koristiš instancu LocalConnection klase koja se nalazi u promenljivoj "posiljalac", a to ostvaruješ na sledeći način:
Code:
posiljalac.send("naziv_konekcije","naziv_funkcije",parametri);

Dakle, pozivaš metod send() kome prosleđuješ 3 parametra: naziv konekcije preko koje želiš da komuniciraš sa drugim swf-om, naziv funkcije koju pozivaš iz tog swf-a i na kraju parametre koje želiš da proslediš funkciji (ovo je opciono i može se izostaviti). Ovo je primenljivo i u AS2 kada želiš da pozoveš funkciju koja se nalazi u AS3 swf-u.
Kada želiš da prihvatiš konekciju koju je uspostavio drugi swf (kada želiš da dozvoliš AS3 swf-u da pozove funkciju u AS2 swf-u) onda koristiš connect() metod koji prihvata jedan parametar, a to je naziv konekcije (koja mora da odgovara nazivu konekcije navedenom u AS3 swf-u):
Code:
primalac.connect("naziv_konekcije");

Sada dolazimo do razlike u AS3 i AS2 kodu:
U AS3 navodimo sledeće:
Code:
primalac.client = this;
    function naziv_funkcije(parametri):void
    {
        // ovde se nalazi kod koji ce se izvrsiti pozivom ove funkcije
    }

I onda sledi naziv funkcije koja mora odgovarati nazivu funkcije koju smo naveli u AS2 swf-u.
U AS2 napisaćemo sledeće:
Code:
primalac.naziv_funkcije = function(parametri):Void
    {
        // ovde se nalazi kod koji ce se izvrsiti pozivom ove funkcije
    }

U ovom slucaju naziv funkcije mora odgovarati nazivu funkcije koju smo naveli u AS3 swf-u.
U tvom slučaju u AS2 swf-u kod bi trebao da izgleda ovako:
Code:
var posiljalac:LocalConnection = new LocalConnection();
goBTN.onRelease=function():Void
{
    posiljalac.send("goBTNclick","goPrint","crop");
}

U AS3 swf-u bi trebalo da se nalazi sledeće:
Code:
var primalac:LocalConnection = new LocalConnection();
primalac.connect("goBTNclick");
primalac.client = this;
function goPrint(crop):void
{
    // ovde se nalazi kod koji ce se izvrsiti pozivom ove funkcije
}
[ crniluk @ 07.07.2011. 21:17 ] @
Hvala puno, mislim da je ovo odlican odgovor. Sutra cu pokusati da resim pa se javljam.
[ crniluk @ 08.07.2011. 12:28 ] @
Pokusao sam da ubacim kod. U as2 mislim da radi ok, nije mi prijavljivao gresku. Dok u as3 prijavljuje duplikat funkciju:

function goPrint(X:Number,Y:Number,W:Number,H:Number){
u as2:

Code:
var posiljalac:LocalConnection = new LocalConnection();
goBTN.onRelease=function():Void
{
    posiljalac.send("goBTNclick","goPrint","crop");
}
goBTNclick, goPrint i crop su f-je u as3 koje se izvrse na kada se klikne na goBTN u as3


u as3 sam dodao ovo:


Code:
var primalac:LocalConnection = new LocalConnection();
primalac.connect("goBTNclick");
primalac.client = this;
function goPrint(crop):void
{
    // ovde se nalazi kod koji ce se izvrsiti pozivom ove funkcije
}
Kada pokrenem as3 on treba da ucita as2 fajl ali se to ne desava i prijavljuje gresku duplikat f-ja.
Probao sam da umesto: // ovde se nalazi kod koji ce se izvrsiti pozivom ove funkcije
kopiram:
Code:

//CREATE AND EXPORT THE JPGS TO PHP:
function goPrint(X:Number,Y:Number,W:Number,H:Number){
    var thecrop = crop( stage,W,H,X,Y);
    var imageSaver:ImageSaver = new ImageSaver( scriptURL+scriptName );
    imageSaver.save ( thecrop, savePath ); 
    imageSaver.addEventListener ( Event.COMPLETE,onSaveComplete)
    imageSaver.addEventListener ( IOErrorEvent.IO_ERROR, onSaveError );
    trace('PRINTING: '+X+', '+Y+', '+W+', '+H+" to:\n"+scriptURL+savePath+'.png');
}
function onSaveComplete(e){
    trace('SAVE COMPLETE')
    loadingsign.visible=false
}
function onSaveError(e){
    trace('ERROR WITH SAVE')
    loadingsign.visible=false
}

/////////////////////
//FUNCTIONS::::::::::
function crop( inDisplayObject:DisplayObject, inWidth:Number = 550, inHeight:Number = 400, inX:Number = 0, inY:Number = 0, inScale:Number = 1):Bitmap{
    if (!inDisplayObject) { throw new Error('CropUtil.crop > needs a something on the display list'); return null; }
    var cropArea:Rectangle = new Rectangle( 0, 0, inWidth * inScale, inHeight * inScale);
    var croppedBitmap:Bitmap = new Bitmap( new BitmapData( inWidth * inScale, inHeight * inScale), PixelSnapping.ALWAYS, true );
    croppedBitmap.bitmapData.draw( inDisplayObject, new Matrix(inScale, 0, 0, inScale, -inX, -inY), null, null, cropArea, true );
    return croppedBitmap;
}


i umesto goBTNclick, goPrint i crop sam stavio druga imena npr: jedan, dva tri, naravno promenim i u as2 proporcionalno ali opet nece da radi, ne ucitava as2 u as3 i prijavi grsku za duplikat isto

Evo uploadovao sam moja dva as fajla. Kada se pokrene as3 u njega se ucitava as2.Ovaj plavi pravougaonik je u as2 a snimi pravougaonik u as3. Plavi u as2 treba da uradi isto sto i snimi u as3.
Ne znam u cemu je problem evo pukusavam sve sto mi padne na pamet ali nece nikako.

[Ovu poruku je menjao crniluk dana 08.07.2011. u 13:42 GMT+1]

[Ovu poruku je menjao crniluk dana 08.07.2011. u 13:55 GMT+1]]

[Ovu poruku je menjao crniluk dana 08.07.2011. u 14:26 GMT+1]
[ MenOfHonor @ 08.07.2011. 15:01 ] @
U "as2.swf" selektuj taster "goBTN" i dodaj sledeće:

Code:
on (release) {
    var posiljalac:LocalConnection = new LocalConnection();
    posiljalac.send("Konekcija","goBTNclick");
}


U "AS3.swf" pre funkcije "goBTNclick" dodaj sledeće:
Code:
var primalac:LocalConnection = new LocalConnection();
primalac.connect("Konekcija");
primalac.client = this;


Kako ne bi dobijao grešku da funkcija "goBTNclick" zahteva jedan parametar naznačićeš da ga nećeš koristiti:
Code:
function goBTNclick(event:Event=null){
    loadingsign.visible = true;
    goPrint(112,1,867,530)
}


To je sve. Sada možeš da testiraš i videćeš da u "output" prozoru dobijaš iste poruke kada pritisneš i jedan i drugi taster.
[ crniluk @ 08.07.2011. 17:07 ] @
Svaka cast za odgovor.
Postavio sam pitanje i na nekim stranim actionscript forumima i niko nije odgovorio. Samo su nesto pitali bzv.
Ovakvi ljudi na forumu treba da imaju neku "titulu".
Ja ne znam kako bi se drugacije zahvalio. Jedino da mi das neki br ziro racuna da budem kako se to popularno zove donor :)
Hvala jos jednom.
[ crniluk @ 08.07.2011. 17:21 ] @
- Imam jos samo jedno pitanje. Sad mi je palo na pamet.
- Da li je moguce npr. Videli ste da kad se klikne na dugme da se pojavi obavestenje: Snimanje u toku molim strpljenje. Za to vreme se slika snimi na server.
- Da li je moguce da kada se klikne na dugme da se izvrse funkcije tek kada se (Snimanje u toku molim strpljenje) zavrsi odnosno nestane sa ekrana?
- Ili mozda da se odlozi za nekih 5 sekundi.
- Mozda je bolje ovo prvo ako je izvodljivo.
[ MenOfHonor @ 08.07.2011. 17:40 ] @
Citat:
crniluk: Svaka cast za odgovor.
Postavio sam pitanje i na nekim stranim actionscript forumima i niko nije odgovorio. Samo su nesto pitali bzv.
Ovakvi ljudi na forumu treba da imaju neku "titulu".
Ja ne znam kako bi se drugacije zahvalio. Jedino da mi das neki br ziro racuna da budem kako se to popularno zove donor
Hvala jos jednom.

Nema na čemu. Ne treba ništa, drago mi je kada mogu da pomognem. Možda jednog dana dobijem titulu moderatora.
Citat:
crniluk: - Imam jos samo jedno pitanje. Sad mi je palo na pamet.
- Da li je moguce npr. Videli ste da kad se klikne na dugme da se pojavi obavestenje: Snimanje u toku molim strpljenje. Za to vreme se slika snimi na server.
- Da li je moguce da kada se klikne na dugme da se izvrse funkcije tek kada se (Snimanje u toku molim strpljenje) zavrsi odnosno nestane sa ekrana?
- Ili mozda da se odlozi za nekih 5 sekundi.
- Mozda je bolje ovo prvo ako je izvodljivo.

Ako želiš da pozoveš funkcije nakon određenog perioda možeš da koristiš setTimeout() metod koji ima oblik:
Code:
setTimeout(naziv_funkcije,milisekunde,parametri);

Znači ona prihvata tri parametra: prvi je naziv funkcije koja se poziva, drugi je broj milisekundi nakon čega će se pozvati funkcija, a treći su parametri koji se prosleđuju funkciji (može se izostaviti).
[ crniluk @ 08.07.2011. 18:05 ] @
Dobro ako je tako ;) Retki su ljudi koji hoce da pomognu a ne traze nista za uzvrat. Ima ih u nasoj zemlji vise nego u tamo nekim nazovi boljim ali su u senci ;)

Ovo se odnosi na kasnjenje npr za 5 sec? Ako sam dobro razumeo. Ne odnosi se na to da kada se zavrsi (Snimanje u toku molim strpljenje)?

Znaci ako bi hteo ovo da implementiram to bi izgledaolo ovako:

Code:
setTimeout(goBTNclick,300);


I ovo stavim isred:

Code:
function goBTNclick(event:Event=null){
    loadingsign.visible = true;
    goPrint(112,1,867,530)
}


znaci ovako:

Code:
setTimeout(goBTNclick,5000);
function goBTNclick(event:Event=null){
    loadingsign.visible = true;
    goPrint(112,1,867,530)
}


Kakav je situacija da se podesi da se izvrsi kad ase zavrsi (Snimanje u toku molim strpljenje)?

Jer kada kliknem na button u as2 taj button mi takodje otvara prozor za kontakt koji se snimi zajedno sa slikom. Sto ne bi trbalo.
A ako bi se usporilo otvaranje tog prozora npr kada se snimanje zavrsi sve bi bilo kako treba.
Da li je moguce resiti na taj nacin ili mora preko setTimeout-a?

A ne ne. Pogresio sam gore.

Trebalo bi da usporim pojavljivanje prozora a ne izvrsenje f-je.

- Znaci imam movie clip koji se zove emailForm_mc odnisi se sve na as2
- Tu se unose kontak podaci.
- Kada se klikne na dugme koje se zove quote_btn onda se pojavi taj prozor.
- Tom dugmetu sam dodao kako si mi objasnio da kada se klikne na njega takodje izvrse f-je koje se izvrsavaju u as3. I to radi odlicno.
- Sada je problem sto mi se snimi i taj prozor koji se pojavi.
- Evo koda koji se koristi za pojavljivanje prozora i on bi treboa da se pojavi kasnije, znaci nakon sto je snimanje zavrseno:
Code:
///email pop-up
quote_btn.onPress = function(){
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
    


[Ovu poruku je menjao crniluk dana 08.07.2011. u 19:37 GMT+1]

[Ovu poruku je menjao crniluk dana 08.07.2011. u 19:44 GMT+1]

[Ovu poruku je menjao crniluk dana 08.07.2011. u 19:44 GMT+1]
[ MenOfHonor @ 08.07.2011. 18:32 ] @
Koje funkcije? Ti pritiskom na taster pozivaš funkciju "goPrint" koja odrađuje svoj deo posla, a kada završi poziva funkciju "onSaveComplete" koja uklanja taj znak.
[ crniluk @ 08.07.2011. 18:45 ] @
u odnosu na ovo gore probao sam:
Code:
///email pop-up
quote_btn.onPress = function(){
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    setTimeout(_parent.attachMovie,5000);
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);


Nece. Menjao sam i emailForm_mc, emailForm_mc, this._parent.attachMovie umesto naziv_funkcije
[ crniluk @ 08.07.2011. 20:32 ] @
Mozda je sve ovo ispalo malo konfuzno. Evo sta pokusavam:

U AS2 klikom na dugme: quote_btn pojavljuje se movieclip: emailForm_mc

Kako da "usporim" da se klikom na to dugme pojavi movieclip za 5 sekundi ili jos bolje da se movieclip pojavi cim se zavrsi snimanje tj (cim se izgubi text: Snimanje u toku molim strpljenje koji se nalazi u AS3)? Znaci sve da radi kao i do sada samo da se taj MC pojavi kada se ovo zavrsi.

Evo koda u AS2:
Code:
///email pop-up
quote_btn.onPress = function(){
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);


pokusavao sam da dodam setTimeout(stavljao sam svasta iz ovog koda,5000); na razne nacine ali ne ide.
[ MenOfHonor @ 09.07.2011. 05:45 ] @
Ako bi hteo da se movieclip pojavi za 5 sekundi od trenutka kada je taster pritisnut morao bi da kod koji se izvršava kada se taster pritisne da staviš u novu funkciju, a zatim da je pozoveš iz setTimeout() metodi:
Code:
quote_btn.onPress = function(){
    setTimeout(mojaFunkcija,5000);
    }

function mojaFunkcija():Void
{
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
}
[ crniluk @ 09.07.2011. 10:46 ] @
Hvala ti mnogo sto mi pomazes. Evo celo jutro se mucim sa ovim i ne mogu da zavrsim.

Dodao sam kod ali mi prijavi posle 5 sec EMAIL PANEL CHECK: undefined

Nisam poslao celi kod zato sto sam mislio da je samo ovo bitno za taj MC koji se pojavljuje. Da je ovo bitno za taj prozor. Izgleda da nesto nije,
Evo celog koda, koji sam takodje pokusao da dodam u novu f-ju ali opet isto. To je celi kod koji se izvrsava u tom MC prozoru. MC se zove: emailForm_mc

Code:

///email pop-up
quote_btn.onPress = function(){
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
    
    //close button
    emailForm.close_btn.onPress = function(){
        this._parent.removeMovieClip();
    }
    
    //get total items
    emailForm.totalItems_txt.text = stageArray.length;
    //get total price
    emailForm.totalPrice_txt.text = emailForm._parent.totalField_txt.text;
    //list out items on stage/build
    emailForm.items_txt.html = true;
    var myformat:TextFormat = new TextFormat();
    myformat.tabStops = [200, 250];
    for(i=0; i<stageArray.length; i++){
        emailForm.items_txt.htmlText += stageArray[i].name+"   \t -  "+stageArray[i].price+" dinara  \n";
    }    
    emailForm.items_txt.setTextFormat(myformat);
    
emailForm.submit_btn.onRelease = function(){ 
  var errorStatus:Boolean = false;
 
  if(emailForm.userName_txt.text != ""){
   emailVars.userName = emailForm.userName_txt.text;
  }else{
   errorStatus = true;
  }
  if(emailForm.userEmail_txt.text != ""){
   emailVars.userEmail= emailForm.userEmail_txt.text;
  }else{
   errorStatus = true;
  }
  //trace(emailVars.userEmail);
  if(emailForm.userPhone_txt.text != ""){
   emailVars.userPhone = emailForm.userPhone_txt.text;
  }else{
   errorStatus = true;
  }
  if(emailForm.userAddress_txt.text != ""){
   emailVars.userAddress = emailForm.userAddress_txt.text;
  }else{
   errorStatus = true;
  }  
  //emailVars.itemList = emailForm.items_txt.text;
  var itemString:String = "";
  for(w=0; w<stageArray.length; w++){
   itemString += stageArray[w].name+"   \t -  "+stageArray[w].price+" dinara  <BR>";
  }
  if(itemString != ""){
   emailVars.itemList = itemString;      
  }else{
   errorStatus = true;
  } 
  if(emailForm.totalItems_txt.text != 0){
   emailVars.totalItems = emailForm.totalItems_txt.text;    
  }else{
   errorStatus = true;
  }
  
  emailVars.totalPrice = emailForm.totalPrice_txt.text;
  emailVars.userComments = emailForm.comments_txt.text;
  if(errorStatus != true){
   
   emailVars.sendAndLoad("sendMail.php", emailVars, "_POST");
   emailForm.emailResults_mc._visible = true;
  }else{
   //send alert to comment field
   emailForm.popuni_sve.text = "POPUNITE SVA POLJA.";
   //reset error status
   errorStatus = false;
  }  
 }    
}
[ MenOfHonor @ 09.07.2011. 12:52 ] @
Možeš to da zanemariš jer se ključna reč this odnosi na trenutno aktivni objekat u kojem je definisana, a _parent se odnosi na roditelja tog objekta. U tvom slučaju ako se this odnosi na taster "quote_btn" onda će se this._parent odnositi na njegovog roditelja, odnosno na movieclip u kojem se nalazi (ili na stage ako se ne nalazi ni u jednom MC-u). Tebi je bitno da se funkcija pozove nakon 5 sekundi pa možeš to i da proveriš:
Code:
quote_btn.onPress = function(){
    setTimeout(mojaFunkcija,5000);
    trace("EMAIL PANEL CHECK: "+this._parent);
    }

function mojaFunkcija():Void{
    trace("Prošlo je 5 sekundi");
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
}
[ crniluk @ 09.07.2011. 15:06 ] @
Poludecu vise.
Probam sve zivo. Najlogicnije mi je:
Moj prvi kod kada kliknem na quote_btn pojavi se prozor, to je ovaj kod:
Code:
quote_btn.onPress = function(){
    trace("EMAIL PANEL CHECK: "+this._parent);
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
}


Umesto tog koda ubacim sada ovaj poslednji kod:
Code:
quote_btn.onPress = function(){
    setTimeout(mojaFunkcija,5000);
    trace("EMAIL PANEL CHECK: "+this._parent);
    }

function mojaFunkcija():Void{
    trace("Prošlo je 5 sekundi");
    var emailForm = this._parent.attachMovie("emailForm_mc", "emailForm", this._parent.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
}


U autputu izlazi cini mi sve kako treba, isto kao u prvom i posle 5 sekundi ispise se proslo je 5 sekundi.
Ali se prozor ne pojavljuje. Tj MC (emailForm_mc) se ne pojavi.
[ MenOfHonor @ 09.07.2011. 15:49 ] @
Nisi dobro razumeo moj prethodni odgovor. U ovom slučaju problem predstavlja this._parent, jer kao što ti se prethodno prikazivalo u output prozoru this._parent je nedefinisano (undefined). Ti sada želiš da tu dodaš "emailForm_mc" i s toga je logično da se ne pojavljuje. Umesto toga direktno navedi naziv movieclip-a (ili root-a) gde želiš da ti se taj "emailForm_mc" prikaže:
Code:
function mojaFunkcija():Void{
    trace("Prošlo je 5 sekundi");
    var emailForm = _root.attachMovie("emailForm_mc", "emailForm", _root.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
}
[ crniluk @ 09.07.2011. 16:44 ] @
Ahaaa. DA DA. Tako je. Sad sam promenio na _root i radi pojavi se tacno kako treba. Ali se javio jos jedan problem. Ne znam da li je veliki ali sam se opet iznervirao a taman se obradovao.
Evo celokupnog koda kako sada izgleda. Radi sve osim jednog polja (totalPrice_txt) koj treba da ispise neku cenu. Sada u tom polju pise undefined.
To je linija malo ispod f-je close button na pocetku:

emailForm.totalPrice_txt.text = emailForm._parent.totalField_txt.text;

Najverovatnije sada ovo pravi problem: _parent

Savljao sam umesto ovog: _root, i ime MC (emailForm_mc) ali nece.

Code:

///email pop-up
quote_btn.onPress = function(){
    setTimeout(mojaFunkcija,2000);
    trace("EMAIL PANEL CHECK: "+this._parent);
    }
function mojaFunkcija():Void{
    trace("Prošlo je 5 sekundi");
    var emailForm = _root.attachMovie("emailForm_mc", "emailForm", _root.getNextHighestDepth());
    emailPanel = emailForm;
    emailForm._x = (Stage.width/2) - (emailForm._width/2);
    emailForm._y = (Stage.height/2) - (emailForm._height/2);
    
    //close button
    emailForm.close_btn.onPress = function(){
        this._parent.removeMovieClip();
    }
    
    //get total items
    emailForm.totalItems_txt.text = stageArray.length;
    //get total price
    emailForm.totalPrice_txt.text = emailForm._parent.totalField_txt.text;
    //list out items on stage/build
    emailForm.items_txt.html = true;
    var myformat:TextFormat = new TextFormat();
    myformat.tabStops = [200, 250];
    for(i=0; i<stageArray.length; i++){
        emailForm.items_txt.htmlText += stageArray[i].name+"   \t -  "+stageArray[i].price+" dinara  \n";
    }    
    emailForm.items_txt.setTextFormat(myformat);
    
emailForm.submit_btn.onRelease = function(){ 
  var errorStatus:Boolean = false;
 
  if(emailForm.userName_txt.text != ""){
   emailVars.userName = emailForm.userName_txt.text;
  }else{
   errorStatus = true;
  }
  if(emailForm.userEmail_txt.text != ""){
   emailVars.userEmail= emailForm.userEmail_txt.text;
  }else{
   errorStatus = true;
  }
  //trace(emailVars.userEmail);
  if(emailForm.userPhone_txt.text != ""){
   emailVars.userPhone = emailForm.userPhone_txt.text;
  }else{
   errorStatus = true;
  }
  if(emailForm.userAddress_txt.text != ""){
   emailVars.userAddress = emailForm.userAddress_txt.text;
  }else{
   errorStatus = true;
  }  
  //emailVars.itemList = emailForm.items_txt.text;
  var itemString:String = "";
  for(w=0; w<stageArray.length; w++){
   itemString += stageArray[w].name+"   \t -  "+stageArray[w].price+" dinara  <BR>";
  }
  if(itemString != ""){
   emailVars.itemList = itemString;      
  }else{
   errorStatus = true;
  } 
  if(emailForm.totalItems_txt.text != 0){
   emailVars.totalItems = emailForm.totalItems_txt.text;    
  }else{
   errorStatus = true;
  }
  
  emailVars.totalPrice = emailForm.totalPrice_txt.text;
  emailVars.userComments = emailForm.comments_txt.text;
  if(errorStatus != true){
   
   emailVars.sendAndLoad("sendMail.php", emailVars, "_POST");
   emailForm.emailResults_mc._visible = true;
  }else{
   //send alert to comment field
   emailForm.popuni_sve.text = "MOLIMO VAS POPUNITE SVA POLJA.";
   //reset error status
   errorStatus = false;
  }  
 }    
}
[ MenOfHonor @ 09.07.2011. 17:15 ] @
Opet moram da kažem da je to logično i očekivano. Ti si sad naveo da se u polju "totalPrice_txt" kao tekst prikaže vrednost koja se nalazi u polju "totalField". Flash traži roditelja "emailForm"-e a zatim pokušava da u njemu pronađe "totalField_txt" koji se verovatno na toj lokaciji ne nalazi. Ako je prethodno roditelj "emailForm"-e bio neki drugi movieclip, a sada si ga ti sa prethodnim kodom koji sam ti napisao stavio direktno na stage, onda bi "totalField_txt" morao da se nalazi direktno na stage-u kako bi se ostvarila prvobitna funkcionalnost. Na kraju, ta problematična linija koda bi trebala da izgleda ovako:
Code:
emailForm.totalPrice_txt.text = emailForm._root.totalField_txt.text;

U ovom slučaju moraš da "totalField_txt" premestiš direktno na stage. Ako hoćeš da ostane na lokaciji gde se trenutno nalazi onda treba da umesto _root-a navedeš naziv MC-a u kojem se "totalField_txt" nalazi:
Code:
emailForm.totalPrice_txt.text = emailForm.MC.totalField_txt.text;
[ crniluk @ 09.07.2011. 19:01 ] @
Tako sam i pokusavao, ali nije htelo.

I posle duzeg vremena i mucenja i isprobavanja uspeo sam da resim.

Trebalo je pre naziva MC da napisem _root

Code:
emailForm.totalPrice_txt.text = emailForm._root.imeMC.totalField_txt.text;


Sada mislim da sve radi kako treba. Od srece nisam ni stigao da uploadujem pa probam na netu. Ali to cu veceras, sada malo da odmorim.

Hvala ti najvise na svetu, da nije bilo tebe ne bih moga osam nista da uradim.
Jos jednom hvala na velikoj pomoci.
NAdam se da ce ovo jos nekome koristiti.
Pozz i sve najbolje.
[ MenOfHonor @ 09.07.2011. 19:45 ] @
Onda se verovatno taj "totalField_txt" nalazio u nekom druugom MC-u pa zato i nisi mogao iz "emailForm"-e da mu pristupiš pre pozivanja root-a. Sada bi sve trebalo da funkcioniše. Pozdrav!