[ emirnp @ 02.11.2011. 20:22 ] @
Pozdrav. Imam zavrsen sajt u flashu.
Sad mi samo treba kompletna komanda kojom cu preko dugmeta Muske_btn (galerija muskih modela farmerki) da pozovem otvaranje galerije muske.swf (externi fajl) i da ga otvori na novoj strani (_blank)?
Koju actionscript komandu da koristim na dogadjaj za pomenuto dugme.
Hvala unapred.
[ MenOfHonor @ 02.11.2011. 22:23 ] @
U slučaju da koristiš ActionScript 3 kod bi izgledao ovako:
Code:
import flash.events.Event;
import flash.external.ExternalInterface;

// dodajes osluskivac dogadjaja na taster cijim se pritiskom poziva funkcija
muske_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);

// odavde pozivas funkciju u JavaScript-u
function pritisnutTaster(event:MouseEvent):void
{
    // koristis ExternalInterface klasu i njen metod call() kome prosledjujes naziv funkcije koju zelis da pozoves
    ExternalInterface.call("galerija");
}

U HTML-u koristeći JavaScript napiši funkciju sa nazivom koji si naveo u Flash-u (u ovom primeru to je "galerija"):
Code:
<head>
        <title>Galerija</title>
        <script type="text/javascript">
            function galerija(){
            window.open("muske.swf");
            }
        </script>
</head>

Rezime: pritiskom na taster "muske_btn" u swf-u poziva se funkcija u JavaScript-u koja otvara novu stranu u pretraživaču i prikazuje "muski.swf".
[ emirnp @ 03.11.2011. 20:00 ] @
Hvala , druze :)
[ emirnp @ 04.11.2011. 23:57 ] @
Nece mi kod. Nece da mi otvori externi .swf

yourbutton.addEventListener(MouseEvent.CLICK,f);
var loader_mc : Loader = new Loader();
var urlRequest : URLRequest = new URLRequest("photography.swf");
function f(e:Event){
loader_mc.load(urlRequest);
addChild(loader_mc);
}

probao sam i ovaj kod, stavio sam ga na prvi frejm, u lajeru actions. SWF file mi je u istom folderu sa index.fla..
Ne znam gde je problem :S
[ MenOfHonor @ 05.11.2011. 00:39 ] @
Tako kako si napisao primećujem da ti hoćeš da učitaš eksterni swf u postojeći swf a ne da ga otvoriš na novoj strani. Postavio sam primer koji sam ti u prethodnom postu objasnio, možeš da ga pogledaš ovde: http://dhost.info/manofhonor/nova_strana/main.html.
Kada koristiš Loader klasu ti učitavaš eksterni swf u glavni swf, a to se ne slaže sa pitanjem koje si postavio. Kada bi hteo da učitaš "photography.swf" u glavni swf kod bi trebalo da izgleda ovako:
Code:
yourbutton.addEventListener(MouseEvent.CLICK,f);
var loader_mc:Loader = new Loader();
var urlRequest:URLRequest = new URLRequest("photography.swf");

function f(e:Event){
    loader_mc.contentLoaderInfo.addEventListener(Event.COMPLETE, ucitanSWF);
    loader_mc.load(urlRequest);
}

function ucitanSWF(event:Event):void{
    addChild(loader_mc);
}
[ emirnp @ 12.11.2011. 22:46 ] @
Jedino da ti na mailu posaljem ovu stranu u flashu.
Zaista sam uradio sve, probao sa svim kodovima, nece.

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at PreloaderSWFMode/checkUrl()
at PreloaderSWFMode/openLoad()
at PreloaderSWFMode()

To je greska koju mi ispise pritiskom na dugme.
Mogu li na mail ili privatno da ti posaljem ovaj .fla fajl, da pogledas?

Nisam kao ti na ovom primeru koristio obicno dugme, nego sam pravougaonik konvertovao u Button, sa instance name zenske_btn, i sve uradio kako
treba, pozvao zenske.swf , al nece.
[ MenOfHonor @ 13.11.2011. 04:52 ] @
Može, pošalji mi taj projekat pa ću pogledati u čemu je problem.
[ emirnp @ 14.11.2011. 22:48 ] @
Na 62. frejmu je sadrzaj Galerije.
Na lajeru Portfolio content su dva dugmeta. Pogledaj.
Hvala.
[ MenOfHonor @ 14.11.2011. 23:13 ] @
Važi, još samo da postaviš projekat.
[ emirnp @ 15.11.2011. 07:20 ] @
Mogu li da dobijem mail, fajl je veci od 1024 kb i ne postoji sansa da ga attachujem :S
[ MenOfHonor @ 15.11.2011. 10:59 ] @
Poslao sam ti na pm.
[ MenOfHonor @ 15.11.2011. 22:03 ] @
Najkraći mogući kod kojim možeš učitavati swf-ove u glavni swf je:
Code:
zenske_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);
muske_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);

function pritisnutTaster(event:MouseEvent):void
{
    var swfLoader:Loader = new Loader();
    swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, ucitanSWF);
    swfLoader.load(new URLRequest(event.target.name.replace("_btn","")+".swf"));
}

function ucitanSWF(event:Event):void
{
    addChild(event.target.content);    
}

Nemoj da te zbuni poslednja linija koda unutar funkcije "pritisnutTaser()" koja omogućava da se, u zavisnosti od toga koji je taster pritisnut ("zenski_btn" ili "muski_btn"), obriše "_btn" i da se doda ".swf" kako bi se učitao odgovarajući swf ("zenski.swf" ili "muski.swf"). Duža verzija ovog koda izgledala bi ovako:
Code:
zenske_btn.addEventListener(MouseEvent.CLICK, pritisnutZenski);
muske_btn.addEventListener(MouseEvent.CLICK, pritisnutMuski);

var swfLoader:Loader;

function pritisnutZenski(event:MouseEvent):void
{
    swfLoader = new Loader();
    swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, ucitanSWF);
    swfLoader.load(new URLRequest("zenske.swf"));
}

function pritisnutMuski(event:MouseEvent):void
{
    swfLoader = new Loader();
    swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, ucitanSWF);
    swfLoader.load(new URLRequest("muske.swf"));
}

function ucitanSWF(event:Event):void
{
    addChild(event.target.content);    
}

U ovom slučaju imamo dve različite funkcije "pritisnutZenski()" i "pritisnutMuski()" koje pozivaju tasteri "zenski_btn" i "muski_btn". U svakoj funkciji kreiramo instancu "swfLoader" objekta i u njega učitavamo pripadajući swf "zenski.swf" i "muski.swf", nakon čega pozivamo funkciju "ucitanSWF()" u kojoj taj objekat dodajemo na pozornicu. Sada je samo pitanje da li hoćeš da te swf-ove prikažeš u tom glavnom swf-u ili u novom prozoru pretraživača?
[ emirnp @ 16.11.2011. 07:54 ] @
Ti si video onaj index.fla sto sam ti poslao.
Resenje sa otvaranjem .swf-a u novom prozoru browsera je bolje.
Znaci, dok sam na frejmu 62, na layeru action , frejmu 1 otvorim Action i iskopiram ovaj kod ispod postojeceg koda?
[ MenOfHonor @ 16.11.2011. 14:18 ] @
Da, to bi trebao da dodaš ukoliko hoćeš da učitaš ta dva swf-a u glavni swf. Pošto hoćeš da se oni prikažu na novoj strani pretraživača treba da iskombinuješ onaj kod iz mog prvog odgovora. Dakle, u HTML-u unutar <head> taga bi trebao da dodaš:
Code:
<script type="text/javascript">
            function galerija(pantalone){
                if(pantalone == "zenske")
                {
                    window.open("zenske.swf");
                }
                else
                {
                    window.open("muske.swf");
                }
            }
</script>

Na 62. frejmu treba da se nalazi sledeći kod:
Code:
import flash.external.ExternalInterface;

stop();

zenske_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);
muske_btn.addEventListener(MouseEvent.CLICK, pritisnutTaster);

function pritisnutTaster(event:MouseEvent):void
{
    if (event.target.name == "zenske_btn")
    {
        ExternalInterface.call("galerija","zenske");
    }
    else
    {
        ExternalInterface.call("galerija","muske");
    }
}

Da u JavaScript-u nebismo pisali dve funkcije za pojedinačno prikazivanje fajlova "zenske.swf" i "muske.swf", koristićemo jednu funkciju kojoj ćemo iz Flash-a proslediti parametar u zavisnosti od toga koji je taster pritisnut ("zenske_btn" ili "muske_btn") i onda ćemo proveriti njegovu vrednost i u skladu sa tim će se na novoj strani prikazati pripadajući swf.
[ emirnp @ 16.11.2011. 21:24 ] @
Uspeo sam kombinacijom java script i action script:)
al sam umesto pozivanja zenske.swf i muske.swf stavio html strane (zenske.html i muske.html) jer
kada pozovem .swf otvori mi samo zelenu stranu, bez galerija. Al u svakom slucaju i ovako radi, i neverovatno mnogoo
ti hvala jos jednom :)
[ MenOfHonor @ 17.11.2011. 09:12 ] @
Da, u većini slučajeva ćeš pozivati html strane, tako da si dobro postupio. Nema na čemu!