2009-03-28 10 views
7

Niedawno wpadłem w żenującą sytuację z kodowaniem Flash, w którym musiałem przypadkowo wysłać klientom kompilację, w której nie wszystkie moje flagi i zmienne debugowania były rozbrojone. (Wysyłał żądania do debugowania zamiast do serwera wydań, itp.).Konfiguracje wydania/debugowania z Flash + AS3

Częścią tego była zła organizacja kodu; Rozwiązałem to.

Jednak Flash nie zezwala na ustawianie różnych konfiguracji kompilacji, a ustawienia Actionscript Compile zawierają wiele przełączników ułożonych w taki sposób, że zapominają zaznaczyć/odznaczyć coś (OMG, zapomniałem wyłączyć debuggera wsparcie!) może się tak właśnie stać, tak jak ze mną. W każdym razie uważam, że ręczne przeskakiwanie pomiędzy moją konfiguracją wydania i konfiguracją debugowania jest łatwe do zerwania.

A zatem, inni programiści, jakich technik używasz do sprawdzania błędów pomiędzy konfiguracją testową, a konfiguracją kompilacji, którą wydajesz swojemu szefowi/klientom/komukolwiek?

Wiem, że powinienem zwolnić, ale wolałbym ustawić coś tam, gdzie mógłbym po prostu przełączyć przełącznik. Właśnie wracam do Flash po długiej przerwie (Flash MX + nieco 2004).

Aha, i jestem świadomy bezsensowności wyłączania obsługi debugowania i ustawiania haseł importowania, a wszystko to, moim celem jest po prostu utrzymanie skryptu kiddies z mojego projektu. Dekompilatory przebijają to wszystko, więc ...

Anyways, Thanks!

Odpowiedz

5

używam klasą środowiskową, tak:

public class MyEnvironment { 
    public static const DEBUG:Boolean = true; 
    public static const SERVER:String = 'localhost'; 
    // More here 
} 

zaimportować do swojego głównego klasy ActionScript i upewnij się wszystkich swoich funkcji pomocniczych odwoływać. Na przykład, funkcje debuggera powinny działać tylko, jeśli MyEnvironment.DEBUG ma wartość true, a funkcje sieciowe powinny wysyłać żądania do MyEnvironment.SERVER.

W moim setupie zapisałbym to jako MyEnvironment.as. (Oczywiście, nazwa klasy byłaby inna w rzeczywistości.) Zapisałbym również kopie jako MyEnvironment.as-debug i MyEnvironment.as-release; ten drugi miałby inne ustawienia. Następnie, jeśli potrzebuję kompilacji wydania, mój skrypt kompilacji skopiowałby MyEnvironment.as-release do MyEnvironment.as (nadpisanie oryginału) i ponownie skompilował. To spowoduje załadowanie wszystkich moich ustawień wersji do mojej głównej klasy ActionScript; naprzeciwko, jeśli uruchomię skrypt dla kompilacji debugowania.

+0

Ok. Czy możliwe jest kontrolowanie ustawień publikowania ActionScript 3 w kodzie? Dziękuję za odpowiedź! –

3

Dobrym pomysłem jest użycie wizualnej wskazówki w trybie debugowania. Po ustawieniu flagi DEBUG wyświetl pole TextField z "trybem debugowania" i być może numerem wersji lub czymś podobnym w jednym z rogów ekranu.

Kiedy przeprowadzasz testy końcowe przed wysłaniem go do klienta, zobaczysz, że zapomniałeś wyłączyć tryb DEBUG.

Z pewnością zależy to od struktury projektu. Jak opisano w innej odpowiedzi, dobrze jest przechowywać flagę w klasie "globalnej" wysokiego poziomu dostępnej przez całą aplikację.

9

Jeśli używasz Flash CS4, możesz użyć stałych config. Znajdziesz je w Ustawieniach publikowania | Ustawienia ActionScript3.0 ...| Config Stałe

Jeśli dodano :: DEBUG PLAYER można użyć kodu:

config namespace DEBUG; 

//... code here ... 

DEBUG::PLAYER 
{ 
    trace("Player state here"); 
} 

Teraz można po prostu przełączyć stała między prawdą i fałszem.

+0

Awesome! Chociaż wydaje się, że tego typu rzeczy nie są dostępne w CS3, prawda? –

+0

Tak, jestem pewien, że to nowa funkcja w CS4. Ale nie jestem w 100% pewny. –

0

Używam flashvar o nazwie "TestingEnvironment". Po uruchomieniu aplikacji sprawdzam parametry loaderInfo.parameters, aby sprawdzić, czy jest ustawiony na "true" (literał łańcuchowy, a nie boolean), a jeśli tak, ustawię public static var debugMode na globalnej instancji klasy Environment na true. Następnie wszystkie moje zajęcia mogą zobaczyć, że jesteśmy w środowisku testowym i będą działać zgodnie z nimi.

Ponieważ używam innego kodu strony do osadzenia w celu testowania i produkcji, oczekuję, że flashvar nigdy nie znajdzie się na stronie produkcyjnej. A jeśli tak, to jest łatwe do wyłączenia, nie potrzeba rekompilacji.

Powiązane problemy