clickTag i ActionScript 3

Kategori: Tips og tricks | Kommentarer (19)
Gemt: 2010-02-25 17:53


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.


Gratis online kurser i ActionScript 3 og FDT

Kategori: Diverse | Kommentarer (0)
Gemt: 2010-02-5 13:50


Rich Media Institute har i øjeblikket et par særdeles gode tilbud, nemlig muligheden for at tage et kurser i henholdsvis ActionScript 3 og FDT - gratis!

Jeg kender ikke firmaet selv og ved derfor heller ikke hvor gode kurserne er, men til den pris er det jo svært at blive snydt.

Comprehensive ActionScript 3 (gratis indtil 15. februar)

Introduction to ActionScript Development with FDT (gratis i hele februar)

Så, nu er der ikke nogen grund til at kede sig i weekenden :-)


Tags: , ,

WebcamHelper - Nemmere adgang til webcam i ActionScript 3

Kategori: Tips og tricks | Kommentarer (0)
Gemt: 2009-11-17 10:46


I forbindelse med Hit the Bitch, som vi lancerede i sidste uge, var en af de ting der drillede mig, at få webcam-integrationen til at virke gnidningsløst.
Her tænker jeg ikke på selve motion-detection tingen, men den basale funktionalitet med at finde ud af om man har adgang til brugerens webcam og hvis ikke, så at spørge om den.

Og, hvad nu hvis brugeren har givet en adgang til webcammet, men senere fjerner muligheden igen, eller ikke giver tilladelsen fra start og efetrfølgende slår det til?

Der er en lang række if’er, som gjorde det enormt besværligt at bygge det smidigt ind i den kode som jeg havde i forvejen, så derfor blev resultatet en lille WebcamHelper-klasse.

Med denne klasse, så foregår adgang til webcammet på denne måde:

public function CamTest():void {
	webcamHelper = new WebcamHelper();
	webcamHelper.addEventListener(StatusEvent.STATUS, webcamAvailable);
	webcamHelper.getWebcam();
}

public function webcamAvailable(_e:StatusEvent):void {
	trace("isAvailable: " + webcamHelper.isAvailable);
	if (webcamHelper.isAvailable && myVideo == null) {
		myVideo = new Video(320, 240);
		myVideo.attachCamera(webcamHelper.camera);
		addChild(myVideo);
	}
}

Det der gør det lidt interessant er, at der kommer en StatusEvent fra klassen hver gang at adgangen til webcammet ændrer sig, hvilket gør det nemt at lave noget kode som tager højde for hvad der så skal ske (ikke en del af eksemplet).

Hvis du synes det lyder interessant, så kan klassen og eksemplet downloades her:
WebcamHelper.zip


PrintJob - Sådan printer du i ActionScript 3

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-10-5 16:01


Da vi for nylig lavede Boxer Guide skulle der også være en mulighed for at printe ens resultat og tage det med ned til en forhandler, hvilket gav mig lejlighed til at bruge PrintJob-klassen i ActionScript 3.

Den er egentlig ganske nem og overskuelig når man kender den, men der var alligevel et par gotchas som kostede mig et par timer - som jeg forhåbentlig kan spare dig for.

Her først lidt simpel eksempel-kode:

var mc_til_print:MovieClip = new MovieClip();

var _options:PrintJobOptions = new PrintJobOptions(true);
var _print:PrintJob = new PrintJob();

if (_print.start()) {
	var _bwidth:Number = mc_til_print.width;
	var _bheight:Number = mc_til_print.height;
	var _scale:Number = _print.pageWidth / mc_til_print.width;
	mc_til_print.scaleX = _scale;
	mc_til_print.scaleY = _scale;
	var _rect:Rectangle = new Rectangle(mc_til_print.x,
						mc_til_print.y,
						_bwidth,
						_bheight);

	_print.addPage(mc_til_print, _rect, _options);
	_print.send();
} else {
	//Brugeren ville ikke printe
}

Når funktionen print.start() kaldes, så åbner den sædvanlige Windows eller Mac print-dialog hos brugeren, som så kan vælge hvilken printer der skal printes på, papirstørrelse etc.
Efter brugeren har foretaget sine valg og klikker på “Ok”, så eksekveres koden inde i if’en og på dette tidspunkt er der på print, vores instance af PrintJob-klassen, blevet sat en række værdier med resultaterne af de valg brugeren har foretaget.

Den absolut vigtigste i denne sammenhæng er papirstørrelsen, og den størrelse bruges her til at finde ud af hvor meget movieclippet skal skaleres for at fylde hele papiret ud.

Når den størrelse er sat, så sendes movieclippet til print som en ny side, inklusiv et Rectangle-objekt, der definerer printområdet, hvilket i dette tilfælde er hele movieclippet.

I eksempler her, er der kun en side at printe, men funktion addPage kan naturligvis kaldes lige så mange gange man har lyst til, inden man starter printet med print.send()

Håber det gav dig et bedre overblik over PrintJob end jeg havde da jeg skulle igang :-)


Tags: ,

Bug ved brug af Filters og MouseEvent.ROLL_OVER og OUT

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-09-18 9:23


I forbindelse med udviklingen af Boxer Guide rendte jeg ind i et rigtigt belastende problem.

Jeg havde et movieclip med en MouseEvent.ROLL_OVER og MouseEvent.ROLL_OUT event på, helt simpelt, men nogen gange når man rullede musen henover så kom der både en ROLL_OVER, så en ROLL_OUT og endelig en ROLL_OVER igen - rigtig belastende når man bruger eventen til at starte noget animation.

Efter at have prøvet et utal af ting - det er som sagt helt simpelt, så derfor kunne jeg slet ikke forstå hvad der kunne drille - endte jeg med at fjerne de filtre der var på movieclippet, i dette tilfælde BlurFilter og DropShadow - og så forsvandt problemet som dug for solen.

Fandt efterfølgende også en bug der var submittet til Adobe på netop dette problem (har mistet linket til den, sorry) og da den første gang er rapporteret i slutningen af juli, så tror jeg art der er tale om en bug i en af de nyere versioner af Flash Player 10.

Mit eget hack for at løse det blev, dynamisk at tegne et nyt movieclip ovenpå det andet - uden filtre - som jeg så lytter på events på og efterfølgende starter animation på det nedenunder - super belastende, men det funker.

Håber at denne post kan spare en enkelt eller to for at få flere grå hår end højst nødvendigt.


AS3 - afrunding af tal, en lille gotcha

Kategori: Tips og tricks | Kommentarer (4)
Gemt: 2009-09-9 11:01


I min jagt efter en måde nemt at afrunde et tal til 2 decimaler, f.eks. fra 8,75469 og til 8,75, er jeg mange gange gået forgæves, for mystisk nok, så modtager Math.round() funktionen ingen argumenter, den afrunder altid til et helt tal.

Men, der findes rent faktisk en indbygget løsning, problemet for mig har bare været at jeg har haft stirret mig blind på Math.round() og Math-klassen generelt, for svaret findes i virkeligheden på Number og Int klassen.
De har nemlig begge to funktionen toFixed, som netop kan afrunde:

var num:Number = 8.45132;
var dec:String = num.toFixed(2);
trace(dec) //8.45

var danish:String = dec.split(".").join(",");
trace(danish) // 8,45

Som bonus har jeg også lige vist en simpel måde at ændre punktummet til et komma, hvis man har behov for at vise det til en dansk bruger.

Det her er en af de ting, hvor hvis man ved det, så er det helt åbenlyst, men gør man ikke, så er det nemt at stirre sig blind på Math klassen som jeg gjorde :-)


7 interessante sommerartikler

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-07-27 11:45


Der har været lidt stille på bloggen den seneste måned, dels grundet travlhed og dels grundet ferie.
Men, resten af nettet har jo heldigvis ikke ligget stillet, så her kommer en liste med 7 artikler som helt sikkert er værd at læse.

AS3 Flash Efficient Code Techniques, Vectors in Flash 10, Faster JPEG Encoding, Other Optimization Notes
Et par tip til brug af Vector, samt ikke mindst, links til en række andre gode artikler om performance optimering.

XML to ActionScript
Et bud på hvordan en xml-to-as engine kan skrues sammen, og selv hvis man ikke har brug for lige netop det, så er koden et kig værd.

Strategies for optimizing collision detection with BitmapData.hitTest
Overskriften siger det hele og der kan virkelig være meget performance at hente her!

Nurbs!
Ikke noget brugbart (endnu), men et rigtig sjovt eksperiment, der viser hvordan man også kan angribe Flash og 3D.

Keyboard events on stage are not working… why?
Hvis dine keyboard events engang imellem driller, så kan dette være grunden.

Just Another Flash IDE - Flex/Flash Builder Workflow
Big Spaceships bud på hvordan et optimalt workflow mellem udviklere og designere kan skrues sammen, vel og mærke, hvor ingen af parterne er bundet til at bruge det samme software.

Text Layout Framework
Adobe’s open source framework til at lave avanceret textlayout i Flash og Flex - tjek det ud, det er ganske imponerende.


ActionSnippet - En fremragende blog!

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-04-23 10:04


Jeg faldt for nylig over bloggen ActionSnippet som har et super simpelt koncept:
Hver dag bliver der lavet en ny post med en stump ActionScript kode, som man kan paste direkte ind på sin timeline og teste.

Det kan dreje sig om alt fra 3D eksperimenter til hvordan man tegner bestemt tandhjul eller hvordan man kan finde kvadratroden, hvis man nu bare ikke vil bruge Math.sqrt.

Det er i øvrigt værd at bemærke at kodestumperne ikke opfylder best-coding-practices, men hver især blot at tænkt som deres egne små eksperimenter - og der er masser af inspiration at hente!


Tags: ,

ActionScript 3 - Facebook API

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-03-31 11:31


Ved ikke helt om det er en nyhed, eller om den har været der længe, men fakta er i hvert fald at der findes et ActionScript 3 Client Library til Facebook API’en, som gør det meget nemmere at lave direkte integration mellem Flash og Facebook.

I de Flash-ting vi selv hidtil har lavet, har jeg typisk sendt en del af kaldene gennem php, eller simpelthen lavet mellemsider i html, fordi det var langt det hurtigste, men med ActionScript 3 Client Librariet så må det siges at være blevet en hel del nemmere at lave det direkte i Flash.

Du kan finde en beskrivelse af librariet her:
Adobe Flash Platform & Facebook Platform

Og det kan downloades herfra:
Google Code - Facebook ActionScript API


Tags: , ,

Skaler dit indhold så det passer til skærmen

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-01-20 10:48


Hvis der har været en dominerende trend i Flash inden for det sidste års tid, så er det at man nu meget ofte bruger hele skærmens størrelse (som vi eksempelvis selv gør det på Fredrik Clement), og selv om det egentlig er rimelig simpelt at gå til, så er det jo altid godt med et sted at starte og til det formål kan denne tutorial fra Kirupa anbefales:
Auto-rezising and centering your content


Tags: ,