Wydaj/debuguj konfiguracje za pomocą Flash + AS3

Niedawno spotkałem się z kłopotliwą sytuacją związaną z kodowaniem Flash, w której musiałem przypadkowo wysłać klientom kompilację, w której nie wszystkie moje flagi i zmienne debugowania były usunięte. (Wysyłał żądania do debugowania zamiast serwera wydania itp.)

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

Jednak Flash nie pozwala na ustawienie różnych konfiguracji kompilacji, a ustawienia kompilacji Actionscript zawierają wiele przełączników ułożonych w taki sposób, że zapomnienie o zaznaczeniu/odznaczeniu czegoś (omg, zapomniałem wyłączyć obsługę debugera!) może się zdarzyć. po prostu się stało, tak jak to miało miejsce w moim przypadku. W każdym razie uważam, że ręczne przeskakiwanie między konfiguracją wydania a konfiguracją debugowania jest łatwe do zepsucia.

Zatem, inni programiści, jakich technik używacie, aby zabezpieczyć przed błędami przeskakiwanie między konfiguracją testową a konfiguracją kompilacji, którą wydajecie swojemu szefowi/klientom/komukolwiek?

Wiem, że prawdopodobnie powinienem zwolnić, ale zdecydowanie wolałbym ustawić coś, w czym mógłbym po prostu przełączyć przełącznik. Właśnie wracam do Flasha po długiej przerwie (Flash MX + trochę 2004).

Aha, i zdaję sobie sprawę z daremności wyłączania obsługi debugowania i ustawiania haseł importu i tak dalej. Moim celem jest po prostu trzymanie dzieciaków zajmujących się skryptami z dala od mojego projektu. Dekompilatory to wszystko przebijają, więc.....

W każdym razie, dzięki!


person Tom Corelis    schedule 28.03.2009    source źródło


Odpowiedzi (4)


Używam klasy środowiska, takiej jak ta:

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

Zaimportuj to do głównej klasy ActionScript i upewnij się, że wszystkie funkcje pomocnicze odwołują się do niego. Na przykład funkcje debugera powinny działać tylko wtedy, gdy MyEnvironment.DEBUG ma wartość true, a funkcje sieciowe powinny wysyłać żądania do MyEnvironment.SERVER.

W mojej konfiguracji zapisałbym to jako MyEnvironment.as. (Oczywiście nazwa klasy byłaby inna w prawdziwym życiu.) Zapisywałbym także kopie jako MyEnvironment.as-debug i MyEnvironment.as-release; ten ostatni miałby inne ustawienia. Następnie, jeśli potrzebuję kompilacji wydania, mój skrypt kompilacji skopiuje MyEnvironment.as-release do MyEnvironment.as (nadpisując oryginał) i ponownie skompiluje. Spowoduje to załadowanie wszystkich ustawień wersji do mojej głównej klasy ActionScript; odwrotnie, jeśli uruchomię skrypt do kompilacji debugowania.

person Ron DeVera    schedule 28.03.2009
comment
OK. Czy w takim razie można kontrolować ustawienia publikowania ActionScript 3 w kodzie? Dziękuję za odpowiedź! - person Tom Corelis; 28.03.2009

Jeśli używasz Flash CS4, możesz użyć stałych konfiguracyjnych. Znajdziesz je w obszarze Ustawienia publikowania|Ustawienia ActionScript3.0...|Konfiguruj stałe

Jeśli dodałeś DEBUG::PLAYER, możesz użyć takiego kodu:

config namespace DEBUG;

//... code here ...

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

Teraz możesz po prostu przełączać stałą między prawdą a fałszem.

person Jacob Poul Richardt    schedule 28.03.2009
comment
Wspaniały! Chociaż wydaje się, że tego rodzaju rzeczy nie są dostępne w CS3, prawda? - person Tom Corelis; 30.03.2009
comment
Tak, jestem pewien, że to nowa funkcja w CS4. Ale nie jestem na 100% pewien. - person Jacob Poul Richardt; 30.03.2009

Dobrym pomysłem jest użycie podpowiedzi wizualnej, gdy jesteś w trybie debugowania. Gdy ustawiona jest flaga DEBUG, wyświetl pole tekstowe z „trybem debugowania” i być może numerem wersji lub czymś podobnym w jednym z rogów ekranu.

Kiedy wykonasz ostatnie testy przed wysłaniem go do klienta, zobaczysz, że zapomniałeś wyłączyć tryb DEBUGOWANIA.

To z pewnością zależy od tego, jak zorganizujesz swój projekt. Jak opisano w innej odpowiedzi, dobrze jest przechowywać flagę w klasie „globalnej” wysokiego poziomu dostępnej przez całą aplikację.

person Sander Versluys    schedule 28.03.2009

Używam flashvara o nazwie „TestingEnvironment”. Podczas uruchamiania aplikacji sprawdzam, czy plik LoaderInfo.parameters ma wartość „true” (literał łańcuchowy, a nie wartość logiczna), a jeśli tak, ustawiam publiczną statyczną zmienną debugMode w instancji klasy globalnego środowiska na wartość true. Wtedy wszystkie moje klasy zobaczą, że znajdujemy się w środowisku testowym, i podejmą odpowiednie działania.

Ponadto, ponieważ używam innego kodu strony do osadzania na potrzeby testowania i produkcji, spodziewam się, że flashvar nigdy nie trafi do osadzonej strony produkcyjnej. A jeśli tak, można je łatwo wyłączyć i nie jest wymagana ponowna kompilacja.

person Community    schedule 06.09.2009