mouseEnabled = false som default, tak!

Kategori: Diverse | Kommentarer (2)
Gemt: 2010-08-18 12:11


Okay, dette indlæg er måske lidt en rant, men er jeg den eneste der er træt af, at mouseEnabled og mouseChildren som standard er sat til true på alle objekter?

Det virker unødigt, da der er større sandsynlighed for at musen ikke har brug for at arbejde sammen med det pågældende objekt, end at den har, og det bevirker så også, at man på hver eneste opgave altid er henne og skrive en masse kode der slår det fra på de objekter hvor det ikke skal bruges.

Oven i hatten, så har det endda også et par gange været årsagen til nogle mystiske “bugs”, som efterfølgende har vist sig blot at være et helt eller delvist usynligt objekt, som man ikke lige havde set.

Er jeg den eneste der har det sådan?


Globale variabler i ActionScript 3

Kategori: Diverse | Kommentarer (4)
Gemt: 2010-07-31 13:38


Man kan diskutere hvorvidt globale variabler på store projekter i det hele taget er en god ide, da de hurtigt kan blive svære at holde styr på, men man kommer heller ikke uden om, at de i en del situationer giver mulighed for at spare tid ved at springe over hvor gærdet er lavest - og det gør vi allesammen jo indimellem.

I ActionScript 2 var det nemt at være doven, men kunne bare bruge _global, men i AS3 er der ikke noget tilsvarende objekt, men efter selv at have haft behovet for nyligt fandt jeg en klasse der fuldt ud erstatter _global, så næste gang du er i humør til at være doven, så kan du jo overveje at smutte herhen og læse mere om den:
AS3 Global Object


Tags: ,

HTML5 vs ActionScript 3: Tegn et ikon med kode

Kategori: Diverse | Kommentarer (0)
Gemt: 2010-07-12 14:39


Ganske interessant indlæg, der viser hvordan man tegner et ikon i henholdsvis HTML med JavaScript og Canvas, og hvordan man tegner det samme ikon i Flash med ActionScript 3:
Drawing with JavaScript in HTML5 vs ActionScript 3 in Flash

Jeg er positivt overrasket over hvor meget koderne ligner hinanden, det tegner godt for en fremtid hvor nogle opgaver løses bedst i HTML5 og andre løses bedst i ActionScript 3.


Tags: ,

clickTag i ActionScript 3

Kategori: Tips og tricks | Kommentarer (8)
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.