Hej hej Silverlight

Så till stor del har loppet bara börjat. Utgivningen av Flash Professional CS3 (alias Flash Professional 9) gav webbappsutvecklare två val för inriktning på Flash Player 9: Flash Professional och Flex 2. Och varför är Flash Player 9 så viktigt? Eftersom det är en komplett omskrivning som ger snabbare prestanda när den används i kombination med ActionScript 3.

Hej hej Silverlight

Flash Professional CS3

Det kändes konstigt att under den bästa delen av ett år var det enda sättet att skapa Flash Player 9-innehåll i Flex 2 snarare än Flash Professional, och detta hände av två anledningar. Först såg Adobe att prioritet nummer ett utvidgade sin dominans från webbanimering till RIA, så det skapade ett verktyg riktat till utvecklare som är vana vid standarden Eclipse IDE, vilket gör att de kan dra nytta av den extra kraften i den nya Flash Player som snabbt som möjligt, och hoppas därigenom få ett större fotfäste bland dem innan Silverlight släpps.

Det andra skälet till att skjuta upp lanseringen av Flash Professional är att dess gränssnitt är mer komplext än Flex IDE. En av Flashs stora styrkor är det breda användningsområdet som det kan användas till, medan Flex är enbart designat för webbappsutveckling. Men att försöka ta hand om allt från enkla animationer till hela webbappar gav verkliga utmaningar i användargränssnittet. Flash Professional stöder också både AS2 och AS3 (men inte i samma dokument), vilket komplicerar saken ytterligare. Varför stödja båda? Eftersom befintliga Flash-utvecklare, som Adobe förlitar sig på för massor av uppgraderingsintäkter, förmodligen har en stor äldre AS2-kodbas som de inte kommer att ha bråttom att uppgradera till AS3. AS3 är i grunden ett helt nytt språk, och du kan förvänta dig att ändra de flesta raderna i din befintliga kod när du uppgraderar en befintlig app till den.

Hur olika de två språken är blir plågsamt uppenbart för mig när jag konverterar vårt Sudoku-spel. Om du fortfarande utvecklar i AS2 och planerar att porta till AS3 snart, rekommenderar jag att du tillämpar ”bästa praxis”-procedurer från början. En av tjusningarna med att programmera i Flash, för mig, var att det tillät stor kodflexibilitet och var mycket tolerant: AS3 är absolut inte det. För att göra porteringsprocessen så enkel som möjligt är det värt att implementera i AS2 så många av AS3:s krav som möjligt. Säg att jag vill skapa en ny variabel som heter ”användarnamn”: AS2 är mycket glad för mig att helt enkelt börja använda den här variabeln, och skapar den bara när jag tilldelar den ett värde. Bästa praxis är dock att deklarera variabeln och tilldela den en typ innan du använder den, gjort med nyckelordet var så:

var användarnamn:String=new String();

AS3 kräver sådana deklarationer, så det är värt att ta till vana nu även i AS2. Bonusen är att sådan typning gör det möjligt för AS2-debuggern att plocka upp om du försöker tilldela fel typ till den variabeln, vilket är potentiellt användbart. Som ett annat exempel, AS2 är glad att du deklarerar en funktion som inte returnerar något värde, så här:

function assignUsername(newusername) {

För att förbereda det för AS3 bör detta ändras till:

function assignUsername(newusername:String):Void {

som fungerar lika bra i AS2. Omvänt kräver AS3 att ”Void” är gemener ”void”, men annars är den funktionsdefinitionen nu redo att användas.

Trots alla dessa förberedelser visar det sig att uppgraderingen av min Sudoku-app är en kamp, ​​om än en pedagogisk sådan. Detta beror på att så många av AS2-utvecklarens baskonstruktioner har radikalt ändrats eller övergivits. Till exempel har processen att dynamiskt skapa MovieClips förändrats helt – för att vara rättvis är det mycket mer vettigt nu, men att komma åt kapslade MovieClips har blivit svårare. Mitt Sudoku-rutnät består av 81 dynamiskt skapade MovieClips (”cell1” till ”cell81”), var och en innehåller ett par textfält som kallas ”nummer” och ”kandidater”. För att ställa in numret som ska visas i en viss cell kan jag säga:

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *