FlashVars med ActionScript 3

Mycket har ändrats i AS3 jämnfört med de äldre varianterna. Att ta emot variabler så här från den embeddade koden är sig inte likt.

<param name="movie" value="flashmovie.swf?theVariable=value" />

De brukade finns i _level0 och det var bara att använda dem direkt.

Nu måste man skriva enligt följande som Peter deHaan och andra förklarar:

var importedFlashVar = root.loaderInfo.parameters.theVariable;

By Jesper Lind

Streama Flash video på IIS6 - glöm inte MIME-typ

Har testa lite med att streama Flash video med FLVPlayBack-komponenten och det fungerar väldigt bra. För att konvertera andra format till .flv så kan man använda Adobe Flash CS3 Video Encoder eller importera direkt till Flash CS3.

När jag sedan skulle köra igång videospelare till webbhotellet som sajten i fråga ligger på blev det lite problematiskt. Videon ville inte spela alls.

Efter ett tag kom jag på att IIS6 inte har den rätta MIME-typen tillagd som standard och webbhotellet inte lagt till denna. Som en nödlösning fick jag lägga själva .flv-filerna på en server som jag hade kontroll över, fixa lite crossdomain.xml-"magik" och lägga till MIME-typen på denna externa server.

Adobe har en bra beskrivning till hur man lägger till rätt MIME-typ för .flv på IIS6 och de rekommenderar att man mappar .flv-ändelsen mot "flv-application/octet-stream". Jag har även testat med "video/x-flv" som också fungerar bra.

By Jesper Lind

Datahand - det ergonomiska tangentbordet som gör musen överflödig

http://www.codeodyssey.se/upload/resource/blog/datahand.jpg

Att använda kortkommandon i större utsträckning är ju en bra början för att ta vara på sina händer. Det som sliter mycket är när man hela tiden förflyttar händerna mellan tangetbordet och musen.

Om man kunde slippa musen helt och hållet vore det perfekt. Genom CodeBetter fick jag nys om ett väldigt annolunda tangentbord som verkar väldigt coolt. Datahand heter produkten och här finns det små fördjupningar för varje finger som man vilar händerna i. Varje finger har 5 tryckkänsliga knappar och man skriver alltså genom att endast röra på fingertopparna. Det finns även inbyggd funktion för mus så man behöver inte en vanlig längre.

Tydligen tar det runt 6 månader att lära sig att skriva i samma takt som på ett traditionellt tangentbord men sedan bör man även kunna skriva snabbare eftersom rörelserna är mindre.

Tyvärr är det ganska dyrt på runt 4795 SEK men skulle vara kul att prova på det.

By Jesper Lind

Jakten på de perfekta knapparna

Att göra knappar som är snygga och fungerar bra är inte så lätt i nuvarande versionen av HTML.

Använda vanliga bilder

Man kan ju göra knapparna som vanliga bilder i t ex Photoshop, men nackdelen är att texten inte går att förstora eller förminska i webbläsarna. Villl man byta färg på dem eller ändra utseendet är det bara till att göra om dem igen.

Input submit

Eller så kan man göra input-varianten men dessa är nästan omöjliga att styla om med CSS. Och standardutseendet varierar ju i de olika webbläsarna vilket inte är så roligt om man vill att designen ska se samma ut oberoende av system.

HTML button

Button-taggen är lite trevligare eftersom den går att ändra design på och även lägga egna ikoner eller extra markup inom. ParticleTree har en bra genomgång av detta.

Filament Group testar vidare och visar upp en knapp som använder sliding-doors tekniken.

En stor nackdel med Button är dock att IE inte hanterar dem så bra. IE tar emot innerHTML istället för value när man postar formuläret.

Länkar som ser ut som knappar

På denna bloggen använder vi länkar som knappar eftersom då får man större frihet på utseendet. De är dock inte speciellt fancy.

Roger Johansson har gjort ett riktigt ambitiöst försök att göra om länkar till knappar med hjälp av extra markup och giffar. Ser snyggt ut men lite väl mycket extra kod.

Sen är ju faktiskt länkar till för navigation och inte för att posta formulär så denna lösningen brister lite ut semantisk synpunkt.

Vad är bäst?

Valet är inte självklart utan man får se vad som passar bäst för varje enskilt projekt. Ibland kanske de vanliga standardknapprna duger eller i andra fall kan vanliga bilder vara det enda rätta.

Skönt är i alla fall att det finns så många duktiga utvecklare där ute som gör sitt bästa för att hitta den där perfekta knappen.

By Jesper Lind

Snygga knappar med Photoshop

http://www.codeodyssey.se/upload/resource/blog/knappar-web-2-0.png

Ett suveränt tips från Deziner Folio för den som vill designa snygga knappar med Photoshop. På länken bjuds på färdiga stilar som man kan ladda hem och använda i sina projekt. Se några exempel här ovan som tog mig typ 3 minuter att fixa ihop.

By Jesper Lind

Validera kreditkortsnummer med Luhn's algoritm

Jag har under några år använt en funktion för att validera kreditkort på diverse projekt. Hittade den som exempel i någon bok som jag glömt namnet på.

Blev lite nyfiken på ursprunget och genom en sökning på Google, hittade jag exakt samma exempel i en artikel på The Code Project. Där finns även ytterligare användbar kod för hur man kan kontrollera vilken typ av kreditkort ett kortnummer hör till.

Man får även reda på att funktionen jag pratade om, använder Luhn's algoritm utvecklad av Hans Peter Luhn år 1954.

Implementeringen för att kontrollera kreditkortsnummer ser ut så här:

private static bool ValidateCardNumber(string cardNumber)
{
try
{
// Array to contain individual numbers
System.Collections.ArrayList CheckNumbers = new ArrayList();
// So, get length of card
int CardLength = cardNumber.Length;

// Double the value of alternate digits, starting with the second digit
// from the right, i.e. back to front.
// Loop through starting at the end
for (int i = CardLength - 2; i >= 0; i = i - 2)
{
// Now read the contents at each index, this
// can then be stored as an array of integers

// Double the number returned
CheckNumbers.Add(Int32.Parse(cardNumber[i].ToString()) * 2);
}

int CheckSum = 0; // Will hold the total sum of all checksum digits

// Second stage, add separate digits of all products
for (int iCount = 0; iCount <= CheckNumbers.Count - 1; iCount++)
{
int _count = 0; // will hold the sum of the digits

// determine if current number has more than one digit
if ((int)CheckNumbers[iCount] > 9)
{
int _numLength = ((int)CheckNumbers[iCount]).ToString().Length;
// add count to each digit
for (int x = 0; x < _numLength; x++)
{
_count = _count + Int32.Parse(
((int)CheckNumbers[iCount]).ToString()[x].ToString());
}
}
else
{
// single digit, just add it by itself
_count = (int)CheckNumbers[iCount];
}
CheckSum = CheckSum + _count; // add sum to the total sum
}
// Stage 3, add the unaffected digits
// Add all the digits that we didn't double still starting from the
// right but this time we'll start from the rightmost number with
// alternating digits
int OriginalSum = 0;
for (int y = CardLength - 1; y >= 0; y = y - 2)
{
OriginalSum = OriginalSum + Int32.Parse(cardNumber[y].ToString());
}

// Perform the final calculation, if the sum Mod 10 results in 0 then
// it's valid, otherwise its false.
return (((OriginalSum + CheckSum) % 10) == 0);
}
catch
{
return false;
}
}
By Jesper Lind