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.



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

19 kommentarer

  1. felisan siger: (2. marts 2010 kl. 13:17 )

    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?

  2. Mads Buch Stage siger: (2. marts 2010 kl. 16:06 )

    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 :-)

  3. Robert siger: (2. marts 2010 kl. 22:19 )

    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”);
    }

  4. felisan siger: (3. marts 2010 kl. 00:23 )

    OK.
    Jeg er med på at teste, og hvis det bliver nødvendigt; videreudvikle :O)

    Tak for at du deler.

  5. Thomas siger: (6. marts 2010 kl. 19:57 )

    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.

  6. Mads Buch Stage siger: (8. marts 2010 kl. 19:38 )

    Dejligt at høre at det virker som det skal :-)

  7. Lukas siger: (22. marts 2010 kl. 15:08 )

    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?

  8. Mads Buch Stage siger: (22. marts 2010 kl. 18:06 )

    @Lukas: Umiddelbart vil jeg da ikke mene at den AS2 kode du viser vil blive fanget af en popup-blokker i IE7 eler 8?

  9. Mads siger: (5. oktober 2010 kl. 08:29 )

    Det virker sgu! :D

    Jeg er ret grøn i Flash - er det muligt at lave flere clicktags i et banner med den her model?

  10. Mads Buch Stage siger: (5. oktober 2010 kl. 16:23 )

    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.

  11. Mads siger: (6. oktober 2010 kl. 12:14 )

    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);

  12. Mads Buch Stage siger: (6. oktober 2010 kl. 12:31 )

    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 :-)

  13. Mads siger: (6. oktober 2010 kl. 12:45 )

    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. :(

  14. Mads Buch Stage siger: (1. november 2010 kl. 16:28 )

    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);

  15. BrianC siger: (1. februar 2011 kl. 10:49 )

    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?

  16. Mads Buch Stage siger: (2. februar 2011 kl. 20:14 )

    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.

  17. Bannersretningslinier fra FDIM - sikke noget makværk! · omFlash(); siger: (28. februar 2011 kl. 14:47 )

    […] Jeg bruger selv mit eget udviklede (clickTAG i ActionScript 3), men er meget åben for alternativer - bare det virker alle steder. […]

  18. Rune Pola siger: (24. maj 2011 kl. 11:08 )

    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”);
    }

  19. Mads Buch Stage siger: (24. maj 2011 kl. 13:46 )

    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.

Skriv en kommentar