clickTag i ActionScript 3
Startede sidste sommer et projekt op, hvor tanken var, at jeg ville lave en clickTag ActionScript 3 klasse, som alle i Danmark kunne bruge - købte i den sammenhæng også domænet clicktag.dk.
Men, som det ofte er med den slags projekter, så kniber det altid med at komme de sidste 5% i mål, de få procent der gør at man rent faktisk har lyst til at dele det med nogen.
Sandt at sige, så at jeg ikke kommet videre, men inspireret af denne tråd på FlashForum, så tænkte jeg at jeg lige så godt kunne se at få det jeg har udover rampen.
AS3 clickTag
Kort fortalt er der tale om en klasse der hedder clickTag, som aktiveres på en af disse måder:
import clickTag;
//Måde 1
var _cT:clickTag = new clickTag(root);
_cT.init(click_btn);
//Måde 2
var _cT:clickTag = new clickTag(root, click_btn);
Der er et par ting ved clickTag-klassen, som er gode at vide:
- Virker med ALLE versioner af clickTag, clickTAG, ClickTag m.fl.
- Bliver ikke fanget af popup-blockere, noget der nogen gange kan drille lidt i AS3, se den medfølgende UrlNavigator-klasse.
- Er gennemtestet, har selv brugt den i mere end et halvt år helt uden problemer.
Særligt det sidste er værd at bide mærke i, for hvis du sender et banner der bruger denne clickTag-kode til et medie eller et mediebureau, så kan du sagtens få en mail retur, hvori der står, at clickTag ikke er korrekt implementeret.
Hvis det sker, så start altid med at spørge, om de har sat banneret op og konstateret at det ikke virker når de klikker på det, eller om det er deres “advalidator” der siger at det ikke virker.
Modsat de gamle AS2 clickTags, hvor medierne har været vant til, at de blot har kunnet søge på om en ganske bestemt kodestreng var tilstede, så er den metode ikke længere særligt anvendelig i ActionScript 3.
Det skyldes flere ting, men primært at koden er længere og mere kompliceret i ActionScript 3, hvilket gør at den kan se meget forskellig ud fra et banner til et andet, og stadig virke fint.
Så derfor, så bed dem altid om at teste banneret ved at sætte det op og efterfølgende klikke på det.
Download
Zip med både klasser og eksempel fla:
clickTag.zip
Feedback
I er allesammen meget velkomne til at komme med feedback på klassen, og hvis interessen viser sig at være der for det, så kan det det godt være at vi i fællesskab kan få projektet helt i mål og få skabt en fælles, dansk AS3 clickTag standard.



Hej Mads.
En klasse til dette kunne være særdeles interessant.
Lige nu ville en typisk brug af clickTag se nogenlunde således ud:
var clickTag:String = String(root.loaderInfo.parameters.clickTag);
triggerMC.buttonMode = true;
triggerMC.addEventListener(MouseEvent.CLICK, activateClickTag);
function activateClickTag(e:Event):void {
var request:URLRequest = new URLRequest(clickTag);
navigateToURL(request, “_blank”);
}
Dækker din klasse mere end dette?
Den dækker det, at den tager højde for, at clickTag kan være formateret på mange måder: clickTag, clickTAG, ClickTag osv.
Uanset hvordan det skrives, så virker det med denne klasse.
Derudover oplevede jeg i sin tid også problemer med, at click i AS3-bannere nogen gange blev fanget af popup-blockere i diverse browsere.
Om det stadig er et generelt problem ved jeg ikke, har ikke testet det for nylig, men det løser/løste denne klasse i hvert fald også.
Ja, og så er det jo nemmere at skrive 2 linier i stedet for 10 hver gang
Den gode gamle AS2 getURL version (der også er tilpasset forskellige stavemåder), er også relevant at have med på bloggen:
on (release) {
getURL (_root.clickTag || _root.clickTAG || _root.ClickTag || _root.ClickTAG, “_blank”);
}
OK.
Jeg er med på at teste, og hvis det bliver nødvendigt; videreudvikle :O)
Tak for at du deler.
Jeg brugte den i den seneste bannerreklame jeg lavede. Super nemt. Den fejlede dog i mediebureauets testmiljø. Men efter en snak med en tekniker fik jeg dem overbevist om at banneret virkede, og det var deres testmiljø der fejlede.
Tak for koden.
Dejligt at høre at det virker som det skal
Har et hurtigt spørgsmål,
hvis man laver denne kode i AS2
on (release) {
getURL (_root.clickTAG, “_blank”);
}
i et banner og folk ser det via explorer >7,
bliver det så ikke registreret som en pop up?
nogle der ved hvordan man undgår det i as2?
@Lukas: Umiddelbart vil jeg da ikke mene at den AS2 kode du viser vil blive fanget af en popup-blokker i IE7 eler 8?
Det virker sgu!
Jeg er ret grøn i Flash - er det muligt at lave flere clicktags i et banner med den her model?
Hvis det er flere objekter der skal bruge det samme clickTag, så burde det virke fint, men denne version er (endnu) ikke lavet til at håndtere custom clickTags, eksempelvis clickTag1, clickTag2 etc.
Tak for det hurtige svar.
Det jeg fiskede efter var noget mere konkret.
Er der et simpelt svar til hvordan man tilføjer den samme class til “knap2″?
import clickTag;
var _cT:clickTag = new clickTag(root);
_cT.init(knap1);
Hvis du har 2 knapper der skal linke 2 forskellige steder hen, så kan den nuværende klasse ikke bruges direkte som den er.
Hvis begge knapper skal linke til det samme sted via det almindelige clickTag, så burde du bare kunne sige:
_cT.init(knap2);
Har efterhånden selv en del ideer til finpudsning m.m. men har lige afventet om interessen var der til at det var besværet værd at gøre det
Så var jeg ikke helt lost. Jeg kom bare i tvivl fordi denne fejl opstår når jeg gør det.
1151: A conflict exists with definition _cT in namespace internal.
Det er fordi du ikke skal gentage linie med var _cT. ,men udelukkende kalde init-funktionen på den ekstra knap, altså:
import clickTag;
var _cT:clickTag = new clickTag(root);
_cT.init(knap1);
_cT.init(knap2);
Hej Folkens!
Jeg prøver at lave et banner for en kunde, og dertil skal jeg bruge clickTAG funktionen. Kunden sender mig så den kode snippet som de normalt bruger, men problemet er at det er AS2 og resten af mit er lavet i AS3.
Er der noget i vejen for at jeg bruger AS3? Kan der være noget i kundens ende som der kan være et problem?
Den kode jeg har brugt er:
var _url:String = “http://www.skallerup.dk/”;
if (LoaderInfo(root.loaderInfo).parameters.clickTag){
_url = LoaderInfo(root.loaderInfo).parameters.clickTag;
link_btn.addEventListener(MouseEvent.CLICK, handleMouse);
}
function handleMouse(event:MouseEvent):void {
navigateToURL(new URLRequest(_url), “_blank”);
}
men er faktisk i tvivl om, om det er korrekt?
Din kode ser umiddelbart korrekt ud, det du dog skal være opmærksom på er, at den i visse tilfælde godt kan aktivere browserens popup-blocker, hvilket den clickTag-klasse jeg har lavet ikke gør.
Hvis bare kunden sætter den rigtige Flash Player version når banneret embeddes, så burde det være hips om haps for ham om det er AS2 eller AS3.
[…] Jeg bruger selv mit eget udviklede (clickTAG i ActionScript 3), men er meget åben for alternativer - bare det virker alle steder. […]
Hvordan får man integreret 2 clicktags i AS3 med denne kode?
if (root.loaderInfo.parameters[”clickTAG”]) {
var clickTAG:String =
root.loaderInfo.parameters[”clickTAG”];
}
click_btn.addEventListener(MouseEvent.MOUSE_UP,
getUrlfunction);
function getUrlfunction(ev:Event = null): void {
ExternalInterface.call(”window.open”, clickTAG,
“_blank”);
}
Hej Rune,
Det er sådan set bare at kopiere hele koden og erstatte clickTAG med navnet på det nye clicktag, eksempelvis clickTAG2 - hvad det præcist hedder, må du spørge mediebureauet/websitet om.