Daugelis kurdami Flash banerius atsainiai žiūri į kai kuriuos dalykus, kurie gali stipriai sumažinti reklaminio skydelio naudingumą paprasčiausiai dėl to, kad vartotojas negalės paspausti jame esančią nuorodą. Keli pamąstymai ir pastebėjimai, kaip to išvengti:

AS2 vietoj AS3

Visų pirmą reklaminį skydelį taisyklingiau būtų kurti AS2 versijai o ne AS3. Kodėl? Eksportuojant flash failą AS3 versijai Internet Explorer naršyklėje (nuo IE7) paspaudus baneryje esančią nuorodą, bus iškviestas pop-up blocker’io pranešimas:

Savaime aišku didelė dalis vartotojų nesivargins spausti dar kelis kartus (o kartais ir nemokės to padaryti) kad pereiti prie nuorodos. Šis apsauginis pranešimas atsiranda, jei swf failas įterpiamas į HTML su bet kokiu kitu wmode parametru, nei “window” bei nuoroda atidaroma naujame lange (_blank).

Reikia turėti omenyje, kad dažniausiai baneriai nusiunčiami didžiosioms interneto reklamos kompanijoms, administruojančioms milžinišką kiekį reklamos plotų (pvz www.adclick.lt). Portalų savininkai įdeda jų unifikuotą kodą į savo svetainės ir neturi jokio priėjimo prie flash parametrų kaip wmode, allowScriptAccess ar grotuvo versijos patikrinimo.

Kaip apeiti blocker’į? Oficialiai niekaip. Bet yra “workaround”.

Didieji advertiser’iai kaip adocean.pl HTML kode naudoja window mode “opaque”. Jų klientams tai be abejo teisingas sprendimas, nes tai leidžia lengvai pozicionuoti flash elementą puslapyje, jis daugiau nebėra rodomas virš visų kitų elementų (z-index) ir neišdarko svetainių dizaino. Taigi wmode “window” nėra įšeitis, nes šio parametro savo kode jie tikrai nekeis. Tikrinti naršyklės versiją ir nuorodai naudoti ExternalInterface nevisada pavyks, nes dažnai baneris rodomas iframe’e, kur paprasčiausiai nesuveiks javascript’inis naujo lango iškvietimas. Vis gi šioks toks būdas apeiti blocker’į yra: įkrauti AS2 swf klipą su button’u į mūsų AS3 banerį dinamiškai. Kaip tai padaryti žr. žemiau. Tai neduos 100% tikimybės, nes nevisi reklamos platintojai pagal savo Security Policy leidžia įkrovinėti į banerius ką nors iš išorės.

Export for Flash 8

Pagal šiuo metu (2010 metais) esančią Flash grotuvų versijų internete paplitimo statistiką 8 grotuvo versija yra plačiausiai paplitusi, tuo labiau jei mes darom as2 kalbos failą, lieka labai mažai priežasčių kodėl turėtume eksportuoti klipą aukštesnei versijai. Flash 8 palaiko net kai kurios mobiliųjų telefonų naršyklės ir kiti prietaisai (dauguma jų palaiko ir flash 9, bet žymiai rečiau 10).

Tačiau NEreikia saugoti failo žemesnei nei 8 versijai. Kodėl? Vėl gi dėl pop-up blokavimo. 5, 6 ir 7 swf versijose getURL funkcija iššaukia perspėjimą apie nuorodą kai kuriuose naršyklėse (dėl pasikeitusio adobe security modelio).

Local Playback Security: Access Network Only

Ir vėl prisimename Internet Explorerį, kuris kartais rodo perspėjimą, kai spaudžiama swf failo, publikuoto su “Access local files only” nustatymu, nuoroda. Kadangi mūsų baneris visada bus tik tinkle ir jokių lokalių failų nekraus, laisvai galime jį saugoti su Network Only nustatymu (File -> Publish Settings -> Flash)

FPS 20-40

Flash programos versijose iki CS4 frames per second (FPS) arba kitaip swf klipo grojimo greitis buvo nustatytas pagal nutylėjimą 12 kadrų per sekundę. Be abejo tai mažai, matosi kadrų trūkčiojimas. Optimalus greitis 24-25 fps. Jeigu to nepakanka, galima jį didinti. Bet pagailėkit vartotojų procesorius, nekurkit banerių grojančių 100 kadrų per sekundę. Keletas tokių šedevrų gali net “pakabinti” naršyklės langą.

clickTag

Tai kintamoji, kuri perduoda nuorodos adresą iš HTML į flash’ą. Bet vienos sistemos naudoja clickTAG, kitos clickTag, dar kitos ClickTAG ir pan. Nuo Flash 8 versijos didžiosios ir mažosios kintamųjų raidės turi reikšmės. Unifikuotas clicktag kodas atrodytų taip:

as2:

function getClickTag() {
    for (key in this)
        if (key.toLowerCase()=="clicktag" && (this[key].substr(0,5)=="http:"||this[key].substr(0,6)=="https:"))
            return this[key];
    return "http://www.weaxdesign.com";
}
button.onRelease = function() {
    getURL(getClickTag(), "_blank");
}

kur button būtų mūsų Button tipo klipas nuorodai. Ją reikėtų įrašyti pirmajame freime pagrindiniame (_root) lygyje. Šį funkcija tikrina visus cLicKtaG rašymo variantus. O jei neranda clickTag reikšmės, naudoja vidinę nuorodą pagal nutylėjimą. Taip pat tikrina ar url prasideda http (ar https) protokolu, kaip siūlo Adobe, kadangi teoriškai įmanoma įterpti kenkėjišką javascript kodą vietoj nuorodos.

as3:

Padarome tuščią AS2 klipą, sakykim 1024×1024 px, kad užtikrintai uždengtų betkokio dydžio banerio plotą. Jį mes įkrovinėsim į AS3 banerį ir perdavinėsim clickTag’ą jau į AS2. Kad nekiltų jokių nesklandumų, perduodamai clickTag nuorodai padarysim escape() ir šiek tiek ją užkoduosim, kad neprarastų jokių simbolių.

AS3 banerio skriptas atrodo šitaip:

function getClickTag():String {
    for (var key:String in root.loaderInfo.parameters)
        if(key.toLowerCase()=="clicktag" && (root.loaderInfo.parameters[key].substr(0,5)=="http:"||root.loaderInfo.parameters[key].substr(0,6)=="https:"))
            return root.loaderInfo.parameters[key];
    return "http://www.weaxdesign.com";
}
var escapedURL:String = escape(getClickTag());

var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("http://www.weaxdesign.com/files/as2button.swf?clickTag="+escapedURL);
mLoader.load(mRequest);
addChild(mLoader);

AS2 klipe sukuriame permatomą mygtuką, uždedame ant jo aukščiau aprašytą skriptą AS2 mygtukams, bet su nedideliu pakeitimu, kadangi turime atkoduoti nuoroda:

getURL(StringUtil.unescape(getClickTag()), "_blank");

Deja escape() AS2 kalboje veikia kitaip nei AS3, todėl panaudojau StringUtil klasę, kad unescape’int mūsų tekstą su AS2 teisingai.

Imam failą StringUtil.as ir dedame jį šalia AS2 mygtuko .fla failo prieš jį kompiliuojant.

Spėju, kad šis “mygtuko krovimo iš išorės” metodas veiks tik su allowScrptAccess “always” HTML parametru.