2009-03-28 31 views
7

Gần đây tôi đã gặp phải tình huống đáng xấu hổ với một số mã Flash mà tôi đã vô tình gửi cho khách hàng một công trình mà không phải tất cả cờ và biến gỡ lỗi của tôi đều không được đặt. (Đã gửi yêu cầu đến gỡ lỗi thay vì máy chủ phát hành, v.v ...)Cấu hình phát hành/gỡ lỗi với Flash + AS3

Một phần của tổ chức mã này là yếu kém; Tôi đã giải quyết điều đó. Tuy nhiên, Flash dường như không cho phép một thiết lập cấu hình xây dựng khác nhau và cài đặt Biên dịch Actionscript lưu trữ nhiều công tắc được sắp xếp theo kiểu như quên kiểm tra/bỏ chọn thứ gì đó (OMG, tôi quên vô hiệu hóa trình gỡ lỗi hỗ trợ!) có thể xảy ra, như nó đã làm với tôi. Trong mọi trường hợp, tôi thấy rằng việc nhảy theo cách thủ công giữa cấu hình phát hành của tôi và cấu hình gỡ lỗi để dễ dàng xoay xở.

Vì vậy, các nhà phát triển khác, bạn sử dụng kỹ thuật nào để chống lỗi giữa cấu hình thử nghiệm và cấu hình xây dựng mà bạn cấp cho sếp/khách hàng của mình/bất kỳ ai?

Tôi biết tôi có lẽ nên chậm lại nhưng tôi rất thích thiết lập thứ gì đó để tôi chỉ có thể lật công tắc. Tôi chỉ nhảy trở lại Flash sau một thời gian gián đoạn dài (Flash MX + một chút năm 2004).

Oh, và tôi nhận thức được sự vô ích của việc vô hiệu hóa hỗ trợ gỡ lỗi và thiết lập mật khẩu nhập khẩu và tất cả những gì, mục tiêu của tôi là chỉ cần giữ script kiddies ra khỏi dự án của tôi. Decompilers trump tất cả những điều đó .....

Dù sao, cảm ơn!

Trả lời

5

tôi sử dụng một lớp môi trường, như thế này:

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

nhập này vào lớp ActionScript chính của bạn, và chắc chắn rằng tất cả các chức năng helper bạn tham khảo nó. Ví dụ: chức năng trình gỡ lỗi của bạn chỉ nên chạy nếu MyEnvironment.DEBUG là đúng và các chức năng mạng của bạn sẽ gửi yêu cầu đến MyEnvironment.SERVER.

Trong thiết lập của tôi, tôi sẽ lưu điều này dưới dạng MyEnvironment.as. (Rõ ràng, tên lớp sẽ khác trong cuộc sống thực.) Tôi cũng lưu các bản sao dưới dạng MyEnvironment.as-debugMyEnvironment.as-release; sau này sẽ có các cài đặt khác nhau. Sau đó, nếu tôi cần bản phát hành bản phát hành, tập lệnh xây dựng của tôi sẽ sao chép MyEnvironment.as-release đến MyEnvironment.as (ghi đè lên bản gốc) và biên dịch lại. Điều đó sẽ tải tất cả các cài đặt phát hành của tôi vào lớp ActionScript chính của tôi; ngược lại nếu tôi chạy tập lệnh cho bản dựng gỡ lỗi.

+0

Ok. Có thể kiểm soát cài đặt xuất bản ActionScript 3 trong mã không? Cảm ơn bạn đã phản hồi! –

3

Ý tưởng hay là sử dụng gợi ý trực quan khi bạn đang ở chế độ gỡ lỗi. Khi cờ DEBUG được thiết lập, hiển thị một TextField với 'chế độ gỡ lỗi' và có thể là số phiên bản, hoặc một cái gì đó như thế, ở một trong các góc của màn hình.

Khi bạn làm bài kiểm tra cuối cùng trước khi gửi cho khách hàng, bạn sẽ thấy bạn đã quên tắt chế độ DEBUG.

Nó chắc chắn phụ thuộc vào cách bạn cấu trúc dự án của mình. Như được mô tả trong một câu trả lời khác, tốt nhất là lưu trữ cờ trong một lớp 'toàn cầu' cấp cao có thể truy cập thông qua toàn bộ ứng dụng.

9

Nếu bạn đang sử dụng Flash CS4, bạn có thể sử dụng hằng số cấu hình. Bạn sẽ tìm thấy chúng trong Cài đặt Xuất bản | Cài đặt ActionScript3.0 ...| Config Constants

Nếu bạn thêm DEBUG :: PLAYER sau đó bạn có thể sử dụng mã như thế này:

config namespace DEBUG; 

//... code here ... 

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

Bây giờ bạn chỉ có thể chuyển đổi liên tục giữa đúng và sai.

+0

Tuyệt vời! Mặc dù, có vẻ như thứ này không có trong CS3, đúng không? –

+0

Vâng, tôi chắc chắn đó là một tính năng mới trong CS4. Nhưng tôi không chắc chắn 100%. –

0

Tôi sử dụng một flashvar được gọi là "TestingEnvironment". Khi bắt đầu ứng dụng, tôi kiểm tra trong loaderInfo.parameters để xem nếu nó được đặt thành 'true' (một chuỗi ký tự, không phải là boolean), và nếu có, tôi thiết lập một static debugMode tĩnh trên môi trường lớp toàn cục thành true. Sau đó tất cả các lớp học của tôi có thể thấy rằng chúng tôi đang ở trong một môi trường thử nghiệm, và sẽ hành động phù hợp.

Ngoài ra, vì tôi sử dụng mã trang khác nhau để nhúng để thử nghiệm và sản xuất, tôi hy vọng Flashvar sẽ không bao giờ kết thúc trong nhúng trang sản xuất. Và nếu có, thật đơn giản để tắt, không cần biên dịch lại.

Các vấn đề liên quan