2010-10-06 8 views
7

Ho un gioco che ho scritto in Actionscript 3 Sto cercando di portarlo su iOS. Il gioco ha circa 9k LOC distribuiti su 150 classi, la maggior parte delle classi sono per modelli di dati, gestione dello stato e generazione di livello che dovrebbero essere facili da portare.Conversione sintassi Actionscript nell'obiettivo C

Tuttavia, il pensiero di ridefinire manualmente la sintassi attraverso tutti questi file non è troppo allettante. Ci sono strumenti che possono aiutarmi ad accelerare questo processo?

Non sto cercando uno strumento magico qui, né sto cercando un cross-compilatore, voglio solo un aiuto per la conversione dei miei file sorgente.

+0

L'ho preso l'esportazione CS5 per lo strumento iPhone non è adatto? – Allan

+0

L'ho provato, ma poiché * è * un compilatore incrociato con tutto ciò che comporta, quindi non è esattamente scattante in termini di prestazioni. – grapefrukt

+0

nella mia esperienza, iOS 4 non è quello che chiamerei snappy per iniziare su qualsiasi cosa tranne l'ultimo hardware. personalmente, ho dovuto eseguire il downgrade alla versione precedente con il mio iPod touch 2G, e questo era solo per utilizzare le applicazioni di serie. hai testato il progetto iPhone Packager su un nuovo dispositivo? so che non è davvero una soluzione ideale dal momento che molte persone hanno hardware vecchio, ma sono curioso più che altro sulle prestazioni di iPhone Packager. – TheDarkIn1978

risposta

1

Non so di uno strumento, ma questo è il modo in cui proverei ad attaccare il tuo problema se c'è davvero molto (semplice) codice da convertire. Sono sicuro che il mio suggerimento non sia così utile su parti del codice che sono molto specifiche del flash (tutte le cose di DisplayObject?) E che non sono utili su molte delle tue logiche. Ma sarebbe divertente da costruire! :-)

parziale conversione automatica dovrebbe essere possibile, soprattutto se gli oggetti sono solo 'contenitori di dati', guardare fuori per portare troppa AS3-linguaggio verso Objective-C, però, potrebbe non essere sempre una buona in forma.

A meno che non si voglia creare il proprio (semi) parser per as3, è necessario un parser, apparentemente lo FlexPMD ne ha uno (mai usato) e probabilmente ce ne sono altri.

Dopo aver messo le mani su un parser è necessario trovare un modo per suggerire al sistema quali parti potrebbero essere convertite automaticamente. Potresti provare ad aggiungere regole allo script parser/generatore per il caso generale. Per casi più specifici, utilizzerei i metadati personalizzati sulla classe/proprietà/metodo effettivo, supponendo che un vero parser as3 li analizzerebbe correttamente.

Ora parte del tuo lavoro passerà dai file di conversione manuale ai file di annotazione manuale, ma potrebbe andar bene per te.

Chiedi al parser di analizzare le classi e definire le azioni in base ai metadati che determineranno il tipo di classe obiettivo-c da generare. Se riesci a farlo funzionare potresti almeno ottenere tutte le tue classi, le loro proprietà semplici e le firme dei metodi (ottenere il corpo dei metodi convertiti potrebbe essere un po 'troppo chiedere ma potresti includerlo come commento così avresti una buona referenza durante la traduzione a mano).

PS: se lo fai in un processo a senso unico, assicurati di non doverlo rigenerare più tardi, sarebbe un problema se scopri che stai modificando il codice generato e in qualche modo devi ri-generare tutte quelle classi - questo significherebbe che dovrai rifare tutto il tuo duro lavoro!

0

Scopri il quadro Sparrow. Si presume che sia stato progettato pensando agli sviluppatori di Actionscript, ricreando classi che emulino l'elenco di visualizzazione e cose del genere. Dovrai immergerti in qualche "rejiggering" di sicuro, qualunque cosa tu faccia se non vuoi usare il packager CS5.

http://www.sparrow-framework.org/

0

anche se esiste qualche soluzione, nota che logica architettonica è diversa, e molti altri dettagli più. Ad ogni modo, anche se è possibile, avrai uno strano ibrido. Sto tornando da WWDC2012 e il messaggio è (come sempre ..) prestazioni e grande esperienza utente.

Quindi è necessario riscrivere utilizzando un modello di programmazione diverso.